Bonjour,
j'ai deux problèmes:
j'envois une commande a un controleur et lui doit me revoyer une trame.
Il envoit la trame mais lettre par lettre et en allant à chaque fois à la ligne.Je crois que c'est le TimeOuts du composant TComPort,le buffer doit certainement considere chaque caractère comme une trame dans l'évènement RxChar. Comment faire pour y remedier.
Mon CodeAussi dans la trame "ETX,Décodeur 232 V.1.0,Cr,STX" je veux juste qu'il m'affiche sur ma ListBox juste "Décodeur 232 V.1.0", il va faloire gerer un pointeur qui va balayer mon buffer je crois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 void __fastcall TMainForm::ComPort1RxChar(TObject *Sender, int Count) { //Fonction permettant la réception des trames char buffer2[255]; char str[255]; unsigned char *buf = new unsigned char [Count]; //Lecture des "Count" octet(s) présent(s) dans le buffer d'entrée et le(s) place dans TrameReception ComPort1->Read(buf,Count); // STX,CARTE SBI232C V1,ETX ComPort1->ClearBuffer (false, true); //buf[Count] = NULL; if(Count < 2) return; if(buf[0] != _STX_) { Terminal->Items->Add("Début de trame erronée!!!"); } if(buf[Count-1] != _ETX_) { Terminal->Items->Add("Fin de trame erronée!!!"); } for(int i=0;i<Count;i++) { memcpy (str,&buf[1],Count-2); sprintf ("%s",str); LedReception->Enabled=true; LedReception->State=lsOn; } Terminal->Items->Add(str); free(buffer2); }
Merci de votre aide.
Partager