Fx-9860G SDK

De Casio Universal Wiki
Révision datée du 22 juin 2012 à 13:05 par (nom d'utilisateur retiré) (Ziqumu a déplacé la page SDK vers Fx-9860G SDK)
Aller à : navigation, rechercher

-article en cours de rédaction-

Vous savez sûrement que Casio nous a gentiment offert un kit de développement permettant de programmer en C ou C++ sur les Graph 75/85/95 (SD). Or la documentation est en anglais, est très incomplète, et contient même des erreurs dans les fonctions de lecture et écriture des fichiers. Pour lire cette présentation des fonctions offertes par le SDK, vous aurez besoin de connaître les bases du C, voire du C++. Pour cela, vous pouvez aller découvrir différents tutoriels. Vous êtes un débutant complet et vous voulez des explications (très) ludiques pour avaler les heures d'apprentissage plus facilement ? Allez voir le tutoriel du site du zéro : tutoriel pour les Zér0s. Vous voulez des explications plus professionnelles provenant d'une source sûre ? Allez plutôt voir ici : initiation au langage C.

Prêts à attaquer ?


Présentation générale

Le Fx-9860G SDK

est un logiciel de programmation qui permet de créer des add-in en C compatible avec la graph 75, 85, 85 SD, 95. Les add-ins crée par ce logiciel sont beaucoup plus rapide que les programmes en basic, et ils permettent l'utilisation des syscall


Comment l'utiliser

Téléchargement et installation

Tout d'abord vous devez télécharger le logiciel, soit sur le site officiel de Casio, mais il faudra vous inscrire et prouver que vous avez la bonne calculatrice, soit sur Planet-Casio, croissez le fichier "sdk85.rar" Ouvrez le fichier que vous avez téléchargé avec un gestionnaire d'archive comme 7zip et exécutez "fx-9860G SDK setup.exe". Continuez l'installation normalement et une fois celle-ci terminé lancez le programme.

Création du projet

Tout d'abord, vous devez créer un projet. Pour cela allez dans le menu "Projet" et faites "New...". Une fenêtre apparaît:

  • "Path to project" : Donner ici un dossier général des projets.
  • "Folder name" : Ici donnez le nom du dossier de votre projet, un dossier de ce nom sera créé dans le répertoire que vous avez indiqué juste au dessus. Tout votre projet sera dans ce nouveau dossier.
  • "Title" : C'est le nom de votre projet, il ne peut contenir que 8 caractères.
  • "Version" : Indiquez ici la version de votre projet. Vous pouvez par exemple écrire "1.0".
  • "Copy from project" : Cela permet de récupérer la config d'un ancien projet
  • "Copy sources and header files" : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il copiera en plus les sources.
  • "Copy icons" : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il récupérera en plus les icônes.

Une fois que vous validez, il se peut qu'un message s'affiche ou la seul possibilité est de cliquer sur OK. Faites le, ce n'est pas un problème, c'est juste le compilateur qui vous dit que vous devez compiler avant de lancer le programme.

Première compilation

Ça y est votre projet est près vous pouvez dès maintenant coder, mais pour être sûr que tout fonctionne bien, je vous conseil de lancer une première compilation en utilisant le bouton "compiler" (celui tout moche et coloré). Si tout s'est bien passé vous devriez voir en bas de la fenetre "Build results", "Build has completed". Si vous voyez ça, vous pouvez lancer l’émulateur en cliquant sur le bouton "run" (la petite flèche style "play" noire) ou en appuyant sur F5 (et si vous ne voyez pas ça vous avez deux solutions : chercher l'erreur avec les indications qu'il vous donne, et abandonner). Normalement l'écran et le clavier vont s'afficher; pour ouvrir votre add-in, restez dans le menu principal et utilisez les fléches de la calculatrice pour vous déplacer en bas a droite (vous pouvez aussi utiliser votre clavier) sur le logo de votre add-in qui où actuellement il est écrit "Debug", sauf si vous avez pensé à refaire l'icone. Cliquez ensuite sur [EXE], et vous devrez voir a l'écran "This application is sample Add-In". Si tout s'est bien passé, c'est parfait vous pouvez continuer, si il n'a pas réussi a compiler et que vous êtes sous Windows 64 bit, essayez cette astuce.


Problèmes rencontrés

Incompatibilité avec les versions de windows 64bit

Il arrive que la compilation ne fonctionne pas avec les versions 64bit de windows. L'incompatibilité vient du fait que par défaut les logiciel crée pour les versions 32bit s'installent automatiquement dans le dossier "C:\Program Files (x86)\" au lieu de "C:\Program Files\" et le compilateur ne fonctionne pas si son chemin d'accès comporte des parenthèse.

Si le logiciel est déjà installé

Pour régler le problème, allez dans "C:\Program Files (x86)\CASIO", faites clique droit puis couper sur le dossier "fx-9860G SDK". Allez ensuite dans "C:\Programmes\", si il y a déjà un dossier "CASIO", ouvrez le sinon créez le. Et enfin collez dans ce dossier. Normalement les racourcis se metterons automatiquement à jour mais si ce n'est pas le cas, allez dans le dossier que vous venez de déplacer "fx-9860G SDK" et faites un raccourci de "FXSH.exe"

Si le logiciel est pas encore installé

Lors de l'installation changez le dossier de destination pour "C:\CASIO\fx-9860G SDK". Une fois l’installation terminé allez dans "C:\" et déplacez le dossier "CASIO" dans "Programmes". Normalement les racourcis devrait se mettre à jour automatiquement mais si ce n'est pas le cas, allez dans "C:\Programmes\CASIO\fx-9860G SDK" et faites un raccourci de "FXSH.exe"


Éditeur sans colorisation syntaxique

Ce logiciel à un gros inconvénient, c'est qu'il n'est pas équipé de colorisation syntaxique, c'est a dire que tout le code en C que vous allez programmer sera écrit en noir, ce qui peut vite devenir illisible quand on a beaucoup de lignes. Pour remédier à cela, je vous conseil d'utiliser un autre éditeur, par exemple Notepad++. Néanmoins, on est oblgé d'utiliser encore le SDK pour compiler et pour tester, donc dans le sdk, vous fermez toutes les fenêtres d'éditions et gardez celle qui vous servent pour débugger. Ouvrez ensuite notepad++ et allez chercher les fichiers dans le dossier de votre projet. Si vous en ouvrez plusieurs, ils se mettrons sous forme d'onglet. L’inconvénient c'est que vous aurez deux fenêtre au lieu d'une pour programmer, mais cet inconvénient est négligeable.


Fonctions de "fxlib.h"

Affichage

Bdisp_PutDisp_DD

prototype : void Bdisp_PutDisp_DD(void);

Affiche à l'écran le contenu de la VRAM (buffer stockant le contenu de l'écran virtuel). Ne prend aucun argument et ne renvoie aucune valeur.


