Bonjour,
Suite a un logiciel que j'avai developper a l'epoque en c++ API, qui dialoguer avec un appareil via Port RS485 et des convertisseur RS232 <-> RS485.
J'ai du remettre au gout du jour ce logiciel avec C#.
J'ai donc abandonner les API qui sont trop grossière à écrire pour me concentrer sur la classe System.IO.Ports.SerialPort
Que j'utilise déja pour un appreil en RS485.
Le probleme est le suivant. La trame que j'envoie (dont voici le code) n'est pas reelement envoyée. en fait je ne reçoit que 23 octets au lieu des 26 octets et les 2 premier octets sont erronés.
Donc physiquement a quoi ressemble ma trame ?
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
36 SerialPort Port; // objet du type port COM Port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); // Definition du port : 9600 baudrate, pas de parité, 8 bits et 1 bit de stop Port.ReadTimeout = 100; // 100 ms de temps pour lire le buffer Port.WriteTimeout = 100; // 100 ms de temps d'ecriture du buffer Port.Open(); Port.DiscardInBuffer(); // vide le buffer d'entree (lecture) Port.DiscardOutBuffer(); // vide le buffer de sortie (ecriture) ////////////////////////////////////////////////////// byte[] REQ = new byte[26]; REQ[0] = 0xAA; REQ[1] = 0x00; REQ[2] = 0x82; REQ[3] = 0x02; REQ[4] = 0x00; REQ[5] = 0x00; REQ[6] = 0x00; REQ[7] = 0x00; REQ[8] = 0x00; REQ[9] = 0x00; REQ[10] = 0x00; REQ[11] = 0x00; REQ[12] = 0x00; REQ[13] = 0x00; REQ[14] = 0x00; REQ[15] = 0x00; REQ[16] = 0x00; REQ[17] = 0x00; REQ[18] = 0x00; REQ[19] = 0x00; REQ[20] = 0x00; REQ[21] = 0x00; REQ[22] = 0x00; REQ[23] = 0x00; REQ[24] = 0x00; REQ[25] = 0x2E; Port.Write(REQ, 0, REQ.Length);
Et bien la voici :
Grace a un pc espion qui fonctionne bien (test avec mon ancien logiciel code en API) et qui recupere ma trame je vous montre ce que je récupere :AA 00 82 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E
ça c'est dans le meilleur des cas (car on a 24 octets) dans le pire des cas le début de la trame est aléatoire (et on a que 23 octets) :82 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E
Voila je vous remercie en ésperant l'avis de ce qui ont developper un logiciel avec dialogue rs232.C1 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E
ou encore :
0B 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E
Car je pense qu'il s'agit d'un probleme de configuration
Partager