Hallo zusammen,
ich benutze die serielle Schnittstelle unter Linux mit der c-Bibliothek
von folgender Seite:
http://www.teuniz.net/RS-232/
Hier mal mein Testprogramm:
1 | #include <iostream>
|
2 | #include <string>
|
3 | #include <stdint.h>
|
4 | #include "rs232.h"
|
5 |
|
6 | #define BAUDRATE 115200
|
7 | #define PORT 16
|
8 |
|
9 | using namespace std;
|
10 |
|
11 |
|
12 | int main(int argc, char *argv[])
|
13 | {
|
14 |
|
15 | //system("/bin/stty -F /dev/ttyUSB0 115200");
|
16 |
|
17 | // Init RS232:
|
18 | char mode[]={'8','N','1',0};
|
19 | if(RS232_OpenComport(PORT, BAUDRATE, mode))
|
20 | {
|
21 | printf("Can not open COM-port\n");
|
22 | return 0;
|
23 | }
|
24 |
|
25 | uint8_t buf[255];
|
26 |
|
27 | for(uint16_t i = 0 ; i < 255 ; i++)
|
28 | buf[i] = 0xaa;
|
29 |
|
30 |
|
31 | RS232_SendBuf(PORT, buf, 255);
|
32 |
|
33 | RS232_CloseComport(PORT);
|
34 |
|
35 | return 0;
|
36 | }
|
Meine Wunschbaudrate liegt bei 115200 Baud.
Nun zu meinem Problem. Einige Zeichen lang wird mit dieser Baudrate
gesendet, doch nach kurzer Zeit ändert sich die Baudrate durch einen
vorher durchs Terminal mit stty eingestelltem Wert (erfolgte vor
Programmaufruf).
Aber warum ist das so?
Wenn ich vorher die Zeile im Programm mit dem stty-Befehl ausführen
lasse, geht alles wunderbar mit 115200 Baud.
Vielen Dank für Ratschläge!