Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problèmes SDK divers et variés
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Problèmes SDK divers et variés

Posté le 26/10/2013 11:00

Salut j'ai fait un petit programme mais je comprends pas pourquoi la fonction Print ne veut pas afficher la chaine que je lui demande ...

Le code
Cliquer pour enrouler
#include "fxlib.h"
#include "stdio.h"

unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];


int AddIn_main(int isAppli, unsigned short OptionNum){
    Bdisp_AllClr_DDVRAM();
    demmarage();
    identif();
    
    return 1;
}

demmarage(){
    int key;
    Bdisp_AllClr_DDVRAM();
    PrintMini(80,58,"Version 1.0",0);
    Bdisp_DrawLineVRAM(10,10,10,50);
    Bdisp_DrawLineVRAM(10,50,117,50);
    Bdisp_DrawLineVRAM(117,50,117,10);
    Bdisp_DrawLineVRAM(10,10,117,10);
    Bdisp_DrawLineVRAM(10,10,63,25);
    Bdisp_DrawLineVRAM(117,10,63,25);
    locate(7,5);
    Print("Messagerie");
    do{
        GetKey(&key);
    } while(key != 30004);
    
    Bdisp_AllClr_DDVRAM();
}

identif(){
    Bdisp_AllClr_DDVRAM();
    locate(1,1);
    Print("Identifiant:");
    locate(1,2);
    Print("+------------------+");
    locate(1,3);
    Print("|                  |");
    locate(1,4);
    Print("+------------------+");
    remplichaine();
    
    caractere2=0;
    do{
        caractere2++;
        ident[caractere2] = chaine[caractere2];
    } while(caractere2+1 != caractere);
    ========================== > ICI < ========
    locate(2,3);
    Print(ident);
    do{
        GetKey(&key);
    } while(key != 30004);
    
}

remplichaine(){
    caractere=0;
    do{
        caractere++;
    ======================= > ET ICI < ========
        locate(2,3);
        Print(chaine);
        GetKey(&key);
        //==========Conversion==========
        if (key==48)key= 71;
        if (key==46)key= 61;
        if (key==15)key= 51;
        if (key==135)key= 41;
        if (key==30004)key= 31;
        if (key==49)key= 72;
        if (key==50)key= 62;
        if (key==51)key= 52;
        if (key==137)key= 42;
        if (key==153)key= 32;
        if (key==52)key= 73;
        if (key==53)key= 63;
        if (key==54)key= 53;
        if (key==169)key= 43;
        if (key==185)key= 33;
        if (key==55)key= 74;
        if (key==56)key= 64;
        if (key==57)key= 54;
        if (key==30025)key= 44;
        if (key==30015)key= 34;
        if (key==187)key= 75;
        if (key==30046)key= 65;
        if (key==40)key= 55;
        if (key==41)key= 45;
        if (key==44)key= 35;
        if (key==14)key= 25;
        if (key==30001)key= 76;
        if (key==149)key= 66;
        if (key==133)key= 56;
        if (key==129)key= 46;
        if (key==130)key= 36;
        if (key==131)key= 26;
        if (key==30007)key= 77;
        if (key==205)key= 67;
        if (key==168)key= 57;
        if (key==30002)key= 47;
        if (key==30023)key= 37;
        if (key==30021)key= 27;
        if (key==30006)key= 78;
        if (key==30008)key= 68;
        if (key==30016)key= 58;
        if (key==30020)key= 38;
        if (key==30018)key= 28;
        if (key==30009)key= 79;
        if (key==30010)key= 69;
        if (key==30011)key= 59;
        if (key==30012)key= 49;
        if (key==30013)key= 39;
        if (key==30014)key= 29;
        //==============================
        if(key==31)caractere=19;
        if(key==76)chaine[caractere]='a';
        if(key==66)chaine[caractere]='b';
        if(key==56)chaine[caractere]='c';
        if(key==46)chaine[caractere]='d';
        if(key==36)chaine[caractere]='e';
        if(key==26)chaine[caractere]='f';
        if(key==75)chaine[caractere]='g';
        if(key==65)chaine[caractere]='h';
        if(key==55)chaine[caractere]='i';
        if(key==45)chaine[caractere]='j';
        if(key==35)chaine[caractere]='k';
        if(key==25)chaine[caractere]='l';
        if(key==74)chaine[caractere]='m';
        if(key==64)chaine[caractere]='n';
        if(key==54)chaine[caractere]='o';
        if(key==73)chaine[caractere]='p';
        if(key==63)chaine[caractere]='q';
        if(key==53)chaine[caractere]='r';
        if(key==43)chaine[caractere]='s';
        if(key==33)chaine[caractere]='t';
        if(key==72)chaine[caractere]='u';
        if(key==62)chaine[caractere]='v';
        if(key==52)chaine[caractere]='w';
        if(key==42)chaine[caractere]='x';
        if(key==32)chaine[caractere]='y';
        if(key==71)chaine[caractere]='z';
        if(key==61)chaine[caractere]='.';
        if(key==57)chaine[caractere]='@';
    } while(caractere!=19);
    
    if(key==31)chaine[caractere]='\0';
    if(key!=31)chaine[caractere+1]='\0';
}


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section


