È possibile utilizzare il stty
comando per impostare tali parametri.
Questo mostrerà tutte le impostazioni sulla prima porta seriale (sostituire ttyS0
con ttyUSB0
se 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 stty
comando 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 stty
impostazioni, è 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 stty
comando.
Potrebbe anche essere necessario giocare con altre impostazioni, ad esempio opost
significa che verrà eseguito il postelaborazione dell'output. Se opost
e onlcr
sono entrambi impostati, onlcr
verrà 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 opost
spento (aggiungere -opost
ai stty
parametri).
Anche l'handshaking (controllo del flusso) è controllato stty
, senza sapere di più sulla stampante non so dire se è necessario impostare nulla.
Controlla la stty
manpage per molte più informazioni.
screen /dev/ttyS0 <baud-rate>
(il valore predefinito sarebbe 9600 indipendentemente dalle impostazioni a livello di sistema, nemmeno sicuro che esistano)