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 - Autres questions


Index du Forum » Autres questions » **Le SDK pour fx-9860/Graph85** Topic officiel
Matronix Hors ligne Ancien administrateur Points: 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.


Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 40 ··· 44, 45, 46, 47, 48 Suivante
Esu Hors ligne Membre Points: 3 Défis: 0 Message

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


D'accord merci
Dyn4moo Hors ligne Membre Points: 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 ligne Ancien rédacteur Points: 2384 Défis: 20 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 ?
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cypher_ Hors ligne Membre Points: 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 )
Cakeisalie5 Hors ligne Ancien administrateur Points: 1964 Défis: 11 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")
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Cypher_ Hors ligne Membre Points: 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 )
Cakeisalie5 Hors ligne Ancien administrateur Points: 1964 Défis: 11 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) )
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Cypher_ Hors ligne Membre Points: 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 )
Cakeisalie5 Hors ligne Ancien administrateur Points: 1964 Défis: 11 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 !
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Cypher_ Hors ligne Membre Points: 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 )
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fyre Hors ligne Membre Points: 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
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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().
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fyre Hors ligne Membre Points: 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
Ninestars Hors ligne Membre Points: 2462 Défis: 24 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
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 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++ !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


Invité

Citer : Posté le 07/05/2019 20:41 | #


Bonjour à tous,

Maintenant, j'ai une question qui contient "Basic" et C ...
Alors j'ai pensé pourquoi ne pas le mettre ici?
Mon problème est que je veux essayer d'activer le "Backlight" avec C.Basic.
J'ai essayé d'utiliser la fonction "Backlight", en le changeant en 1, mais ça ne s'allume pas et lorsque j'ai essayé d'imprimer si le rétroéclairage était allumé ou éteint (indiqué par un 0 ou un 1), il indiquait 1.
Voici une capture d'écran du code. Quelqu'un pourrait-il expliquer comment cela fonctionne exactement?



Merci d'avance!

(Ps euh, j'ai utilisé Google Translate)
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 07/05/2019 21:15 | #


C'est pas bien compliqué, le backlight est contrôlé par un pin qui est relié à l'un des ports de communication. La variable adrs est initialisée avec l'adresse du port et la variable bit avec le bit associé (8 pins par port).

Je suis à peu près sûr que la fonction marche, parce que j'ai quelque chose de très similaire (et fonctionnel) dans les sources de gint.

/* t6k11_backlight() - manage the screen backlight */
void t6k11_backlight(int setting)
{
    volatile uint8_t *port;
    uint8_t mask;

    /* This setting is mapped to an I/O port:
       - On SH3, bit 7 of port G
       - On SH4, bit 4 of port N */
    if(isSH3())
    {
        port = (void *)0xa400012c;
        mask = 0x80;
    }
    else
    {
        port = (void *)0xa4050138;
        mask = 0x10;
    }

    if(!setting) *port &= ~mask;
    if(setting > 0) *port |= mask;
    if(setting < 0) *port ^= mask;
}

Peux-tu nous éclairer sur le modèle de calculatrice que tu utilises ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


Invité

Citer : Posté le 07/05/2019 21:24 | #


J'utilise le “Casio graph 35 + E” et il est déjà overclocké pour fonctionner avec des “add-ins”
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 07/05/2019 21:27 | #


C'est curieux. Je n'ai jamais pu tester gint sur une Graph 35+E donc je n'ai pas de certitude, mais je sais que la gestion du backlight avec la fonction que j'ai citée marche sous overclock.

Pour l'instant je ne saurai donc pas dire d'où peut venir le problème.
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 ··· 30 ··· 40 ··· 44, 45, 46, 47, 48 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 123 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