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 ··· 18, 19, 20, 21, 22, 23 Suivante
Dark storm En ligne Labélisateur Points: 11563 Défis: 176 Message

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


Ah, pour le KeyDown c'est sans doute que tu as deux fois la même fonction dans le code. Le tout c'est de savoir où
Une fois que t'en as une, supprime là. (ou commente-la, on ne sait jamais)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard


louisdu26 Invité

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


Je ne vois pas ou


louisdu26 Invité

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


mais comment ça la meme fonction ?
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

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


L'erreur dit que le symbole est défini deux fois : il est donc probable qu'il ait compilé la fonction deux fois. Mais normalement, elle n'apparaît que dans le programme de compatibilité : ce qui est embêtant du coup...


aclec Invité

Citer : Posté le 27/05/2015 13:13 | #


Salut je suis entrain de tester un programme mais sdk ne veut pas le lancer je vous le donne si vous savez quoi faire.

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

/*toute les var que ta besoin*/
char *recupvardeux, *recupvarun, *recupvartrois;
double varun, vardeux, vartrois, result;
int page;
char tab[30];

int AddIn_main(int isAppli, unsigned short OptionNum)
{

    unsigned int key;


    menu();

    while (1){

        if (IsKeyDown(KEY_CTRL_F1))    { Bdisp_AllClr_DDVRAM();  menu(); }
        if (IsKeyDown(KEY_CHAR_1))     { Bdisp_AllClr_DDVRAM();  pageun(); }
        if (IsKeyDown(KEY_CHAR_2) && page == 1)     { Bdisp_AllClr_DDVRAM();  equa("u ?", "r ?", "i ?"); }
        
    }
}


int menu()
{
    PrintMini(29, 4, "Statique Solide", 0);
    Bdisp_DrawLineVRAM(0, 6, 26, 6);
    Bdisp_DrawLineVRAM(102, 6, 127, 6);
    PrintMini(10, 50, "By Pilou & AC!", 0);
    PrintMini(80, 50, "[F1] Menu", 0);
    PrintMini(10, 15, "Methode (P1-2)", 0);
    PrintMini(10, 25, "Exemple (P3-6)", 0);
    PrintMini(10, 35, "Graph   (P6-7)", 0);
}

int pageun()
{
    page = 1;
    PrintMini(10, 10, "Test", 0);

}
int equa(char* phraseun, char* phrasedeux, char* phrasetrois)
{
    EI_init(); // initialisation de la lib
    EI_manage_config(EI_SET_START_MODE, EI_NORMAL); // Mode Chiffre (et pas lettre)
        PopUpWin(6);
        locate(4, 2);
        Print(phraseun);
        locate(4, 4);
        Print(phrasedeux);
        locate(4, 6);
        Print(phrasetrois);

        EI_manage_config(EI_SET_ROW, 3);
        EI_manage_config(EI_SET_COLUMN, 4);
        recupvarun = EI_input_string(10, "0123456789.");
        varun = atof(recupvarun);

        EI_manage_config(EI_SET_ROW, 5);
        EI_manage_config(EI_SET_COLUMN, 4);
        recupvardeux = EI_input_string(10, "0123456789.");
        vardeux = atof(recupvardeux);

        result = varun + vardeux;
            sprintf(tab, "%lf", result);
            PopUpWin(1);
            locate(3, 4);
            Print((unsigned char *)tab);

}


#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
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 27/05/2015 13:32 | #


Merci d'utiliser la balise code (dans la barre d'outils) pour insérer du code.

Par ailleurs, attendre les évènements avec IsKeyDown() est très moche et ne devrait être utilisé que dans les cas où le programme doit continuer à tourner en fond. Sinon, utilise GetKey() pour éviter de consommer très rapidement les piles.

Le reste est propre et normalement correct. Ah si, il faut prototyper les fonctions en début de fichier !


aclec Invité

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