la chaine ident fait 21 caracteres


Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22, 23 Suivante
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 19/04/2015 21:17 | #


Si tu veux lire des float il faut utiliser le format approprié ("%f"), ou la fonction appropriée. Par ailleurs, je préconise toujours les double ("%lf") mais ce n'est pas un choix obligatoire.

#include <stdio.h>
#include <stdlib.h>

char ch[] = "-0835.8480";
double f1;
sscanf(ch,"%lf",&f1); // f1 = -835.848
double f2 = atof(ch); // f2 = -835.848


Jeandu56 Invité

Citer : Posté le 19/04/2015 21:20 | #


Désoler de t'embeter mais tu peux me faire vite fait un exemple avec un sscanf et un print qui l'affiche après stp tu me sauverais.
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 20/04/2015 10:30 | #


Ben, je vois pas du tout l'intérêt... tu veux lire une chaîne pour avoir un float et ensuite écrire ce float dans une chaîne pour l'afficher ? Ça n'a aucun intérêt ou alors il faut te servir de la variable entre-temps.

#include <stdio.h>
#include <stdlib.h>
#include "fxlib.h"
#include "EasyInput.h"

int AddIn_main(int isAppli, unsigned short optionNum)
{
    unsigned int key; // id de la touche pressee
    char *str = EI_input_string(10,"0123456789.");
    char ch[30];
    double d1 = atof(str);
    double d2 = 2*d1; // on fait les calculs

    sprintf(ch,"%lf",d2); // ftoa() n'est pas standard
    PopUpWin(1); // affichage d'une popup
    locate(3,4); // deplacement du curseur
    Print((unsigned char *)ch); // affichage chaine
    GetKey(&key); // attente clavier
}


Il faut savoir précisément ce que tu veux faire après...


Jeandu56 Invité

Citer : Posté le 20/04/2015 14:08 | #


Je veux pourvoir utiliser une formule en cliquant sur un bouton, donc oui, j utilise entre temps la variable


Jeandu56 Invité

Citer : Posté le 20/04/2015 15:55 | #


Quand je compile j'ai un message d'erreur :

Executing Hitachi SH C/C++ Compiler/Assembler phase

set SHC_INC=D:\Caltoche\AC\OS\SH\include
set PATH=D:\Caltoche\AC\OS\SH\bin
set SHC_LIB=D:\Caltoche\AC\OS\SH\bin
set SHC_TMP=D:\Caltoche\Mes addins\Meca\Meca\Debug

Executing Hitachi OptLinker04 phase

"D:\Caltoche\AC\OS\SH\bin\Optlnk.exe" -subcommand=C:\Users\aclec\AppData\Local\Temp\hmk2F9F.tmp

** L2310 (E) Undefined external symbol "_BR_Size" referenced in "D:\Caltoche\AC\OS\FX\lib\setup.obj"

Optimizing Linkage Editor Abort

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998


ERROR: Process failed with return code: 1
Build was not successful.


J'ai bien inclut toutes les librairies.
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 20/04/2015 15:59 | #


