Forum Casio - Autres questions


Index du Forum » Autres questions » **Le SDK pour fx-9860/Graph85** Topic officiel
MatronixHors ligneAncien administrateurPoints: 6058 Défis: 82 Message

**Le SDK pour fx-9860/Graph85** Topic officiel

Posté le 18/07/2007 15:08

Vu la multitude de topics sur le SDK de la 85, j'ai décidé d'en faire un seul et unique, où l'on posera nos problèmes et explications sur ce même topic, et non pas sur 50, par souci de clareté et de facilité.

Des nouveautés ? Des problèmes ? Des idées ?
Exposez les ici !

Voici une liste de commandes commencées par Muelsaco. N'hésitez pas à rajouter vos commandes dans le topic je les rajouterai pour en faire profiter tout le monde. Merci.

// Locate X,Y,"Texte"
:arrow: locate(x,y); Print("Texte");

// Text X,Y,"Texte"
:arrow: PrintMini(x,y,"Texte",0);

// F-Line x1,y1,x2,y2
:arrow: Bdisp_DrawLineVRAM(x1,y1,x2,y2);

// Tracer une ligne blanche
:arrow: Bdisp_ClearLineVRAM(x1,y1,x2,y2);

// PxlOn x,y & PxlOff x,y
:arrow: Bdisp_SetPoint_VRAM(x,y,<couleur>)
<couleur> : 0 pour le blanc, 1 pour le noir

// Cls
:arrow: Bdisp_AllClr_DDVRAM();

// Actualiser l'écran
:arrow: Bdisp_PutDisp_DD();
Fonction très importante. Elle permet d'afficher une image tracée virtuellement dans la VRAM. Toute image doit d'abord être dessinée dans la VRAM puis affichée à l'écran. Vous ne verrez donc pas votre image s'afficher tant que vous n'aurez pas appelé Bdisp_PutDisp_DD(). À noter que les fonctions GetKey() et Print() l'appellent automatiquement.

While <exp1>
<code>
WhileEnd
:arrow:
while(<exp1>)
{
  <code>
}

// StoPict x
:arrow: SaveDisp(x);
x variant de 1 à 3 uniquement.

// RclPict x
:arrow: RestoreDisp(x);
  x variant de 1 à 3 uniquement.

// Ouvrir un popup (comme les erreurs syntaxe, etc)
:arrow: PopUpWin(<taille>);
  <taille> : de 1 à 8.


Rappels sur les variables globales : Source

* Les variables globales sont à utiliser avec précaution, puisqu'elles créent des liens invisibles entre les fonctions. La modularité d'un programme peut en souffrir et le programmeur risque de perdre la vue d'ensemble.
* Il faut faire attention à ne pas cacher involontairement des variables globales par des variables locales du même nom.
* Le codex de la programmation défensive nous conseille d'écrire nos programmes aussi 'localement' que possible.

L'utilisation de variables globales est jusitifiée, si

* Plusieurs fonctions qui ne s'appellent pas ont besoin des mêmes variables, ou
* Plusieurs fonctions d'un programme ont besoin du même ensemble de variables. Ce serait alors trop encombrant de passer toutes les variables comme paramètres d'une fonction à l'autre.


Pages : Précédente1 ... , 42, 43, 44, 45, 46, 47
EsuHors ligneMembrePoints: 3 Défis: 0 Message

Citer : Posté le 31/03/2016 13:10 | #


D'accord merci
Dyn4mooHors ligneMembrePoints: 19 Défis: 0 Message

Citer : Posté le 13/04/2017 19:39 | #


Bonjour tout le monde !
Je suis nouveau ici et je ne connais pas très bien le fonctionnement du SDK c'est donc pour ça que je sollicite votre aide : Je voudrais faire un calendrier en avec la lib RTC. Le problème est que je ne sais pas ou placer la lib une fois téléchargée. Quelqu'un a t-il la gentillesse de me répondre ?
Merci ;-)
-florian66-Hors ligneAncien rédacteurPoints: 2298 Défis: 19 Message

Citer : Posté le 13/04/2017 20:03 | #


Tu récupères le . c et le .h, que tu ajoutes dans le dossier de ton addin.
Il ne faut pas oublier d'inclure ces fichiers au SDK (à gauche) et aussi dans ton .c principal ( #include "blablabla" )
In Arch, I trust ! And you ?
LephenixnoirEn ligneAdministrateurPoints: 14126 Défis: 136 Message

