O RS232 não possui nenhum indicador de "presença por cabo". Você está apenas recebendo sinais de transmissão ou metadados (controle), ou não - isso é tudo que você sabe. Se você receber um sinal de entrada (CTS | DSR | CD), você sabe que o cabo está conectado. Se você não receber nenhum sinal de entrada, o estado do cabo é indeterminado e não há como determinar se ele está conectado sem soluções adicionais de hardware - ou se está realizando algum tipo de troca com o dispositivo remoto.
A abordagem usual é realizar algum tipo de transmissão "keep-alive" (mesmo apenas metadados - por exemplo, definir momentaneamente DTR e esperar CTS), mas se a disciplina de protocolo usada pelo software nas duas extremidades do cabo proíbe essa troca ociosa , você está praticamente preso a usar um ferro de solda para prosseguir.
O que você pode tentar, é algum tipo de "demon" adicional que configura um pipe, encaminhando dados entre seu software e o dispositivo físico (em ambas as extremidades), encapsulando-o - e executando "verificações de conexão" se o pipe estiver ocioso.
Deixe-me adicionar uma solução bastante comum: se o seu dispositivo endpoint não usa controle de hardware, você pode reduzir o DTR com CTS dentro do plug no host e usar 'hardware control' no host. A geração de DTR aciona automaticamente o CTS, possibilitando a transmissão, se o cabo estiver presente, para que a transmissão não seja afetada. Entretanto, com o cabo ausente, o sistema reagirá à falta de CTS de uma maneira apropriada para este evento, e. gerando um tempo limite ou suspendendo a transmissão até que o cabo seja conectado.