Non mais attends, faut pas compiler le code que je t'ai donnée comme ça.
Il faut créer un projet et laisser toutes les pragma en bas (c'est parce que tu les a virées que tu as ce message). Ne remplace que la fonction AddIn_main() en vérifiant l'inclusion de tous les headers.

Ce n'est qu'un exemple que je t'ai donné, pas un truc tout prêt et fonctionnel.


jeromedu29 Invité

Citer : Posté le 23/04/2015 21:01 | #


Bonjour, pouvez vous m'expliquez comment puis-je récupérer des information venant du port série et les afficher. Vous me sauveriez la vie.
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 23/04/2015 21:05 | #


Ha. Ça va pas être si facile, surtout qu'on ne connaît pas ton niveau de compétence.

Bon, pour faire simple le système a des syscalls (fonctions intégrées) pour faire ça, on peut les appeler simplement, il y une jump table à adresse fixe, on appelle les sycalls en fonction de leur numéro en sautant à cette adresse avec les paramètres voulus.

Il suffit finalement d'avoir une application native (souvent, du C, mais on peut aussi bosser en C++ et, forcément, en assembleur) qui ouvre le port série, le gère et le ferme avec ces syscalls. Après, il faut consulter la documentation pour tout ce qui est paramétrage.

Si je peux me permettre, ce serait pour quoi faire ?


aclec Invité

Citer : Posté le 11/05/2015 18:05 | #


Bonjour, SDK n arrete pas de me mettre cela:
Could not open source file "screen.hpp"

Pouvez vous résoudre mon pb car je l ai pourtant add ds les header.
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 12/05/2015 08:41 | #


Ajouter le fichier dans les headers ne sert à rien : en l'occurrence, il ne faut même pas les ajouter (bizarrerie du SDK) sous peine d'avoir un message d'erreur type :
warning: the following dependent files does not exist: ...


Il faut bien penser que le header est inclus de manière relative au fichier source : ainsi, lorsqu'on écrit :
#include "myheader.h"

Il faut que le fichier myheader.h se trouve dans le même dossier que le fichier source.


louisdu26 Invité

Citer : Posté le 18/05/2015 19:08 | #


Bonjour, je cherche une librairie me permettant d écrire des lettres les une après les autre et de revenir automatique à la ligne vous en connaissez une ?
En fait c'est pour récupérer des lettre du port tx rx et les affichez a la suite.
Dark storm Hors ligne Labélisateur Points: 11549 Défis: 176 Message

Citer : Posté le 18/05/2015 19:18 | #


Ben t'as l'addin Serial Monitor de Ziqumu qui fait ça directement, mais il n'est pas parametrable on-calc
Finir est souvent bien plus difficile que commencer. — Jack Beauregard


louisdu26 Invité

Citer : Posté le 18/05/2015 19:21 | #


Je l ai vu mais SDK ne veut pas le recompiler et ça librairie ne fonctionne pas sur SDK il me dit que les fonctions n'existe pas.


louisdu26 Invité

Citer : Posté le 18/05/2015 19:28 | #


En faite si j arrivais à recompiler son addin ce serait parfait mais je n y arrive pas si tu as la solution, je la veux bien stp.
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 18/05/2015 19:29 | #


Peut-on avoir les messages d'erreur ?


louisdu26 Invité

Citer : Posté le 18/05/2015 19:57 | #


C:\Users\aclec\Desktop\Sources\compatibilityscripts.cpp(86) : C5020 (E) Identifier "memcpy" is undefined
C:\Users\aclec\Desktop\Sources\compatibilityscripts.cpp(87) : C5020 (E) Identifier "Sleep" is undefined
C:\Users\aclec\Desktop\Sources\compatibilityscripts.cpp(92) : C5020 (E) Identifier "IsKeyDown" is undefined
C:\Users\aclec\Desktop\Sources\compatibilityscripts.cpp(55) : C5550 (W) Variable "sc0015" was set but never used
-florian66- Hors ligne Ancien rédacteur Points: 2370 Défis: 20 Message

Citer : Posté le 18/05/2015 20:03 | #


Tu as mis #include "fxlib.h" ?
In Arch, I trust ! And you ?


louisdu26 Invité

Citer : Posté le 18/05/2015 20:14 | #


oui
Dark storm Hors ligne Labélisateur Points: 11549 Défis: 176 Message

Citer : Posté le 18/05/2015 20:17 | #


Tu l'a bien mis dans "compatibiltyscripts.cpp" et non dans les fichiers du projet du SDK (dans les préférences du projet, on ne met que les .c / .cpp) ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard


louisdu26 Invité

Citer : Posté le 18/05/2015 20:20 | #


Je doit mettre #include "fxlib.h" ds compatibility script ?
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 18/05/2015 20:21 | #


oui , tu dois mettre #include "mon_fichier" dans chacun de tes fichiers où tu veux utiliser les fonctions (ou autres composants tel que les macros, les énumerations, les structures, etc ) définies dans le fichier mon_fichier
Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22, 23 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 v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 42 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