Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Aprentissage du C (Casio)[encore une fois]
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Aprentissage du C (Casio)[encore une fois]

Posté le 04/06/2014 21:48

Comme Darkysun et Eltoredo je me pose pas mal même énormément de questions pour programmer en C sur Casio.
Déjà (première question ) je ne comprend pas tout le code mis par défaut sur le SDK:
J'ai enlevé les commentaires mais je les ai très rapidement remplacés.
J'espère qu'il y aura un âme charitable pour m'aider .
[brown]#include [gray]"fxlib.h"[/gray][/brown]

[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum) [green]//Que veut dire exactement cette ligne?[/green]
{
    [purple]unsigned int[/purple] key;

    Bdisp_AllClr_DDVRAM(); [green]//Je sais que ça efface l[gray]'écran mais j'ai compris qu'[/gray]il y avait plusieur couche (une pré-chargée?)[/green]

[green]//Ici ça va :) [/green]
    locate(1,[maroon]4[/maroon]);
    Print((unsigned char*)[gray]"This application is"[/gray]);
    locate(1,[maroon]5[/maroon]);
    Print((unsigned char*)[gray]" sample Add-In."[/gray]);

[green]//Une boucle infinie?[/green]
    [b][blue]while[/blue][/b](1){
        GetKey(&key); [green]//à quoi correspond ce Getkey[/green]
    }

    [b][blue]return[/blue][/b] 1;
}

[green]//A partir de là je suis complétement perdu[/green]
[brown]#pragma section _BR_Size[/brown]
unsigned long BR_Size;
[brown]#pragma section[/brown]


[brown]#pragma section _TOP[/brown]