Citer : Posté le 14/04/2017 10:02 | #


Ce qui signifie d'ailleurs qu'il n'y a pas de libs en fait (puisque tu dois tout recompiler à chaque fois) ! Si tu as déjà programmé avant d'atterrir ici, tu verras que ce SDK est un outil assez peu perfectionné tant au niveau de sa gestion de projet que de son compilateur/linker.

En revanche leur émulateur est génial, ça il faut bien l'admettre.
Cypher_Hors ligneMembrePoints: 45 Défis: 0 Message

Citer : Posté le 20/04/2017 00:48 | #


Bonjour, je suis un petit nouveau sur le site qui s'intéresse depuis peu à la programmation d'add-in sur Casio. J'ai les connaissances de base en C (merci Openclassroom ) mais j'ai du mal à comprendre le fonctionnement de la lib du sdk. Enfin, surtout une fonction : GetKey(). Je ne comprends pas son fonctionnement : attend-elle l'appuis d'une touche pour permettre au programme de continuer ou est-elle une fonction comme n'importe quelle autre qui ne stop pas le programme ?
Je rencontre un petit problème dans mon premier programme (un Morpion pour faire original ) et je soupçonne cette fonction d'en être la cause. Si la fonction GetKey() stop le programme, y en a-t-il une similaire sans cette action néfaste ?
Merci d'avance pour votre aide Bonne soirée
Certains aiment essayer de jouer aux jeux. J'aime essayer de les programmer. (Même si c'est infructueux )
Cakeisalie5Hors ligneMembre de CreativeCalcPoints: 1730 Défis: 10 Message

Citer : Posté le 20/04/2017 00:49 | #


As-tu lu le manuel ? (sur cette page, sélectionnes "Manuels_sdk_fx9860_g75_85_95.zip")

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Besoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Cypher_Hors ligneMembrePoints: 45 Défis: 0 Message

Citer : Posté le 20/04/2017 01:01 | #


Cakeisalie5, je me suis offert ce luxe ... Qui ne m'a pas éclairée sur le fonctionnement de GetKey plus que ça ...:
"The GetKey function performs a key wait and returns a value indicating the pressed key."
Si j'ai bien compris, et j'en ai peur, "la fonction GetKey() attends une action sur l'une des touche de la calc puis renvois dans l'argument la valeur de la touche pressée" (oui c'est une traduction assez libre )
Mais existe-t-il une fonction qui réalise la même action sans pour autant attendre une action ?
Certains aiment essayer de jouer aux jeux. J'aime essayer de les programmer. (Même si c'est infructueux )
Cakeisalie5Hors ligneMembre de CreativeCalcPoints: 1730 Défis: 10 Message

Citer : Posté le 20/04/2017 01:06 | #


La solution populaire est IsKeyDown. Cependant, préfères GetKeyWait si tu veux juste attendre quelques temps (évites GetKey+Sleep, Sleep est mal conçu) : en effet, sinon, le processeur exécute toujours des instructions, et tu dépenseras plus rapidement la batterie.

(au passage, n'hésites pas à te présenter dans le topic de présentations, tu pourras ainsi accéder à notre chat où tu pourras poser tes questions plus directement (bien qu'il n'y aie pas grand monde à cette heure) )

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Besoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Cypher_Hors ligneMembrePoints: 45 Défis: 0 Message

Citer : Posté le 20/04/2017 01:12 | #


Mais avec IsKeyDown le problème est le même pour moi ... Enfin le problème vient surement du programme aussi dans son ensemble je vais reprendre tout ça ... La remarque sur la batterie est un "petit" détail que je n'avais pas pris en compte ...
Je prends note je vais aller y faire un tour
Merci pour ton aide, bonne soirée
Certains aiment essayer de jouer aux jeux. J'aime essayer de les programmer. (Même si c'est infructueux )
Cakeisalie5Hors ligneMembre de CreativeCalcPoints: 1730 Défis: 10 Message

Citer : Posté le 20/04/2017 01:13 | #


N'hésites pas à faire un topic dédié à ton problème dans la journée du coup. Bonne soirée à toi aussi !

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Besoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Cypher_Hors ligneMembrePoints: 45 Défis: 0 Message

Citer : Posté le 27/04/2017 13:37 | #


