1

Je compte faire un jeu avec un mode link, et pour commencer j'essaie de réaliser un programme simple qui envoie/recoit un nombre par le cable...
Le bidule semble être actif (il y a effectivement des données qui sont envoyées puisque le receveur arrete son LIO_RecvData avant les 5 secondes prévues (5s = le "100" de LIO_RecvData (&in_pt, sizeof(short), 100)wink mais:
- les données reçues ne sont pas correctes (en fait il indique toujours 0, mais j'insiste, il recoit qqch (cf au-dessus))
- bien que des link semble fonctionner a moitié (cf au-dessus), le check du link avec OSCheckSilentLink() m'indique toujours 0

Quelqu'un peut il m'aider ?
Voila la source :



#define USE_TI89
#define OPTIMIZE_ROM_CALLS
#define SAVE_SCREEN
#include <tigcclib.h>

void _main(void)
{

short *in_pt ; //pointeur
short inbox=0 ; //variable a recevoir
in_pt = &inbox ; //declaration que in_pt pointe sur inbox

short *out_pt ; //pointeur
short outbox=5 ; //variable a envoyer ( 5 par exemple)
out_pt = &outbox ; //declaration que out_pt pointe sur outbox


clrscr();
FontSetSys(F_4x6) ;
printf(" + : Sends %dn", outbox) ;
printf("Enter: Receivesnn") ;

OSLinkOpen() ; //ouvre la communication

switch(ngetchx())
{
case 13: //touche "ENTER" (reception)
printf ("Inbox :%dn", inbox) ;
printf("Link Status Test... ")
if (OSCheckSilentLink()==0)
printf("Link Silent :-(n") //check de l'etat du link
else printf("Link Active !n")
LIO_RecvData (&in_pt, sizeof (short), 100);
printf ("Inbox: %dn", inbox) ;
ngetchx() ;
break ;


case 43: //touche "+" (envoi)
printf("Link Status Test...")
if (OSCheckSilentLink()==0)
printf("Link Silent :-(n") //check de l'etat du link
else printf("Link Active !n")
LIO_SendData (&out_pt, sizeof outbox);
printf("Data: %d sent !", outbox) ;
ngetchx() ;
break ;
}

}

2

tu le test entre koi et koi ?
entre une Vrai TI et v-ti ? entre une 92+ et une 89 ?
Ancien pseudo : lolo

3

chais pas mais pkoi tu utilise pas OSWriteLinkBlock ? c bien plus pratique

4

Je le teste entre deux VTI 89(sisi, c'est possible et un bete transfert de fichiers marche impeccable...) mais je vais bientot avoir l'occasion de faire des tests entre deux vraies 89

OBZA_Fazer > OSWriteLinkBlock me semble être plus difficile à utiliser, car de plus bas niveau...mais explique toi

5

V-TI <-> V-TI : ca peut venir de la ton bug... pb de timer et tout...

essaye entre 2 vrai calculette, ou meme entre une vrai et v-ti
[edit]Edité par lolo le 04-03-2002 à 17:50:28[/edit]
Ancien pseudo : lolo

6

je sais plus qui c'est, mais je crois que quelqu'un avait écrit tout des exmples de pros utilisant le link...
je me demande si c'est po Thibaut...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

7

Fiou.

8

ben g essayé entre deux vraies 89 et ca fait exactement la meme chose :
le receveur stoppe sa boucle (donc il a bien recu qqch de l'envoyeur) mais la variable qui aurait du etre modifiée indique toujours 0

oki TachMan, je vais essayer de voir ca...merci bcp a toi et a Dolstouf

9

ben c cool tout ca mais dans son exemple de jeu link, y'a pas mal de bidules que je comprends po, et en plus il est en mode kernel/doors, ce qui n'arrange pas les choses pour un débutant comme moi...

y'a pas qq1 qui pourrait m'aider à corriger MON programme ? plz...

merci

10

Au pif, essaye ca :

void _main(void) 
      { 

      short inbox=0 ; //variable a recevoir 
      short outbox=5 ; //variable a envoyer ( 5 par exemple) 


      clrscr(); 
      FontSetSys(F_4x6) ; 
      printf(" + : Sends %dn", outbox) ; 
      printf("Enter: Receivesnn") ; 

      OSLinkOpen() ; //ouvre la communication 

      switch(ngetchx()) 
      { 
      case 13: //touche "ENTER" (reception) 
      printf ("Inbox :%dn", inbox) ; 
      printf("Link Status Test... ") 
      if (OSCheckSilentLink()==0) 
      printf("Link Silent :-(n") //check de l'etat du link 
      else printf("Link Active !n") 
      LIO_RecvData (&inbox, sizeof(short), 100); 
      printf ("Inbox: %dn", inbox) ; 
      ngetchx() ; 
      break ; 


      case 43: //touche "+" (envoi) 
      printf("Link Status Test...") 
      if (OSCheckSilentLink()==0) 
      printf("Link Silent :-(n") //check de l'etat du link 
      else printf("Link Active !n") 
      LIO_SendData (&outbox, sizeof(short)); 
      printf("Data: %d sent !", outbox) ; 
      ngetchx() ; 
      break ; 
      } 

      } 


11

>Cork: en plus il est en mode kernel/doors, ce qui n'arrange pas les choses pour un débutant comme moi...

Il n'y a rien dans TiTron qui nécessite un kernel. Il suffit de remplacer #include <doors.h> par #define SAVE_SCREEN et recompiler et voilà TiTron en _nostub.
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é

12

Et en plus le mode kernel est plus simple (Des protections sautent).