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.
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:
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.
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 .