Was ist der einfachste Weg, um die serielle Schnittstelle unter Linux zu konfigurieren?

13

In der Windows-Eingabeaufforderung zum Konfigurieren einer seriellen Schnittstelle kann ich einfach Folgendes verwenden:

mode com1: 9600,n,8,1

oder um die Konfiguration zu lesen:

mode com1:

Gibt es ähnliche Befehle unter Linux? Was wäre der einfachste Weg, um die serielle Schnittstelle unter Linux zu finden und zu konfigurieren?

Hrvoje T.
quelle
Normalerweise können Sie es direkt in den Anwendungen bearbeiten, die Sie für den Zugriff auf die Seriennummer verwenden, z. B. screen /dev/ttyS0 <baud-rate>(der Standardwert wäre 9600, unabhängig von den systemweiten Einstellungen, nicht einmal sicher, ob solche vorhanden sind)
phk
Ich muss es für die Verwendung eines POS-Druckers konfigurieren.
Hrvoje T
OK, in diesem Fall versuchen Sie die sttyBefehle unter: wiki.openwrt.org/doc/recipes/serialbaudratespeed
phk

Antworten:

26

Mit dem sttyBefehl können Sie solche Parameter einstellen.

Dies zeigt alle Einstellungen an der ersten seriellen Schnittstelle an (ersetzen Sie diese ttyS0durch, ttyUSB0wenn Sie eine serielle USB-Schnittstelle verwenden):

stty -F /dev/ttyS0 -a

Dadurch wird die Baudrate auf 9600, 8 Bit, 1 Stoppbit, keine Parität eingestellt:

stty -F /dev/ttyS0 9600 cs8 -cstopb -parenb

Eine Sache, die die Leute im Allgemeinen verwirrt, ist, dass die meisten seriellen Treiber die Einstellungen auf die Standardeinstellungen zurücksetzen, sobald das Gerät geschlossen wird (dh kein Prozess hat das Gerät mehr geöffnet). Mit dem obigen sttyBefehl werden die Einstellungen festgelegt. Wenn dies erledigt ist, setzt der Treiber sie erneut zurück. Wenn Ihre POS-Software zuerst das Gerät öffnet und dann die sttyEinstellungen vornimmt, sollten diese so lange bestehen bleiben, bis Ihre POS-Software das Gerät wieder schließt (z. B. beim Beenden).

Ich hätte gedacht, dass die POS-Software eine Möglichkeit haben sollte, diese Einstellungen selbst zu konfigurieren. Wenn Sie Ihre eigene Software zum Ansteuern des Druckers schreiben, stellen Sie sicher, dass Sie zuerst das Gerät öffnen und dann den sttyBefehl ausführen .

Möglicherweise müssen Sie auch mit anderen Einstellungen herumspielen, z. B. opostbedeutet dies, dass die Nachbearbeitung der Ausgabe durchgeführt wird. Wenn opostund onlcrbeide gesetzt sind, onlcrwird ein zusätzlicher Wagenrücklauf (0xd) hinzugefügt, wenn ein Zeilenumbruchbyte (0xa) ausgegeben wird, um normalerweise das Drucken von Treppen wie z

This is a line
              This is the next line

Dies kann oder kann nicht sein, was Sie wollen. Wenn Sie eine rohe Eins-zu-Eins-Ausgabe an den Drucker wünschen, schalten Sie diese opostaus (fügen Sie -opostsie den sttyParametern hinzu).

Handshaking (Flusskontrolle) wird ebenfalls gesteuert stty, ohne mehr über den Drucker zu wissen, kann ich nicht sagen, ob Sie etwas einstellen müssen.

Überprüfen Sie die sttyManpage für viele weitere Informationen.

wurtel
quelle