Bon jour, quand je met ceci :
if (mode == 0) { env = "a"; Serial_WriteByte(env); }


Sdk me met :
D:\Caltoche\Mes addins\toki\MonochromeLib.c(90) : C2222 (E) Type not compatible for "="


Une solution ?
Dark storm En ligne Labélisateur Points: 11563 Défis: 176 Message

Citer : Posté le 29/05/2015 21:06 | #


Il faut savoir que "a" ≠ 'a'. Change les guillemets par des apostrophes simples.

En gros "a" est un pointeur sur la chaine "a", alors que 'a' est le code Ascii du caractère.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 30/05/2015 09:12 | #


Utilise la balise code, elle est faite pour ça ^^'

En C, la distinction est faite entre "a" et 'a' : en effet, "a" c'est une chaîne de caractères (terminée par un NUL), donc c'est de type const char * ; alors que 'a' est de type int, il est remplacé à la compilation.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

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


'a' c'est pas plutôt un const char?
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 30/05/2015 14:21 | #


Non, c'est un int Un const int pour être précis.
En C, les caractères sont des int. fgetc() renvoie un int, etc.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 30/05/2015 14:26 | #


Lephenixnoir a écrit :
Non, c'est un int Un const int pour être précis.
En C, les caractères sont des int. fgetc() renvoie un int, etc.


Au temps pour moi, j'ai toujours cru que c'étaient des chars alors merci de l'info


aclec Invité

Citer : Posté le 30/05/2015 19:00 | #


Bonjour, mon code fonctionne mais le port serie ne reçoit pas, aider moi svp.


aclec Invité

Citer : Posté le 30/05/2015 19:01 | # | Fichier joint


Mon script
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 30/05/2015 19:14 | #


Ouah, il faut utiliser moins de variables globales et donner des arguments aux fonctions !

À mon avis, si tu peux déjà nettoyer un peu, ça te permettra d'y voir plus clair pour la liaison série... ^^'
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 10/07/2015 16:50 | #


Salut tout le monde, j'ai un petit soucis qui vient du ciel:
Le code

Le debug m'affiche d'abord 9/25 ce qui est normal.
Mais au second tour dans la boucle, je reçoit 8/115. En ayant fait des tests avec d'autres valeurs, nbShoots prend une valeur aléatoire
Je comprend pas où est mon erreur
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 10/07/2015 18:20 | #


Hmm, tu sais que si tu veux passer un tableau tu peux donner le SpaceInv_Shoot * en argument ? Y'a pas de miracle, regarde : tu n'utilises que *shoots, donc autant donner le pointeur plutôt que son adresse
Passer par adresse n'est utile que sur les objets et variables, jamais sur les pointeurs.

Pour nbshoots, je te conseille de le prendre en int et de renvoyer la valeur modifiée : l'appel est un peu plus lourd mais ça te simplifie le problème.
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 13/07/2015 13:29 | #


Merci j'ai fait ce que t'as dit au final, mais je comprend pas pourquoi mon ancien appel ne fonctionnait pas
Normalement, mon appel était pas mauvais si ?
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 13/07/2015 13:33 | #


Ça fonctionne maintenant ?

À vue de nez, non, ça allait, mais on ne peut pas tout voir comme ça...
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 13/07/2015 13:36 | #


Oui oui ca marche pour la suppression des tirs
Reste un bugs qui fait qu'ils reculent quand il y en a un qui est supprimé

Ajouté le 13/07/2015 à 13:44 :
C'est bon j'ai trouvé, erreur de copie-colle (un j a la place d'un i)
Lephenixnoir Hors ligne Administrateur Points: 22452 Défis: 149 Message

Citer : Posté le 13/07/2015 13:45 | #


Theprog a écrit :
C'est bon j'ai trouvé, erreur de copie-colle (un j a la place d'un i)

Erf, tu parles d'une erreur...
Précédente 1, 2, 3 ··· 10 ··· 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 33 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