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 » Programmation Add-in
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Programmation Add-in

Posté le 28/12/2015 12:33

Bonjour, j'aurais voulu programmer des Add-in mais je ne sais pas par où commencer et comment faire donc je viens vous demander de l'aide
Projet : Créer un Add-in pour connaître le niveau de batterie restant pour Graph 75/85/95
Merci


1, 2 Suivante
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 28/12/2015 12:35 | #


Pour programmer des add-ins, tu peux apprendre le langage C ou le C++ sur le site du zéro par exemple puis ensuite programmer sur n'importe quel IDE comme codeblocks ou autre le programme que tu désires faire pour finalement compiler ton code sur le SDK de Casio afin qu'un programme en .g1a soit compilé pour le transférer sur ta calculatrice avec FA 124. Si tu as plus de questions, pose-les, j'y répondrai
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 12:36 | #


Merci Eltoredo mais comment je compile avec le SDK ? Comment j'obtiens ce SDK ?
Merci
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 28/12/2015 12:37 | #


J'ai mis un lien dans mon précédent message, tu peux télécharger le SDK directement sur le site. Pour compiler, tu y places ton code et tu cliques sur le bouton "Build" disponible dans la barre d'outils en haut.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 12:38 | #


Merci je teste ça quand je peux et je reviens ici si je n'y arrive pas
Merci de tes réponses rapides

Ajouté le 28/12/2015 à 13:04 :
Comment je fais pour compiler avec le SDK ? :/
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Fife86 Hors ligne Membre Points: 830 Défis: 0 Message

Citer : Posté le 28/12/2015 13:08 | #


Il faut pour commencer créer un projet dans le Sdk, ensuite tu poura modifier le .c qui a été généré puos tu compile en cliquant sur build.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 28/12/2015 13:20 | #


Salut,

Comme premier projet, et d'autant plus si tu ne sais pas encore programmer en C, un add-in pour connaître le niveau de batterie me semble compliqué.
Le C est un langage bas niveau qui te permet d'être proche du matériel. C'est donc le langage de prédilection pour faire ce genre de chose, mais tes connaissances sont trop faible pour le moment pour te permettre de le faire. Essaie déjà des choses plus simple
1337
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 13:22 | #


J'ai déjà fait du C++ c'est pareil ?
Ok je vais voir ça merci
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 28/12/2015 13:23 | #


Ce sont 2 langages qui se ressemble.
Le C++ est un langage orienté objet tandis qu'il n'y en a pas à proprement parlé en C.
C'est un langage plus restrictif.
1337
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 28/12/2015 13:31 | #


Xavier59 a écrit :
Ce sont 2 langages qui se ressemble.
Le C++ est un langage orienté objet tandis qu'il n'y en a pas à proprement parlé en C.
C'est un langage plus restrictif.


Le C++ n'est pas orienté objet mais un langage supportant l'orienté objet C'est une extension du C en fait SI tu connais le C++, tu connais presque le C
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 28/12/2015 13:59 | #


Le problème en l'occurrence c'est que l'obtention du niveau de batterie n'a rien à voir avec le langage : à vrai dire tu pourrais tout aussi bien le faire en assembleur.

En réalité, ce qui est intéressant porte sur la constitution du SoC, la répartition des registres et le moyen technique de mesurer le niveau de batterie. De telles fonctions existent, mais elles sont imprécises.

Sinon tu peux juste appeler le syscall qui donne l'info et alors tu peux programmer un tel add-in en 20 lignes et 10 minutes -- ou pas loin.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 17:36 | #


Lephenixnoir comment je fais ça s'il te plaît ?

Ajouté le 28/12/2015 à 20:21 :
Est-ce que ce serait possible de faire un portage de l'indicateur batterie de la Graph 35+E pour la Graph 75 ?
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 28/12/2015 20:41 | #


Hey, pour avoir la batterie sur SH4, installe tout simplement l'OS 2.05 sur ton modèle. Non seulement tu profitera de toutes les fonctionnalités des G75, mais tu aura surtout le niveau de batterie directement depuis le menu principal.

Pour cela, juste lire ce tuto : http://www.planet-casio.com/Fr/forums/topic13930-1-Ameliore-ta-Graph-35+-USB-E-en-Graph-75(+E)-!.html
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 21:02 | #


Dark storm a écrit :
Hey, pour avoir la batterie sur SH4, installe tout simplement l'OS 2.05 sur ton modèle. Non seulement tu profitera de toutes les fonctionnalités des G75, mais tu aura surtout le niveau de batterie directement depuis le menu principal.

