Como saber se uma conexão serial é “estabelecida”?

4

Nós temos um dispositivo incorporado baseado no Debian. Ele executa um aplicativo que se comunica com outro equipamento embarcado via serial (RS-232, / dev / ttyS *). Normalmente, isso funciona muito bem. Mas, é claro, às vezes as coisas dão errado e, embora nosso aplicativo ainda possa enviar bytes sem erros, nada volta do outro lado.

Agora eu gostaria de poder distinguir entre

  • [A] A conexão serial é ao vivo / ativada / estabelecida (sei que provavelmente estou usando uma terminologia inadequada) no sentido de que o outro dispositivo está recebendo nossos dados. Mas, por qualquer motivo, o aplicativo no outro dispositivo não nos fala de volta (por exemplo, porque ele falhou).

  • [B] A conexão serial não é ao vivo / acima / estabelecida, por exemplo porque o cabo foi desconectado ou o outro dispositivo perdeu energia.

Existe uma maneira de fazer isso? (como com uma conexão Ethernet, onde é realmente simples dizer se tem ou não link)

Alguns detalhes:

    Chip
  • NS16550A com driver serial8250
  • Debian 7 32 bits
  • O aplicativo é o Python 2.7
por Nils Toedtmann 22.02.2016 / 12:32

2 respostas

3

Não, não há como fazer isso. As conexões seriais são completamente sem estado, tanto do ponto de vista elétrico quanto do software.

    
por 22.02.2016 / 12:35
2

Só para dar uma resposta completamente contraditória ... se o seu software for compatível e sua conexão tiver mais que o número mínimo de pinos, conexões RS-232 pode ter handshaking e controle de fluxo. Seu aplicativo pode verificar se há uma conexão antes do envio, mas parece que não .

    
por 23.02.2016 / 03:53