Hallo, ich versuche gerade auf eine serielle Schnittstelle einen String zu schreiben. Das ganze ist ein Test um mich mit der Programmierung der seriellen Schnittstelle auseinander zusetzen. Die Schnittstelle lese ich über ein zweite serielle Schnittstelle in dem gleichen PC zurück (Nullmodemkabel), zum Zurücklesen der Zeichen benutze ich http://www.brokestream.com/tinyserial.html auf /dev/ttyS4. Leider kommt auf der Gegenseite nur irgendwelcher Zeichensalat an. Das sieht so aus, als würde die Baudrate von 19200Baud nicht stimmen, nur finde ich den Fehler nicht. Bisherige Tests Ich habe die notwendigen Rechte auf allen seriellen Schnittstelle des Systems. Ich habe auf probeweise com /dev/ttyS0 19200 gestartet, dann kommen die Zeichen unverstümmelt an, das Testprogramm war natürlich nicht aktiv. Hänge ich ein ATMEL mit einer kleinen Routine zum Senden von Strings an /dev/ttyS4, kommen die Zeichenkette ebenfalls dort unverstümmelt an. Die Baudrate auf /dev/ttyS4 stimmt also. Irgendein Hinweis, wo mein Denkfehler liegt?
Gast
#3145307
Nimm erst auf beiden Seiten z. B. minicom (oder stty + cat) damit Du weisst dass es beiderseits geht. Dann probiere deinen einen Kram auf einer Seite.
Gast
#3145351
Nimm mal TCSADRAIN oder TCSAFLUSH wenn du die Schnittstellenparameter wieder auf die alten Werte setzt. Ansonsten würde ich empfehlen nie alle Bits der c_*flags Elemente auf einen Schlag zu setzen. Immer mit tcgetattr den alten Wert holen und dann mit &~ und | die gewünschten Bits löschen oder setzen. Zum Setzen der Baudrate sollte man sowieso cfsetispeed/cfsetospeed oder die BSD Erweiterung cfsetspeed benutzen. cfmakeraw ist auch ganz nett.
Gast
#3146486
Eigentlich habe ich mal gedacht, ich habs drauf mit "Serielle Schnittstelle + Unix-Systeme", aber als ich das letzte Mal in der Richtung programmiert habe, wollte es um's verrecken nicht funktionieren. Mein Spicker http://www.tldp.org/HOWTO/Serial-HOWTO.html hat mir auch nicht weiter geholfen. Letzt endlich habe dann doch bei http://www.netzmafia.de/skripten/hardware/Seriell/index.html nachgeschaut und ein Beispielcode mir passend umgebaut.
Gast
#3147810
> Letzt endlich habe dann doch bei > http://www.netzmafia.de/skripten/hardware/Seriell/index.html > nachgeschaut und ein Beispielcode mir passend umgebaut. Hallo, die Lösung des Problems ist aus dem netzmafia Beispiel: bzero(&new_termios, sizeof(new_termios));! Offensichtlich wird die Struktur new_termios nicht initalisiert und dann steht da halt irgendetwas drin. Danke für den Link
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.