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?
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.
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.
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.