Ich habe ein Mikrocontrollergerät, das durch Zeilenumbrüche beendete Zeichenfolgen über den per USB angeschlossenen seriellen Port sendet, und verwende (bisher) minicom
Version 2.6 zum Lesen /dev/ttyACM0
. Ich habe die Terminalanwendung für Zeilenumbrüche eingerichtet, möchte aber, dass sie beim Empfang eines Zeilenvorschubzeichens von meinem seriellen Gerät an den Anfang der nächsten Zeile springt. Kann [und wie] minicom
das funktionieren?
BEARBEITEN: Ich habe auch mir bekannte Methoden wie stty /dev/ttyACM0 ...,inlcr
und ausprobiert screen /dev/ttyACM0 ...,inlcr
, von denen ich weiß, dass sie Optionen haben, um eingehende Zeilenumbrüche in Wagenrücklauf+Zeilenvorschub (CR+LF) zu übersetzen, und keine davon funktioniert. Ich habe auch andere Optionen ausprobiert (wie ocrnl
, falls meine Logik falsch war, nl
und -nl
), keine funktioniert und ich weiß nicht, warum.
Ah, und ich verwende Manjaro 16.06-rc1.
Antwort1
Es hat lange gedauert, aber jetzt bin ich endlich da! Ich musste den Quellcode von Minicom herunterladen, um eine Vorstellung davon zu bekommen, wie ich das ständige Drücken von Ctrl+ Z, U... vermeiden kann. Hier ist er.
minicom
speichert seine Parameter in einer Konfigurationsdatei, die standardmäßig lautet $HOME/.minirc.dfl
. Fügen Sie die folgende Zeile ein:auf den Buchstaben:
pu addcarreturn Yes
und minicom
fügt jetzt allen eingehenden Zeilen einen Wagenrücklauf hinzu. Ich habe keine Ahnung, warum diese Option nicht gleich zusammen mit der Konfigurationsdatei gespeichert wurde, aber, was soll's, ist mir jetzt auch egal!
Beachten Sie, dass jede Option pu
danachgenau 16Zeichen, rechts mit Leerzeichen aufgefüllt.
Antwort2
ANTWORT:
Inminicomdrücken Ctrl+A Z
. Dadurch wird das Menü angezeigt. Dann drücken Sie U
("Add Carriage Ret") undminicomfügt das CR
Symbol automatisch zu jedem LF
Symbol hinzu.
Möglicherweise möchten Sie den Vorgang erneut durchführen, um diese Funktion auszuschalten.
Problemumgehung:
Versuchen Sie, die Zeilen zu senden, die mit "\r\n"
vom Mikrocontroller enden.
\r
bedeutet dieWagenrücklauf(ASCII-Code 13 oder 0xd)
\n
bedeutet dieZeilenvorschuboderNeue Zeile(ASCII-Code 10 oder 0xa)