Terminali seriali

Da GolemWiki.
Versione del 19 mar 2020 alle 22:21 di Giulio (discussione | contributi) (Chiarimenti su standard terminali)
Jump to navigation Jump to search

Golem-template-note-attention.png Appunti con poco filo logico


In questa pagina sono raccolti alcuni suggerimenti da utilizzare per interfacciarsi con device embedded via seriale.

Standard di terminali

I moderni terminali UNIX fanno uso dello standard ANSI X3.64 o di una sua variante:

  • ANSI X3.64: standard che implementa sequenze di escape per inviare comandi terminale remoto. Esempio: per muovere il cursore in alto a sinistra si invia ESC [ 1 ; 1 H , dove ESC [ è la sequenza di escape, 1;1 rappresentano la posizione del cursore (riga;colonna) ed H è il comando "muovi cursore". Una descrizione più estensiva delle sequenze di escape si può trovare alla relativa pagina di wikipedia.
  • DEC VT100: standard il cui nome deriva dal popolare terminale prodotto da DEC. È equivalente al protocollo VT102 (anch'esso prende il nome da un successivo modello di terminale, più economico ma retrocompatibile).
  • xterm: commistione degli standard ANSI e VT-* largamente usato sugli emulatori di terminale Linux. Di uso comune le varianti -color e -color256 che, come suggerisce il nome, supportano le sequenze di escape per cambiare colore al testo.
  • linux: altra variante ANSI compatibile, in voga sui sistemi Linux.

Identificare il proprio standard

Digitare su shell echo $TERM per conoscere il protocollo attualmente in uso. Quando si usa ssh, la variabile TERM viene ereditata in modo da adottare uno standard comune.

Applicativi per comunicazione seriale

  • screen: multiplexer di terminali; consente anche la connessione via seriale usando la sintassi screen /dev/ttyxx baudrate. Supporta gli standard VT100/ANSI. Per l'uso si può far riferimento al prontuario.
  • minicom: programma per comunicazioni seriali. Supporta gli standard VT100/ANSI e gli escape per i colori (con l'opzione --color=on). Dispone inoltre di utilità per lo scambio dati quali ZMODEM, kermit, ... e per la comunicazione con modem AT.
  • miniterm.py: essenziale script python, non implementa gli standard VT100/ANSI ma supporta alcuni escape. Utile per dialogare con sistemi minimali o con microcontrollori.

Troubleshooting

I caratteri da tastiera non vengono inviati e/o sono inviati insieme chiudendo il terminale
sono attivi il controllo di flusso hardware (RTS/CTS) oppure software (XON/XOFF). Disattivare il controllo di flusso e riprovare.
I tasti End, Home, ctrl+arrow non funzionano o restituiscono caratteri non stampabili
editare il file /etc/inputrc ed aggiungere (o decommentare) le righe
# Home, End
"\e[1~": beginning-of-line                                            
"\e[4~": end-of-line                                                  

# Ctrl+arrow shortcuts
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word