Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Tutoriels d'utilisation de gint (commentaires)
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

Tutoriels d'utilisation de gint (commentaires)

Posté le 15/07/2017 13:54

Les tutoriels d'utilisation de gint sont sur ce topic.

Pour garder les tutoriels ensemble dans les posts du topic d'origine (et surtout pas créer un topic par tuto...), je vous propose de poster vos questions/commentaires/etc ici. Merci !


Précédente 1, 2, 3 ··· 10 ··· 20, 21, 22, 23, 24, 25, 26 Suivante
Dimartino Hors ligne Maître du Puzzle Points: 310 Défis: 2 Message

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 ?
Mon projet du moment : Memen'Casio
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dimartino Hors ligne Maître du Puzzle Points: 310 Défis: 2 Message

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 !
Mon projet du moment : Memen'Casio
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

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/display.h>
#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 )
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

Citer : Posté le 29/04/2023 11:03 | #


Ton programme se termine surtout instantanément car tu ne rentres jamais dans la boucle while !

     while(getkey().key == KEY_EXE){}

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.

    while (i<TAILLE && (k.key != KEY_MENU && k.key != KEY_EXE))

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

    while (i<TAILLE)
    {
        //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 :
  • k.key = 21k.key = KEY_EXE : utilise les constantes explicites
  • digit+48digit+'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

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 29/04/2023 12:16 | #


Merci pour ta réponse Lephe !

Lephenixnoir a écrit :
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 !

Lephenixnoir a écrit :
(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.

Lephenixnoir a écrit :
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 !
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

Citer : Posté le 29/04/2023 12:20 | #


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.

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 29/04/2023 12:25 | #


Lephenixnoir a écrit :
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 ?
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

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
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

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
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

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 ?
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 520 Défis: 9 Message

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
Pc master race - Apréciateur de Noctua moyen
Caltos : G90+E, FX-92+ (x2)
Zecter Hors ligne Membre Points: 162 Défis: 0 Message

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.
Oui.
Langages appris (pas tous complètement)
Cliquer pour enrouler
- Python
- Java
- Basic Casio
- C

J'ai une Casio Graph 90+E.
Ma citation favorite
Cliquer pour enrouler
« La théorie, c'est quand on sait tout et que rien ne fonctionne.
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
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zecter Hors ligne Membre Points: 162 Défis: 0 Message

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 !
Oui.
Langages appris (pas tous complètement)
Cliquer pour enrouler
- Python
- Java
- Basic Casio
- C

J'ai une Casio Graph 90+E.
Ma citation favorite
Cliquer pour enrouler
« La théorie, c'est quand on sait tout et que rien ne fonctionne.
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
Zecter Hors ligne Membre Points: 162 Défis: 0 Message

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 !
Oui.
Langages appris (pas tous complètement)
Cliquer pour enrouler
- Python
- Java
- Basic Casio
- C

J'ai une Casio Graph 90+E.
Ma citation favorite
Cliquer pour enrouler
« La théorie, c'est quand on sait tout et que rien ne fonctionne.
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
Lephenixnoir Hors ligne Administrateur Points: 24234 Défis: 170 Message

Citer : Posté le 15/09/2023 17:29 | #


Excellent, enjoy ! o/
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 10 ··· 20, 21, 22, 23, 24, 25, 26 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 167 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