Bdisp_AllClr_DD/ Bdisp_AllClr_VRAM/ Bdisp_AllClr_DDVRAM

prototypes :

void Bdisp_AllClr_DD(void);

void Bdisp_AllClr_VRAM(void);

void Bdisp_AllClr_DDVRAM(void);

Ne prend aucun argument et ne renvoie aucune valeur.

Bdisp_AllClr_DDVRAM() efface l'écran et la VRAM. Pour effacer uniquement l'écran, utiliser Bdisp_AllClr_DD(). Pour effacer uniquement la VRAM, utiliser Bdisp_AllClr_VRAM().


Bdisp_AreaClr_DD/ Bdisp_AreaClr_VRAM/ Bdisp_AreaClr_DDVRAM

prototypes :

void Bdisp_AreaClr_DD(const DISPBOX *pArea);

void Bdisp_AreaClr_VRAM(const DISPBOX *pArea);

void Bdisp_AreaClr_DDVRAM(const DISPBOX *pArea);

La fonction ne renvoie aucune valeur.

Efface une partie de l'écran. L'argument à passer (par pointeur) à cette fonction est une structure de la forme :

typedef struct tag_DISPBOX{ // Déclarée dans dispbios.h

int left; // 0~127

int top; // 0~63

int right; // 0~127

int bottom; // 0~63

} DISPBOX;


Bdisp_AreaReverseVRAM

prototype :

void Bdisp_AreaReverseVRAM(

int x1, // coordonnée x à gauche

int y1, // coordonnée y en haut

int x2, // coordonnée x à droite

int y2 // coordonnée y en bas

);

La fonction ne renvoie aucune valeur. Inverse une zone de l'écran (pixel éteint en allumé et allumé en éteint). Passez-lui en argument les coordonnées de la zone à inverser, comme indiqué ci-dessus).


Bdisp_GetDisp_DD/ Bdisp_GetDisp_VRAM

prototypes :

void Bdisp_GetDisp_DD(unsigned char * pData);

void Bdisp_GetDisp_VRAM(unsigned char * pData);

La fonction ne renvoie aucune valeur. Elle permet de stocker dans un tableau le bitmap des écrans de la VRAM (écran virtuel) ou du DD (écran graphique). On lui passe en argument (par pointeur) la 'zone' où le bitmap sera stocké.

La documentation ne précise rien de plus à propos de cette fonction, si ce n'est que le tableau sur lequel est stocké le bitmap doit avoir une taille de 1024 octets. On peut donc penser que la méthode de codage utilisée par Casio est : on regroupe les pixels par groupe de 8 (un octet), où chaque bit prend la valeur d'un pixel (allumé : 1, éteint : 0). Si l'on fait le calcul : (128*64)/8 = 1024.


Bdisp_PutDispArea_DD

prototype : void Bdisp_PutDispArea_DD(const DISPBOX *pArea);

Une des plus belles erreurs de la documentation de Casio ! Dans la doc ils ont mis les explications d'une autre fonction... Cette fonction permet d'afficher à l'écran graphique une zone de l'écran virtuel. On peut tout de même deviner que cette fonction demande en argument une structure (passage par pointeur) de la forme :

typedef struct tag_DISPBOX{ // Déclarée dans dispbios.h

int left; // 0~127

int top; // 0~63

int right; // 0~127

int bottom; // 0~63

} DISPBOX;


Bdisp_SetPoint_DD/ Bdisp_SetPoint_VRAM/ Bdisp_SetPoint_DDVRAM

prototypes :

void Bdisp_SetPoint_DD(int x,int y,unsigned char point);

void Bdisp_SetPoint_VRAM(int x,int y,unsigned char point);

void Bdisp_SetPoint_DDVRAM(int x,int y,unsigned char point);

Place ou supprime un pixel aux coordonnées x et y passées en argument. Ne renvoie aucune valeur. La troisième valeur passée en argument est le type de point : 1 pour mettre un pixel, 0 pour en enlever un. La première fonction permet d'agir sur l'écran graphique, la seconde dans la VRAM, et la troisième dans les deux.