Posté le 15/07/2017 13:54
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 103 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 01/03/2023 19:12 | #
Bonjour, je vais sûrement embêter avec ma question un peu débile mais bon... J'ai installé tout ce qu'il faut pour coder en C (normalement) mais je ne trouve pas comment lancer Gint. Quelqu'un pourrait-il m'aider ?
Citer : Posté le 01/03/2023 19:18 | #
Hello, gint en lui-même est une bibliothèque donc ça s'utilise avec le fxSDK. Les options du CMakeLists.txt intègrent gint automatiquement à ton programme donc dès que tu compiles avec fxsdk build-fx ou fxsdk build-cg tu utilises gint
Citer : Posté le 01/03/2023 19:24 | #
D'accord merci beaucoup Lephenixnoir. D'ailleurs au passage tes tutoriels sur Gint et GiteaPC sont incroyables !
Citer : Posté le 29/04/2023 10:47 | #
Hello!
En Exécutant un petit Add-In de ma création j'ai eu droit à une erreur TBL. Il me semble avoir vu quelque chose là dessus dans les pages du forum dédiées à Gint et à la programmation en C sur CASIO mais je ne retrouve plus.
J'ai exécuté le programme sur une g90+e.
Voici le programme:
#include <gint/keyboard.h>
#include <math.h>
#define TAILLE 11
int main(void)
{
int i=0; //indice dans la chaine de texte
char texte[TAILLE] = "__________"; //on initialise un tableau qui contiendra le texte saisi par l'utilisateur de taille 10 pour commencer
char digit = 0; //digit donné par la touche pressee
int nombre = 0; //nombre final (texte ne sert que pour l'affichage)
key_event_t k; //touche pressee
k.key = 21;
//entête de la fenetre de programme
dclear(C_WHITE);
dtext(1, 1, C_BLACK, "Programme pour saisie de texte");
dupdate();
while(getkey().key == KEY_EXE){}
while (i<TAILLE && (k.key != KEY_MENU && k.key != KEY_EXE))
{
//tant qu'on est pas au bout de la chaine et qu'on ne presse pas la touche [MENU] ou [EXE] on fait:
dprint(1, 40, C_BLACK, "%s", texte);
dupdate();
k = getkey(); //on récupère la touche pressee
digit = keycode_digit(k.key); //on converti en l'entier correspondant a la touche pressee
if(digit != -1)
{
//la touche pressee est un chiffre
texte[i] = (digit+48); //on passe en char et pour avoir les codes caractères en ascii on ajoute 48 (code ascii du 0)
nombre += digit*pow(10, (TAILLE-1)-i);
i+=1; //on décale l'indice du digit ecrit
}
}
return 1;
}
D'ailleurs si commentaires vous voulez faire sur le code n'hésitez pas, vu que j'apprends tout seul ce serait le bienvenu !
PS: j'ai une très petite expérience sur gint (1 jour )
-Planétarium 2
Citer : Posté le 29/04/2023 11:03 | #
Ton programme se termine surtout instantanément car tu ne rentres jamais dans la boucle while !
Attention getkey() c'est pas comme en Basic, ça attend. Du coup cette ligne elle met le programme en pause jusqu'à ce que l'utilisateur appuie sur une touche qui n'est pas EXE. Si l'utilisateur n'appuie sur rien, getkey() attend patiemment.
Puisque tu initialises k.key à KEY_EXE, la condition est fausse dès le premier tour, donc tu ne rentres jamais dans la boucle.
Tu peux faire plus simple avec un truc comme
{
//tant qu'on est pas au bout de la chaine et qu'on ne presse pas la touche [MENU] ou [EXE] on fait:
dprint(1, 40, C_BLACK, "%s", texte);
dupdate();
int key = getkey().key; //on récupère la touche pressee
digit = keycode_digit(key); //on converti en l'entier correspondant a la touche pressee
if(key == KEY_EXIT)
break;
if(digit != -1) /* ... */
}
(Et attention à "la touche pressée", il peut ne pas y en avoir, il peut y en avoir plusieurs, etc.)
Quelques détails :
Citer : Posté le 29/04/2023 12:16 | #
Merci pour ta réponse Lephe !
Attention getkey() c'est pas comme en Basic, ça attend. Du coup cette ligne elle met le programme en pause jusqu'à ce que l'utilisateur appuie sur une touche qui n'est pas EXE. Si l'utilisateur n'appuie sur rien, getkey() attend patiemment.
Oui en effet le programme fonctionnait jusqu'à ce que je veuille ajouter un effet sur l'appui de la touche [exe]
Je récupère ta proposition de code du coup !
(Et attention à "la touche pressée", il peut ne pas y en avoir, il peut y en avoir plusieurs, etc.)
Oui oui, mais même lorsque rien n'est pressé la fonction keycode_digit() renvoie -1 qui est traité du coup comme les touches autres que numériques. C'est bien ce que je souhaite.
Quelques détails :
k.key = 21 → k.key = KEY_EXE : utilise les constantes explicites
digit+48 → digit+'0' : pareil
Ne t'embête pas à calculer le nombre au fur et à mesure, utilise atoi() une fois la saisie terminée
pow() est une fonction sur les nombres flottants (ie. nombres réels) pas sur les entiers, pas appropriée ici
Mieux vaut dessiner une ligne avec dline() que mettre des underscores dans ta chaîne
Je modifie tout ça merci beaucoup !
-Planétarium 2
Citer : Posté le 29/04/2023 12:20 | #
Juste pour éviter toute confusion : tu n'appelles jamais keycode_digit() avec "rien de pressé". Ta boucle elle fait un tour chaque fois que l'utilisateur appuie sur une touche et 99% du temps d'exécution est passé à attendre dans getkey(). Ta variable key elle représente donc toujours un numéro de touche valide.
Citer : Posté le 29/04/2023 12:25 | #
Juste pour éviter toute confusion : tu n'appelles jamais keycode_digit() avec "rien de pressé". Ta boucle elle fait un tour chaque fois que l'utilisateur appuie sur une touche et 99% du temps d'exécution est passé à attendre dans getkey(). Ta variable key elle représente donc toujours un numéro de touche valide.
Ah oui elle attend je suis bête.
Mais du coup une TBL error cela correspond à quoi ?
-Planétarium 2
Citer : Posté le 29/04/2023 14:40 | #
Une erreur TLB c'est un des résultats que tu peux obtenir quand tu accèdes à la mémoire avec un pointeur invalide. Je ne saurais pas trop te dire ce qui la causait dans ton code ; quand je testais moi ça revenait juste au menu.
Citer : Posté le 07/05/2023 08:34 | #
J'essaye de recompiler Windmill pour G90+ (je me doute qu'il doit y avoir des trucs a changer mais c'est la première étape) et je me prends des erreurs (plus long que n'est la mémoire de la ligne de commande) "template with C linkage" mais dans des fichiers qui sont dans /home/[moi]/.local/share/fxsdk/systoot/sh3eb-elf/include/c++/11.1.0/pstl/ et 11.1.0/bits (il y en a sans doute plus mais c'est ceux que j'ai vus)
Qu'est ce que je pourrais faire pour éviter que ça arrive ?
Edit : Désolé je me suis rendu compte que c'est pas vraiment le bon topic, je croyais que c'était le topic gint général
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 07/05/2023 09:15 | #
T'as compilé la version originale de Ninestars ? On a ce fork fxSDK avec quelques bugfixes qui passe bien avec la lib C++ du fxSDK. Sinon je veux bien plus de détails sur la version que tu compiles, la commande à chaque fois etc.
Citer : Posté le 07/05/2023 09:23 | #
J'ai directement récupéré celle sur la page, et juste modifié la makefile et copié "assets-fx" dans "assets-cg" pour avoir les mêmes assets, et avec la commande build-cg, j'ai essayé avec build-cg -k mais ça a le même résultat
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 07/05/2023 09:36 | #
Arf, la version originale n'était pas vraiment compatible avec gint. J'avais déjà passé un bon moment à la porter, je te suggère de tenter au moins une fois avec le fork.
Citer : Posté le 07/05/2023 09:46 | #
Je confirme ça marche beacoup mieux, mais ça marche toujours pas
J'ai refait la même manip de changer la (le ?) makefile, et j'ai un problème avec mais c'est juste la makefile donc je pense que je peux le régler
(pour indication ça donne :
make[2]: *** No rule to make target '../assets-cg/icon-uns.png', needed by 'addin'.
make[2]: *** No rule to make target '../assets-cg/icon-sel.png', needed by 'addin'.
make[2]: Target 'CMakeFiles/addin.dir/build' not remade because of errors.
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/addin.dir/all] Error 2
make[1]: Target 'all' not remade because of errors.
make: *** [Makefile:91: all] Error 2
make: Target 'default_target' not remade because of errors. )
Edit : c'est bon ça a compilé, c'est parceque j'avais remplacé les fichiers de assets-cg par ceux de assets-fx au lieu de copier dedans, donc il manquait les icones.
Je fais un nouveau topic ou pas ?
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 07/05/2023 10:10 | #
Cool. Si tu planifies de jouer avec Windmill spécifiquement je suggère le topic de Windmill.
Citer : Posté le 07/05/2023 10:13 | #
Ok, je pensais faire un port vers G90+ parceque en ce moment c'est suboptimal, plutôt que juste "jouer avec", et peut-être même en faire un jeu mais pas tout de suite parceque j'en comprends moins de la moitié en toute honneteté, et en plus ça marche quasiment pas en premier lieu
Caltos : G35+EII, G90+E (briquée )
Citer : Posté le 14/09/2023 22:18 | #
Hello à tous,
Je me remet à (essayer de) coder des add-ins pour ma Graph 90+e, et cette fois-ci avec un véritable Ubuntu d'installé sur mon PC (j'avais commencé avec WSL), et je souhaite écrire mon code avec VSCodium. Mais je rencontre des problèmes avec l'extension C/C++ qui ne détecte pas bien les headers de gint. J'ai lu la commande help de giteapc, et j'ai trouvé le dossier d'installation des repo, que j'ai en suite ajouté à la liste des include paths de l'extension C/C++ de VSCodium, suite à quoi les soulignages d'erreur n'apparaissent plus sur les #include, mais maintenant j'ai d'autres soulignages d'erreurs sur les constantes C_WHITE et C_BLACK contenues dans le fichier main.c fourni avec l'exemple. Il y a donc un problème avec la détection de ces constantes par l'extension. Mon code compile parfaitement, ce n'est pas une véritable erreur, mais j'aimerais bien avoir accès à l'auto-complétion et tous les trucs stylés comme ça pour coder plus efficacement. Je suis un débutant en C, donc je connais pas trop les trucs.
Merci d'avance pour toute aide.
- Java
- Basic Casio
- C
- OCaml
J'ai une Casio Graph 90+E.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique :
Rien ne fonctionne... et personne ne sait pourquoi ! »
- Albert Einstein
Remerciemembres
Citer : Posté le 14/09/2023 22:27 | #
Bonne question ! Comme il y a un seul dossier pour tous les includes, je pense que les en-têtes sont bien détectés.
La particularité de C_WHITE et C_BLACK c'est que ce sont des constantes définies par <gint/display.h>, qui a secrètement deux versions, une pour Graph mono et une pour Graph 90+E. La bonne version est choisie automatiquement selon si la macro FX9860G ou la macro FXCG50 est définie.
Comme cette macro est définie par le système de compilation, ton IDE ne doit pas le savoir, et il doit lire les en-têtes sans définir la macro, auquel cas <gint/display.h> est quasiment vide. Du coup il faudrait voir si tu peux configurer l'IDE pour qu'il active la macro FXCG50 par défaut. Peut-être les options du projet ou quelque chose du type.
Citer : Posté le 14/09/2023 22:53 | #
Ah ok je vais voir de ce côté-là et je vous (flemme de pas être poli) redirais, mais demain, je dois me coucher là (le someil c'est important même en prépa ) ! Merci !
- Java
- Basic Casio
- C
- OCaml
J'ai une Casio Graph 90+E.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique :
Rien ne fonctionne... et personne ne sait pourquoi ! »
- Albert Einstein
Remerciemembres
Citer : Posté le 15/09/2023 16:14 | #
Okay j'ai cherché un peu sur internet et j'ai trouvé comment faire : on peut ajouter des définitions de préprocesseur que IntelliSense utilise dans les configurations de l'extension C/C++ de VSCodium. J'ai donc ajouté FX9860G et FXCG50 ici et ça a parfaitement fonctionné ! Merci beaucoup !
- Java
- Basic Casio
- C
- OCaml
J'ai une Casio Graph 90+E.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique :
Rien ne fonctionne... et personne ne sait pourquoi ! »
- Albert Einstein
Remerciemembres
Citer : Posté le 15/09/2023 17:29 | #
Excellent, enjoy ! o/