Hallo,
ich habe folgendes problem. Wenn ich die zahlen 0-255 von meinem
mikrokontroller über USART an den PC sende und dort über die libSerial
empfange kommen diese nicht vollständig an.
Es fehlen immer die Zahlen 9-13 und die 32 (dezimal). Dieses Verhalten
habe ich auf zwei unterschiedlichen Rechnern eindeutig reproduzieren
können.
Wenn ich gtkTerm (ein serielles Terminal) zum empfangen der Daten
verwende erscheinen alle Zahlen. Das problem muß also die libSerial
sein.
Kann jemand dieses Problem bestätigen beziehungsweise dem widersprechen?
Ich benutze die libserial-dev 0.5.2-0ubuntu1
Der entsprechende code vom uc:
1 | unsigned char grr=0;
|
2 | for(int i=0; i<256; ++i)
|
3 | {
|
4 | USART_Transmit(grr++);
|
5 | }
|
Und der client für den PC:
1 | SerialStream serialstream;
|
2 |
|
3 | serialstream.Open("/dev/ttyUSB0");
|
4 | //setze parameter (8N1)
|
5 | serialstream.SetBaudRate(SerialStreamBuf::BAUD_115200);
|
6 |
|
7 | serialstream.SetCharSize(SerialStreamBuf::CHAR_SIZE_8);
|
8 | serialstream.SetNumOfStopBits(1);
|
9 | serialstream.SetParity(SerialStreamBuf::PARITY_NONE);
|
10 | serialstream.SetFlowControl(SerialStreamBuf::FLOW_CONTROL_NONE);
|
11 |
|
12 |
|
13 | unsigned char test;
|
14 | for(int i=0; i<256; ++i)
|
15 | {
|
16 | serialstream >> test;
|
17 | cout << test << endl;
|
18 | }
|
Probleme mit der Baudrate sind auzuschließen, da sonstige kommunikation
eigentlich einwandfrei funktioniert.