RS232 n'a aucun indicateur de "présence de câble" d'aucune sorte. Vous ne faites que passer des signaux de transmission ou de métadonnées (contrôle), ou vous ne le faites pas - c'est tout ce que vous savez. Si vous recevez un signal entrant (CTS|DSR|CD), vous savez que le câble est connecté. Si vous ne recevez aucun signal entrant, l'état du câble est indéterminé et il n'y a aucun moyen de déterminer s'il est branché sans solutions matérielles supplémentaires - ou d'effectuer une sorte d'échange avec l'appareil distant.
L'approche habituelle consiste à effectuer une sorte de transmission "continue" (même juste des métadonnées - par exemple, définir momentanément DTR et attendre CTS) mais si la discipline du protocole utilisé par le logiciel aux deux extrémités du câble interdit un tel échange inactif, vous ' Je suis pratiquement obligé d'utiliser un fer à souder pour continuer.
Ce que vous pourriez essayer, c'est une sorte de "démon" supplémentaire qui configure un canal, transmettant les données entre votre logiciel et le périphérique physique (aux deux extrémités), l'encapsulant - et effectuant des "vérifications de connexion" si le canal est inactif.
Permettez-moi d'ajouter une solution assez courante :si votre périphérique d'extrémité n'utilise pas de contrôle matériel, vous pouvez court-circuiter DTR avec CTS à l'intérieur de la prise côté hôte et utiliser le "contrôle matériel" côté hôte. La génération de DTR entraîne automatiquement CTS, permettant la transmission, si le câble est présent, de sorte que la transmission n'est pas affectée. Pendant ce temps, sans câble, le système réagira au manque de CTS d'une manière appropriée à cet événement, par ex. générant un délai d'attente ou suspendant la transmission jusqu'à ce que le câble soit branché.