Nouveau problème (oui, je débute), malgré le tuto sur la génération de nombre aléatoires avec le SDK, j'ai eu une erreur suite au syscall ou alors ma génération ne marche tout simplement pas ... En conséquent, quelqu'un pourrait-il poster un programme d'exemple de génération d'aléatoire ou m'expliquer une technique simple s'il vous plaît ?
Merci d'avance
Certains aiment essayer de jouer aux jeux. J'aime essayer de les programmer. (Même si c'est infructueux )
LephenixnoirEn ligneAdministrateurPoints: 14126 Défis: 136 Message

Citer : Posté le 27/04/2017 18:46 | #


La méthode proposée par Dark Storm est à peu près la seule manière de faire.

Il serait sans doute plus intéressant pour toi de rechercher une solution à ce problème de syscall. As-tu regardé les commentaires du tutoriel ? De nombreuses personnes ont eu un tel problème avant toi et je ne serais pas surpris qu'une de leurs solutions te convienne également.
FyreHors ligneMembrePoints: 32 Défis: 0 Message

Citer : Posté le 21/01/2018 23:08 | #


bonsoir,
totalement une question de débutant ; comment utiliser la fonction GetKeyWait ? et généralement on l'utilise pour faire quoi?
6*(7+2x) [base 10] = 42 [base 10+3x]
pour tout x>-2
LephenixnoirEn ligneAdministrateurPoints: 14126 Défis: 136 Message

Citer : Posté le 22/01/2018 10:51 | #


Tu ne peux pas utiliser la fonction GetKeyWait() telle quelle... elle est buggée (!). Enfin, ça se contourne. Si tu en as besoin, je peux te donner le code.

La fonction GetKeyWait() sert à faire des entrées clavier qui attendent, mais pas à l'infini. Concrètement, tu as trois modes de fonctionnement :
- Le mode GetKey() qui attend aussi longtemps qu'il le faut ;
- Le mode IsKeyDown() / IsKeyUp() qui s'arrête tout de suite lorsqu'aucune touche n'est pressée, mais qui détecte toutes les touches à la fois (avec IsKey*(), il faut préciser la touche qu'on veut observer) ;
- Le mode GetKey() avec timeout qui s'arrête en renvoyant une valeur spéciale si aucune touche n'est pressée au bout d'un certain délai (en secondes, de mémoire).

Comme à mon habitude, je vais déconseiller fortement d'utiliser le second mode... le troisième pourrait être génial si on pouvait mettre des délais précis, mais il ne nous autorise que les secondes, ce qui est contraignant.

En fin de compte la combinaison GetKey() avec timer (pour laquelle j'ai écrit un tutoriel) est plus intéressante que GetKeyWait().
FyreHors ligneMembrePoints: 32 Défis: 0 Message

Citer : Posté le 22/01/2018 21:16 | #


Merci beaucoup
6*(7+2x) [base 10] = 42 [base 10+3x]
pour tout x>-2
NinestarsHors ligneMembrePoints: 2171 Défis: 22 Message

Citer : Posté le 01/05/2018 15:08 | #


Arffff je bloque sur un truc en C++ !!
Je veux avoir comme argument d'une fonction, une chaine de caractères optionnelle.
j'ai le proto suivant
void fonction(int value, unsigned char txt[10] = "bonjour");

Et
void fonction(int value, unsigned char txt[])
{
    unsigned char str_value[10];
    sprintf((char*)str_value, "%i", value);

    locate(3,3);
    Print(txt);
    locate(10,4);
    Print(str_value);
    Bdisp_PutDisp_DD();
}

Est-ce correct ?

Comment dois-je faire pour avoir ce comportement ?
fonction(55)
fonction(55, "test")


Ajouté le 01/05/2018 à 15:11 :
C'est bon j'ai trouvé...
fonction(55, (unsigned char*)"test");
Il suffit d'écrire son problème pour trouver soit même la solution
LephenixnoirEn ligneAdministrateurPoints: 14126 Défis: 136 Message

Citer : Posté le 01/05/2018 15:14 | #


Btw le proto suivant devrait marcher également.
void fonction(int value, const unsigned char *txt = "bonjour");

J'ai surtout changé le [10] en *. Mais pense au const devant les chaînes de caractères, c'est très important, surtout en C++ !
Pages : Précédente1 ... , 42, 43, 44, 45, 46, 47

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 38 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