Fehlerhafte Baudrate in C-Programm

Gast #4851450
Lesenswert?

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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren