1

Je voudrais savoir pourquoi la programme suivant ne marche pas ne marche pas // C Source File // Created 30/05/02; 17:42:58 #define USE_TI89              // Produce .89z File #define USE_TI92PLUS          // Produce .9xz File #define OPTIMIZE_ROM_CALLS    // Use ROM Call Optimization #define SAVE_SCREEN           // Save/Restore LCD Contents #include <tigcclib.h>         // Include All Header Files void envoi(const char *var) {      char longs;      longs=(char)strlen(var);      while(OSWriteLinkBlock(&longs,1));                            // Envoie la longueur de la donnée à récuperer      while(OSWriteLinkBlock(var, longs));                          // Envoie la donnée } void recoi(char *var) {      char longs;      while(OSReadLinkBlock(&longs,1)!=1);                          // Récupere la longueur de la donnée      while(OSReadLinkBlock(var, longs)!=(unsigned)longs);          // Récupere la donnée } // Main Function void _main(void) {      short k=0,x;      char buff[128];      unsigned char longs;      OSLinkOpen();                                                 // Ouvre la communication       do      {           clrscr();           memset(buff,0,128);                                        // Efface le buffer           printf("1°/ Envoyern2°/ Reçevoirn");           k=ngetchx();                                               // Choisi si l'on envoie ou si l'on reçoit           clrscr();           switch (k)           {                case '1':                     printf("EnvoinAppuyez sur une touchen");                     sprintf(buff,"%hd",(ngetchx()));                   // Transforme le nombre en chaine de caractères                     longs=(unsigned char)strlen(buff);                     envoi(buff);                     printf("length=%hunEnvoyer: x=%sn",longs,buff);                     /*recoi(buff);                     printf("Réponse:%s",buff);*/                     break;                case '2':                     printf("RéceptionnPatientez...n");                     recoi(buff);                     x=atol(buff);                                        // Transforme la chaîne de caractère en nombre                     printf("Reçu: x=%hdn",x);                     printf("longueur=%lu n",strlen(buff));              // Affiche la longueur de la variable à récuperer                     //strcpy(buff,"bien envoye");                     //envoi(buff);                     break;           }           ngetchx();      }      while (k!=264);      OSLinkClose();                                                    // Ferme la communication                 }
J'obtient un warning à la compilation:
Passing arg 1 of pointer to function discards qualifiers from pointer target type function envoi


Lors de l'exécution la calcultrice envoyante affiche la longueur de la chaîne de carcatère envoyée et le numéro de la touche, mai la calculatrice reçevante ne reçoit rien, ou ets l'erreur dans le prog???

P.S: le ";" qui apparait après le symbole "&" dans les fonctions n'est pas présent dans le vrai code source (ça doit être un bogue du forum)
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

2

Personne ne peux m'aiderconfus
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

3

un peu longue ta src.... jy connai rien aux links, moa jutilise genlib!(elle gère le link...)
avatar
Attention, nouvelle signature #eeek#
https://mastodon.ti-fr.com/@redangel

4

Moi je refuse d'utiliser genlib, extgraphlink et consortnon
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

5

Bon pour faciliter les choses TIGCC me renvoi vers la fin de la ligne
"17: while(OSWriteLinkBlock(var, longs)); // Envoie la donnée"
de la fonction envoi, le curseur est juste à la fin du mot longsconfus
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

6

A savoir aussi que je n'utilisa pas les fonction, mais que j'écris à chaque fois les lignes OS... ça marcheconfus
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

7

Tu utilises quelle version de TIGCC?
Dans TIGCC 0.94 bêta 18, le premier argument de OSWriteLinkBlock est un const char*. Je suppose que dans ta version, c'était un char * seulement. Ignore le warning. Le problème est ailleurs.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

C'est ça qui est faux:
while(OSReadLinkBlock(var, longs)!=(unsigned)longs);
Il faut mettre:
unsigned short n=0;
do n+=OSReadLinkBlock(var+n,longs); while (n<(unsigned short)longs);
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Tu peux m'expliquer en détail le pourquoi???
J'ai TIGCC 0.93
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

10

Déjà, attention, j'avais oublié d'initialiser n (à 0).
slubman
a écrit : Tu peux m'expliquer en détail le pourquoi???

Parce que sinon, tu écris les nouveaux octets par dessus ceux déjà reçus!
Et tu dois aussi penser à bien faire le n+=, parce que tu dois compter la somme de toutes les valeurs renvoyées.
J'ai TIGCC 0.93

C'est assez vieux.
En tout cas, le warning est une erreur dans la version de TIGCCLIB livrée avec TIGCC 0.93, et tu ne dois pas t'en préoccuper.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

Ca marche impec maintenanttop
Kevin Kofler a écrit :
C'est assez vieux. En tout cas, le warning est une erreur dans la version de TIGCCLIB livrée avec TIGCC 0.93, et tu ne dois pas t'en préoccuper.


Je sais mais j'attend plutot l'officiel 0.95 (si elle sort un jour)
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

12

slubman> tu va la mettre ds koi ta routine? c pour remplacer celle de tetris qui fonctionne 1 fois sur 1000000000000000. (dommage que tetris soit en asm pour une fois roll)
avatar
"Je respecte profondément Iggy Pop et Neil Young pour le fait qu'ils n'ont jamais cédé aux compromis et que leur musique a toujours été sauvage. Tout cela n'a rien à voir avec ces Guns N' Roses et autres Metallica qui devraient tous êtres pendus par les couilles, voire castrés... En fait, on devrait leur injecter du silicone dans la poitrine et les envoyer dans un bordel nippon tenu par la mafia locale."

-Kurt Cobain-
(1967-1994)

J'avais une vie... maintenant, j'ai une TI-89.

13

Déja la routine de Tetris fonctionne très bien chez moi!!!

Je compte l'utiliser pour integrer un mode 2 joueurs à mon projet (cf topic: divers->Image de F1), mais avant aussi à V-Rally(ajout d'un mode deux joueurs et de son en mode 1 joueur)top
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti