Forum: PC-Programmierung Fehlerhafte Baudrate in C-Programm


von Fragender (Gast)


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!

von S. R. (svenska)


Lesenswert?

Läuft auf der betroffenen seriellen Schnittstelle noch irgendetwas 
anderes (z.B. ein getty oder der Kernel selbst), welches eine Abweichung 
bemerkt und die Schnittstelle zurücksetzt?

von Fragender (Gast)


Lesenswert?

Ich hab zumindest nichts weiteres mit der seriellen gestartet.
Wie finde ich das heraus, ob da nochwas anderes drauf zugreift?

von Fragender (Gast)


Lesenswert?

Geb ich:
1
stty -F /dev/ttyUSB0
in die Konsole ein, so erhalte ich:
1
speed 9600 baud; line = 0;
2
-brkint -imaxbel
Auf genau diese Baudrate wird umgeschaltet...

von Schops (Gast)


Lesenswert?

>Wie finde ich das heraus, ob da nochwas anderes drauf zugreift?

$ fuser <device_or_file>

sollte helfen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.