1

Bonjour à tous!!

Alors voilà, j'explique mon problème, en fait, j'aimerai communiquer depuis mon ordinateur sur la calculatrice (TI89) via le cable TIGraphLink pour faire un programme dans le même principe qu'un prog de chat. Le problème, c'est que je ne peux pas faire ça autrement qu'en passant par Virtual TI, et j'aimerai faire ça depuis un logiciel sur ordinateur que je voudrai faire moi même (en C++ de préférence) j'ai regardé le code source de Virtual TI avec C++Builder, j'ai regardé le fichier "link.cpp", en fait il semblerai qu'il écrive normalement sur le port selon une configuration spéciale, mais en essayant de faire la même chose avec hyperterminal, ça ne marche pas sad

N'hésitez pas à répondre si vous pensez avoir une idée car là, ça me rendrait vraimment service.

Merci d'avance

2

Avant tout, lire "TIGCC" dans les nicks, je n'apprécie pas beaucoup... roll

Mais pour répondre à ta question:
Le protocole utilisé par le câble noir n'est pas le protocole série standard (pour des raisons de prix et de vitesse), donc il faut accéder au port directement (ou à travers un driver), pas avec HyperTerminal.
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é

3

bein GCC apprécient TIGCC? tout comme TI? lol

4

Avant tout, lire "TIGCC" dans les nicks, je n'apprécie pas beaucoup...
Membre de l'équipe de TIGCC
Mainteneur du portage Linux/Unix de TIGCC.


Oh, exuses moi, mais je trouve ce logiciel tellement génial que je ne peux plus m'en passer alors, J'ai toujours été en admirations devant ces petits compileurs que des gens font comme ça freeware et qui transforme du code en des suites d'instruction assembleur très complexe...

donc il faut accéder au port directement (ou à travers un driver)

Tu entends quoi par "directement" ???

Je vais me mettre à chercher un driver, j'y avais pas pensé, mais alors, on devrait pourtant bien y arriver avec le code source de Virtual TI pourquoi ça marche pas?

5

l'equipe tigcc n'a pas fait le compilo...

6

Dans link.cpp

static void InitCom(int n)
{
char name[8],str[256];
DCB dcb;

if (n>4)
{
n-=4;
graphLink=0;
}
else
graphLink=1;
if (n>4)
sprintf(name,"LPT%d:",n);
else
sprintf(name,"COM%d:",n);
hCom=CreateFile(name,GENERIC_READ|GENERIC_WRITE,0,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (!hCom)
{
MessageBox(NULL,"Error opening COM port","Error",MB_OK);
return;
}
dcb.DCBlength=sizeof(DCB);
dcb.BaudRate=CBR_9600; dcb.ByteSize=8; dcb.Parity=0;
dcb.StopBits=graphLink?0:1;
dcb.fNull=0; dcb.fBinary=1; dcb.fParity=0;
dcb.fOutxCtsFlow=1; dcb.fOutxDsrFlow=1;
dcb.fDtrControl=0;
dcb.fOutX=0; dcb.fInX=0;
dcb.fErrorChar=0; dcb.fRtsControl=RTS_CONTROL_ENABLE;
SetupComm(hCom,1024,1024);
GetCommState(hCom,&dcb);
sprintf(str,"COM%d: baud=9600 parity=N data=8 stop=1",n);
BuildCommDCB(str,&dcb);
dcb.fNull=0;
SetCommState(hCom,&dcb);
COMMTIMEOUTS to;
to.ReadIntervalTimeout=MAXDWORD;
to.ReadTotalTimeoutMultiplier=0;
to.ReadTotalTimeoutConstant=1000;
to.WriteTotalTimeoutMultiplier=0;
to.WriteTotalTimeoutConstant=0;
SetCommTimeouts(hCom,&to);
error=0;
}



static void SendCom(int ch)
{
if (error) return;
DWORD i;
if (graphLink)
WriteFile(hCom,&ch,1,&i,NULL);
else
{
DWORD startTime=GetTickCount();
for (i=0;i<8;i++)
{
if (ch&1)
cl_setport(2);
else
cl_setport(1);
while (cl_getport()!=0)
{
if ((GetTickCount()-startTime)>250)
return;
}
cl_setport(3);
while (cl_getport()!=3)
{
if ((GetTickCount()-startTime)>250)
return;
}
ch>>=1;
}
}
}




J'ai essayé de réadapter tout ça avec C++Builder5 mais ça marche pas, sûrement une mauvaise manipulation...

7

BenTIGCC
:
Avant tout, lire "TIGCC" dans les nicks, je n'apprécie pas beaucoup...
Membre de l'équipe de TIGCC
Mainteneur du portage Linux/Unix de TIGCC.

Oh, exuses moi, mais je trouve ce logiciel tellement génial que je ne peux plus m'en passer alors, J'ai toujours été en admirations devant ces petits compileurs que des gens font comme ça freeware et qui transforme du code en des suites d'instruction assembleur très complexe...

Merci. smile
donc il faut accéder au port directement (ou à travers un driver)
Tu entends quoi par "directement" ???

Entrée/sortie sur le port matériel correspondant au port série. (Instructions INP et OUT en assembleur, certains compilateurs C proposent des macros de même style.)
Je vais me mettre à chercher un driver, j'y avais pas pensé,

Pour le driver, n'importe quel driver générique qui permet d'accéder directement aux ports matériels (DLPortIO, PortTalk, Port95NT etc.) convient. L'intérêt est que ça marche sous la série Windows NT, qui interdit l'accès direct aux ports.
mais alors, on devrait pourtant bien y arriver avec le code source de Virtual TI pourquoi ça marche pas?

* Tu utilises bien le code pour le bon câble ("gris" ou "noir")?
* Ça marche sous VTI lui-même?
JackosKing
: l'equipe tigcc n'a pas fait le compilo...

En effet, l'équipe à la base de GCC, c'est sur http://gcc.gnu.org/.
Le portage pour le host Win32 n'est pas non plus de nous, c'est sur http://www.mingw.org.
Mais nous, on a fait:
* le portage de GCC pour le target TI-89/92+/V200 (ainsi que TI-92 avec Fargo). Il y a un patchset assez gros, donc ce n'est pas négligeable, même si le processeur 68k était déjà supporté bien avant par GCC (le backend 68k était le premier backend de GCC). Lis le changelog si tu veux savoir tout ce qu'il y a là-dedans.
* le portage des assembleurs GNU as et A68k pour notre target.
* le linker: http://tigcc.ticalc.org/doc/ld.html
* l'IDE: http://tigcc.ticalc.org/doc/ide.html
* TIGCCLIB et la documentation qui va avec.
Bref, tout ce qui est spécifique aux TI-89/92+/V200 relève du travail de notre équipe.
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

Oui, ça marche avec VTI, puisque j'arrive à chatter "comme 2 calculatrice"
Instructions INP et OUT en assembleur


oui, mais on configure pas le port??

sinon, j'utilise le cable "noir" donc j'ai copié le code avec CreateFile et le port com2 donc j'ai remplacé name par "COM2", pour dcb.StopBits j'ai essayé avec 0

et pour écrire j'ai mis

WriteFile(hCom,&ch,1,&i,NULL);

où hCom est une variable globale initialisée avec la première procédure
et où ch est un integer initialisé à 65

Peut être que ça marche que avec BCB3?