Lire et afficher donne dans tableau

didi59650 Messages postés 77 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 9 mai 2006 - 10 avril 2006 à 12:35
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012 - 10 avril 2006 à 22:13
l'appareil en voie 11fois 1 octet, je ve lire un part un les octet jusqu'au dernier qui est ("CR" donc $13) puis mettre ces donnes dans un tableau
pour l'instant j'ai tapé (ma ca ne marche) :


var


tableau : array[1..100] of integer;


index,carac : integer;


begin


Timer1.Enabled :=false;


index:=0;


while ( carac<> $13) do


begin


carac := readbyte;


tableau[index]:= carac;


inc(index);


end;


stringGrid2.cells[1,1] := inttostr(tableau[index-2]);
stringGrid2.cells[1,1] := chr(tableau[index-2]);
que dois je afire?

2 réponses

didi59650 Messages postés 77 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 9 mai 2006
10 avril 2006 à 14:19
voici mon programme :
var
Form1: TForm1;
tableau : array[1..10000] of char;


implementation


function Inp32(wAddr: word): byte; stdcall; external 'inpout32.dll';
function Out32(wAddr: word; bOut: byte): byte; stdcall; external 'inpout32.dll';


{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin
Opencom('COM1 :baud=4800 parity=e data=7 stop=2');
TXD(0);
BUFFERSIZE(0);
Label2.caption := 'Vous pouvez maintenant prendre une mesure';
end;


procedure TForm1.Button2Click(Sender: TObject);
var
index,i : integer;
carac : char;


begin


Label2.caption := 'la mesure apparaitra dans 2 secondes...';
index:=0;
TXD(1);
while ( carac <> #13) do
begin
carac := char(readbyte);
inc(index);
tableau[index]:= carac;
end;
TXD(0);
CLEARBUFFER;
Label2.caption := 'Vous pouvez maintenant prendre une autre mesure';
Edit1.Text := '';
for i:=1 to index-1 do
Edit1.Text := Edit1.Text + tableau[i];
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
CloseCOM;
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseCOM ;
end;


end.

le probleme c'est la premiere mesure donne :
yyyyyyyyyyyyyyyyy28.5y6
puis je rappuie sur mon bouton mesure et donne :
28.56
Pui je fais une nouvellle mesure:
yyyyyyyyyy100.y3
pui je rappuie :
100.3

la premiere mesure est toujours fausse. Quelqu'un saurait d'ou vient le probleme??
0
cs_shining Messages postés 304 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 10 mars 2012
10 avril 2006 à 22:13
"tableau : array[1..10000] of char;" wow ça fait beaucoup tu ne trouve pas ? je doute qu'il puisse y avoir une interface electronique avec une telle capacité mets 512 c'est largement suffisant !!!

"Opencom('COM1 :baud=4800 parity=e data=7 stop=2');" 4800 bauds je ne sais pas d'où tu nous sors ça mais bon si tu es vraiment sûr que ton interface communique en 4800 bauds, lecteur de cartes magnetiques ?? lol !!

oui je sais dans les écoles trouve parfois des équipement digne de l'âge de pierre et je sais que quoi je parle car on avait à l'époque de simple TO7 qui est un cousin de l'ancêtre MO5 lol mais bon tant que c'est pas une console Atary2006 ^_^

dans TComport ya un évènement OnRxChar tu pourrais l'utilisé pour syncroniser ta lecture !!! et tu attends d'avoir "x" Octet(s) de ton choix

for i:=1 <=== t'es sur que c'est pas Zero ????????? to index-1 do
Edit1.Text := Edit1.Text + tableau[i];
par ce que ton Index -1 me fait dire que oui !!! et d'un

yyyyyyyyyyyyyyyyy28.5y6 <=== les yyyyy se sonts des caratères nulls normal en fait car tu ne vide pas ton tableau avant la lecture

Donc avant ton "while ( carac <> #13) do" tu mets
FillChar (tableau , SizeOf(Tableau) , 0); là on a un tableau clean

pour le reste "les données aléatoires" bah ma foi t'es vraiment sûr de la config du port ?, j'arrive pas à croire qu'on ce temps les profs demande un tel excercice sans de cachier des charges !!! et au minimum une documentation minimaliste de l'appareil !!! c'est fou ça !!, rien qu'en ma 1er Année electronique on avait 50 pages à digérés pour une boîte noir à base d'ampli opérationel avec comme outil un oscilloscope, et vas-y que je te mette du théorème de thévenin et vas-y que chte mettre du Norton(non pas l'anti-virus lol) et de la loi des noeuds mais au moins on avait des documentations à croire que les bon profs ça ne court plus les rues !!!
au fait ton prof il s'appelerait pas michel ? par le plus grand des hasard ?
dit lui qu'il est cool sont site "http://michelnet.free.fr/" ^_^
0
Rejoignez-nous