Pour cela, juste lire ce tuto : http://www.planet-casio.com/Fr/forums/topic13930-1-Ameliore-ta-Graph-35+-USB-E-en-Graph-75(+E)-!.html

Mais moi j'ai une Graph 35+ USB ça marche quand même ???
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 28/12/2015 21:03 | #


Bien sûr mais via ce tuto
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 28/12/2015 21:06 | #


Donc je ne peux pas mettre l,OS de la 75+E sur ma 35+USB ? C'est bien ça ?
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 28/12/2015 23:48 | #


Si ta Graph est plutôt récente (et donc SH4), c'est possible. Le tutoriel qu'à mis Elto n'est plus à jour, le mien indique la marche à suivre quel que soit le modèle de calto.

Ménage fait, quiproquo dans les réponses précédentes.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 29/12/2015 11:13 | #


Tibo28l a écrit :
Lephenixnoir comment je fais ça s'il te plaît ?

Par souci de complétude, pour les futurs visiteurs qui se poseraient la question. La documentation est sur cette page. Le syscall intéressant est le 0x49c. La procédure d'appel (en assembleur, ici pour gcc) est simple :

    .global _getBatteryLevel

_getBatteryLevel:
    mov.l   sc_addr, r2
    mov.l   1f, r0
    jmp     @r2
    nop
1:  .long   0x49c

sc_addr:
    .long   0x80010070

Il faut juste retenir que ce morceau de code saute à l'adresse 0x80010070, qui est l'adresse de la table de syscalls, avec la valeur 0x49c dans r0 (ce qui génère un appel au syscall 0x49c) en lui passant tous les paramètres qu'il a reçu (les registres r4 à r7, éventuellement d'autres arguments envoyés sur la pile).

Cette fonction va renvoyer 0, 1 ou 2 selon le niveau de batterie (0 étant le meilleur niveau).

On peut aussi trouver sur cette page un exemple de code qui récupère le niveau de batterie et une implémentation brute de GetBatteryStatus() basées sur la configuration des registres du SoC.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tibo28l Hors ligne Membre Points: 118 Défis: 0 Message

Citer : Posté le 30/12/2015 10:42 | #


Merci !
Est-ce que quelqu'un aurait la gentillesse de me donner un code source d'Add-In affichant "Hello" avec une image ? Merci
Mes Programmes :
Cliquer pour enrouler

- Mystery Key
- Khi2
Eltoredo Hors ligne Modérateur Points: 4301 Défis: 35 Message

Citer : Posté le 30/12/2015 14:25 | #


Prends par exemple Paint, écrit Hello sur une image blanche, de préférence redimensionnée avec la taille de l'écran d'une calculatrice (128x64). Vas ensuite sur Sprite Coder, mets ton image en précisant que c'est un add-in, donc pour les calculatrices 75/85/95. Ensuite, prends le code et utilise la bibliothèque MonochromeLib pour afficher ton image avec la fonction adaptée.
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 30/12/2015 14:42 | #


Hmm, une image pour afficher du texte ? T'exagères un peu là ElTo.
Pour le texte, il y a PrintXY() :
void PrintXY(int x, int y, const unsigned char *str, int mode);

où x et y sont les positions où le texte doit être écrit, str le texte en question, et le mode, 0 dans quasiment tous les cas.
Sans parler de l'image parce qu'il faudrait utiliser MonochromeLib, voici un exemple de fonction principale qui affiche un Hello World à l'écran (à remplacer dans le code par défaut, ne l'utilise pas toute seule, ça ne fonctionnera pas !) :

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short optionNum)
{
        unsigned int key;

        Bdisp_AllClr_VRAM();
        PrintXY(0, 0, "Hello, World !", 0);
        GetKey(&key);
        return 1;
}

La fonction Bdisp_AllClr_VRAM() nettoie la vram. Je ne sais jamais si le système le fait automatiquement mais il me semble que non. GetKey() a deux intérêts ici : d'abord, elle met le programme en pause jusqu'à ce que l'utilisateur appuie sur une touche (le code de ladite touche étant assigné à la variable key), et elle affiche le contenu de la vram à l'écran. Sans ça il faudrait appeler Bdisp_PutDisp_DD() (mais celle-ci ne mettrait pas en pause le programme, donc on ne verrait rien car il reviendrait au menu tout de suite).

Le return est surprenant, Casio a voulu que EXIT_SUCCESS vale 1 au lieu de 0 comme dans toutes les implémentations courantes.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
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
: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 75 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