Bonjour, je développe actuellement une application qui devra me permettre de communiquer avec un matériel connecté par liaison série sur mon ordinateur (je simule un "protocole" maître esclave).
Mon matériel a un bus en rs485 que je fais passer dans un adaptateur rs485->rs232 puis l'ordinateur doit simuler l'esclave.
Lorsque j'envoie un caractère en boucle depuis l'esclave et que j'ouvre un hyperterminal, je reçois bien les caractères, mais quand je veux les récupérer par du code (donc dans une console), il ne capte plus aucun caractères.
Mon code pour l'affichage en console est le suivant:
Ouverture de la com:
Code : C++
Ici j'ai bien function Init() [OK].
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 Com = CreateFile( L"COM1:", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(Com == INVALID_HANDLE_VALUE) { printf("Erreur...\n"); } else { printf("function Init() \t [OK]\n"); }
Ensuite, le code que je compile pour lire sur la ligne est le suivant:
Code : C++
ps: Toutes les variables et attributs sont définis, je n'ai pas d'erreur de syntaxe
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 DWORD nRead; while(1) { cMyChar = '0'; if(ReadFile(Com, &cMyChar, //cMyChar vaut 0 du a son initialisation mais ne change pas 1, &nRead, //ici nRead vaut 0, ce qui n'est pas normal 0)) { if(nRead) { printf("%c\n",cMyChar); //cMyChar++; } else //donc le code passe ici et m'affiche l'erreur { printf( "No Char Received before %d ms\n", xTimeOut.ReadIntervalTimeout); //le timeout est de 10000 ms } } else { printf("No Char Received before %lX ms\n",xTimeOut.ReadIntervalTimeout); //le timeout est de 10000 ms }
ps2: L'hyperterminal est fermé lorsque je compile
Je ne comprend donc pas pourquoi je ne peux pas récupérer mes caractères pourtant bien réceptionnés par le port série et affichés dans le terminal.
Merci d'avance pour vos éventuelles réponses.
Cordialement
(l'écriture des caractères se fait en boucle infinie dans mon matériel maître)
Partager