[purple]int[/purple] InitializeSystem(int isAppli, unsigned short OptionNum)
{
    [b][blue]return[/blue][/b] INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

[brown]#pragma section[/brown]

Je m'arrête la pour aujourd'hui
Merci d'avance pour vos réponses


1, 2 Suivante
Lephenixnoir Hors ligne Administrateur Points: 18384 Défis: 142 Message

Citer : Posté le 04/06/2014 22:03 | #


AddIn_main() est une fonction. C'est une sorte de routine, de procédure. AddIn_main() est la fonction principale, c'est donc celle qui est exécutée lorsque l'application est lancée.
Pour Bdisp_AllClr_DDVRAM(), c'est simplement du double buffering. Tu ne rafraîchis par l'écran tant que le dessin n'est pas terminé, donc tu évites le scintillement et les images en construction.
GetKey() est une autre fonction. C'est une fonction qui attend que l'utilisateur appuie sur une touche, et une fois que c'est fait, elle met le numéro de la touche dans la variable key. Tu vas devoir t'en servir souvent par la suite.
Pour la fin, retiens simplement que tout ce qui commence par un '#' est une directive de pré-compilation. Tu te servira principalement de "#include" et "#define". Celles qui sont ici sont indispensables à la calculatrice ; il ne faut pas les enlever mais tu peux les ignorer.
Eltoredo Hors ligne Modérateur Points: 4297 Défis: 35 Message

Citer : Posté le 04/06/2014 22:06 | #


Silaxe, tu devrais te rendre teamspeak pour qu'on t'explique plus en détail

Et les Print, c'est pour afficher
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 04/06/2014 22:06 | #


Salut,

A propos du double buffering, je te conseille de regarder les tutoriels d'intelligide qui sont très bien fait.
Le tutoriel avec le double buffering

1337
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 04/06/2014 22:16 | #


Merci de vos réponses
Lephenixnoir a écrit :
Tu ne rafraîchis par l'écran tant que le dessin n'est pas terminé, donc tu évites le scintillement et les images en construction.

Cela veut dire que sans cette fonction l'écran scintille? Du coup comment effacer l'ecran?
Et quelle est la partie du code qui dit que quand j'appuie sur la touche MENU il me ramène sur le menu de la calculatrice?
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 04/06/2014 22:19 | #


Tu fais ton dessin. Il ira automatiquement dans la VRAM ( la fonction qui prépare ce qui va être afficher )
Puis tu fais Bdisp_PutDisp_DD(); et la, l'écran actuel va "permutter" avec celui qui était dans la VRAM
Ensuite, tu efface la vram pour refaire un jolie dessin :

Bdisp_AllClr_VRAM();
1337
Eltoredo Hors ligne Modérateur Points: 4297 Défis: 35 Message

Citer : Posté le 04/06/2014 22:19 | #


ML_clear_vram peut t'aider mais il faut inclure la monochromlib de pierotll sinon Bdisp_AllClr_DDVRAM(); le fait il me semble
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir Hors ligne Administrateur Points: 18384 Défis: 142 Message

Citer : Posté le 04/06/2014 22:19 | #


C'est dans le GetKey(). Cette fonction ne fait pas que ce que j'ai décrit ci-dessus. Tu verras que le catalogue de fonctions est également disponible, de même que le système de captures d'écran.

Pour effacer, l'écran, utilise Bdisp_AllClr_VRAM() qui n'efface que l'écran virtuel (la VRAM). Ensuite, une fois ton image dessinée dans la VRAM, utilise Bdisp_PuDisp_DD() qui "projette" le contenu de la VRAM à l'écran physique (DD).
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 04/06/2014 22:25 | #


Ah ok, je commence a comprendre
Je ferai des tests demain. Juste l'affichage du texte est compris comme du dessin?
C'est compliqué le C casio
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 04/06/2014 22:27 | #


Oui, l'affichage de text, c'est du dessin
1337
Lephenixnoir Hors ligne Administrateur Points: 18384 Défis: 142 Message

Citer : Posté le 04/06/2014 22:30 | #


Silaxe a écrit :
C'est compliqué le C casio

Détrompe-toi, c'est parfois bien plus simple que le C "classique".
Enfin, ne lâche pas l'affaire, c'est pas si compliqué quand on prend le Temps d'y réfléchir.
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 04/06/2014 22:33 | #


En tout cas c'est plus compliqué le Basic.
La ou je suis vraiment perdu c 'est le nombre de fonctions et de lib différentes.
Tu m'avais parlé d'un catalogue?
Eltoredo Hors ligne Modérateur Points: 4297 Défis: 35 Message

Citer : Posté le 04/06/2014 22:35 | #


Je me suis dit EXACTEMENT la même chose (C'EST DUR) mais en fait c'est pas si dur quand on a fait un ou deux programmes avec un peu d'aide pourquoi pas, ça t'aide a mieux visualiser le langage et ses différentes fonctions (la je me rend compte que c'est extraordinaire et pas si dur que ça)
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir Hors ligne Administrateur Points: 18384 Défis: 142 Message

Citer : Posté le 04/06/2014 22:36 | #


Oui, quand tu fais [SHIFT][4] tu as accès à un catalogue de fonctions Basic. Et bien, celui-ci est géré par GetKey(), donc même dans ton add-in tu y as accès.
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 04/06/2014 22:36 | #


Et plus puissant que le Basic

Ajouté le 04/06/2014 à 22:38 :
@ lephenixnoir c'est bon j'ai compris. Ca peut être utile pour faire un gif

Ajouté le 05/06/2014 à 19:54 :
Après avoir compris comment marche l'effacement de l'écran je bute pour afficher une variable .
Darkynsun m'a envoyé ceci et j'ai ajoutée une variable:


[purple]int[/purple] test = 5;
[green]//au début du code :[/green]
[purple]char[/purple] buffer[5];

[green]//puis plus loin, [/green]

sprintf(buffer[gray]"%d"[/gray], test);
PrintMini(1, 1, buffer, [maroon]1[/maroon]);

[green]//%d c'est si la variable est de type int[/green]

Mais lorsque je compile il me met plusieurs erreurs:
Illegal token "%d"
Argument mismatch
Est-ce'que vous pouvez m'aider?

Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 05/06/2014 19:56 | #


zut j'ai oublié la virgule après buffer en fait
:boulet3:
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 05/06/2014 19:56 | #


Ben déjà il te manque une virgule entre buffer et "%d"

Ajouté le 05/06/2014 à 19:56 :
Trop lent
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 05/06/2014 19:59 | #


Maintenant il n'y a plus d'erreurs mais quand je lance l'add-in depuis l'émulateur il me marque "System error"
Lephenixnoir Hors ligne Administrateur Points: 18384 Défis: 142 Message

Citer : Posté le 05/06/2014 20:00 | #


Tu as inclus le header ?
#include <stdio.h>
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 05/06/2014 20:01 | #


Elle est pas ailleurs dans le code l'erreur ? Je veux dire dans la partie du programme que tu ne nous as pas donné
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 05/06/2014 20:03 | #


ah non
C'est une des lib de base du C non?
1, 2 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
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
: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 v42 © créé par Neuronix et Muelsaco 2004 - 2020 | Il y a 87 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