GNU/Linux >> Linux Esercitazione >  >> Linux

Come faccio a sapere se una porta seriale sta effettivamente trasmettendo dati, senza aprire il dispositivo?

RS232 non ha alcun tipo di indicatore di "presenza cavo". Stai solo ricevendo segnali di trasmissione o metadati (controllo) o no - questo è tutto ciò che sai. Se ricevi un segnale in ingresso (CTS|DSR|CD) sai che il cavo è collegato. Se non ricevi alcun segnale in ingresso, lo stato del cavo è indeterminato e non c'è modo di determinare se è collegato senza soluzioni hardware aggiuntive o effettuando un qualche tipo di scambio con il dispositivo remoto.

L'approccio usuale consiste nell'eseguire una sorta di trasmissione "keep-alive" (anche solo metadati - ad esempio impostare momentaneamente DTR e aspettarsi CTS) ma se la disciplina del protocollo utilizzato dal software alle due estremità del cavo vieta tale scambio inattivo, tu' sei praticamente bloccato con l'utilizzo di un saldatore per procedere.

Quello che potresti provare è una sorta di "demone" aggiuntivo che imposta una pipe, inoltrando i dati tra il tuo software e il dispositivo fisico (su entrambe le estremità), incapsulandoli ed eseguendo "controlli di connessione" se la pipe è inattiva. /P>

Consentitemi di aggiungere una soluzione piuttosto comune:se il vostro dispositivo endpoint non utilizza il controllo hardware, potete cortocircuitare DTR con CTS all'interno della spina sul lato host e utilizzare il "controllo hardware" sul lato host. La generazione di DTR guida automaticamente CTS, abilitando la trasmissione, se il cavo è presente, quindi la trasmissione non viene influenzata. Nel frattempo, con cavo assente, il sistema reagirà alla mancanza di CTS in modo appropriato a questo evento, ad es. generando un timeout o sospendendo la trasmissione finché il cavo non viene collegato.


Linux
  1. Come inviare dati a una porta seriale e vedere qualche risposta?

  2. Come sapere cosa significa 'errno'?

  3. Come posso monitorare i dati su una porta seriale in Linux?

  4. Come posso impostare i bit di parità quando utilizzo lo schermo per accedere a una porta seriale

  5. Come determinare il baud rate di una porta seriale?

Come trovare il numero di porta di un servizio in Linux

Come conoscere i gruppi di un utente Linux

Come modificare la porta SSH in CentOS

Come condividere la connessione Internet?

Come sapere se un disco è un SSD o un HDD

Come fa cat a conoscere il baud rate della porta seriale?