Hoi,
Al een tijdje ben ik aan het proberen een programma te schrijven om een simpele string van HEX characters uit te lezen. Daarvoor gebruik ik de volgende functie:
Nu probeer ik de data uit te lezen door middel van het volgende:
D.m.v. een microcontroller-schakeling stuur ik naar de COM port de volgende string:
0102FF
De output op het scherm van bovenstaande code is echter:
1
0
0
2
ffffffff
0
Als ik d.m.v. debuggen de inhoud van inBuffer bekijk zie ik ook gebeuren dat eerst de 01 wordt ingelezen, en de tweede ronde pas de rest.
Hoe kan dit gebeuren als ik aan de readfile doorgeef dat ik 3 bytes verwacht?
alvast bedankt!
Al een tijdje ben ik aan het proberen een programma te schrijven om een simpele string van HEX characters uit te lezen. Daarvoor gebruik ik de volgende functie:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| int ReadUart(char *buf, int len){ BOOL ret; unsigned long retlen; ret = ReadFile (hCom, // handle of file to read buf, // pointer to buffer that receives data len, // number of bytes to read &retlen, // pointer to number of bytes read NULL // pointer to structure for data ); if(retlen > 0) // data return 1; else return 0; // no data } |
Nu probeer ik de data uit te lezen door middel van het volgende:
C++:
1
2
3
4
5
6
7
8
9
10
11
| while(1){ int BytesRead = 0; char inBuffer[3]; while (BytesRead == 0){ BytesRead = ReadUart(inBuffer,3); } cout << hex << (int)inBuffer[0] << "\n"; cout << hex << (int)inBuffer[1] << "\n"; cout << hex << (int)inBuffer[2] << "\n"; } |
D.m.v. een microcontroller-schakeling stuur ik naar de COM port de volgende string:
0102FF
De output op het scherm van bovenstaande code is echter:
1
0
0
2
ffffffff
0
Als ik d.m.v. debuggen de inhoud van inBuffer bekijk zie ik ook gebeuren dat eerst de 01 wordt ingelezen, en de tweede ronde pas de rest.
Hoe kan dit gebeuren als ik aan de readfile doorgeef dat ik 3 bytes verwacht?
alvast bedankt!