qual è il modo più semplice per configurare la porta seriale su Linux?


13

Nel prompt dei comandi di Windows per configurare una porta seriale, posso usare semplicemente:

mode com1: 9600,n,8,1

o per leggere la configurazione:

mode com1:

Ci sono comandi simili in Linux? Quale sarebbe il modo più semplice per trovare e configurare la porta seriale in Linux?


Normalmente puoi modificarlo direttamente nelle applicazioni che usi per accedere al seriale come, ad esempio screen /dev/ttyS0 <baud-rate>(il valore predefinito sarebbe 9600 indipendentemente dalle impostazioni a livello di sistema, nemmeno sicuro che esistano)
phk

Devo configurarlo per usare una stampante POS.
Hrvoje T,

OK, in tal caso prova i sttycomandi menzionati su: wiki.openwrt.org/doc/recipes/serialbaudratespeed
phk

Risposte:


27

È possibile utilizzare il sttycomando per impostare tali parametri.

Questo mostrerà tutte le impostazioni sulla prima porta seriale (sostituire ttyS0con ttyUSB0se si utilizza una porta seriale USB):

stty -F /dev/ttyS0 -a

Questo imposterà la velocità di trasmissione su 9600, 8 bit, 1 bit di stop, nessuna parità:

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

Una cosa che generalmente confonde le persone è che la maggior parte dei driver seriali ripristinerà le impostazioni ai valori predefiniti una volta chiuso il dispositivo (cioè nessun processo ha più il dispositivo aperto). Quindi il sttycomando sopra imposterà le impostazioni, quindi al termine il driver le ripristinerà nuovamente. Se il software POS viene aperto per la prima volta e si eseguono le sttyimpostazioni, è necessario che rimangano in attesa fino a quando il software POS non chiude nuovamente il dispositivo (ad es. All'uscita).

Avrei pensato che il software POS dovesse avere un modo per configurare queste impostazioni da solo. Se stai scrivendo il tuo software per guidare la stampante, assicurati di aprire prima il dispositivo, quindi esegui il sttycomando.

Potrebbe anche essere necessario giocare con altre impostazioni, ad esempio opostsignifica che verrà eseguito il postelaborazione dell'output. Se oposte onlcrsono entrambi impostati, onlcrverrà aggiunto un ritorno a capo extra (0xd) quando viene emesso un byte newline (0xa), in genere per impedire la stampa di scale come

This is a line
              This is the next line

Questo può o meno essere quello che vuoi. Se si desidera che l'output uno a uno non elaborato per la stampante sia opostspento (aggiungere -opostai sttyparametri).

Anche l'handshaking (controllo del flusso) è controllato stty, senza sapere di più sulla stampante non so dire se è necessario impostare nulla.

Controlla la sttymanpage per molte più informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.