RS232 には、いかなる種類の「ケーブル存在」インジケータもありません。送信信号またはメタデータ (制御) 信号を受信しているか、または受信していないか、それがすべてです。入力信号 (CTS|DSR|CD) を受信した場合、ケーブルが接続されていることがわかります。着信信号を受信しない場合、ケーブルの状態は不確定であり、追加のハードウェア ソリューションまたはリモート デバイスとの何らかの交換を実行しない限り、ケーブルが接続されているかどうかを判断する方法はありません。
通常のアプローチは、ある種の「キープアライブ」送信を実行することです (メタデータだけでも - たとえば、DTR を一時的に設定し、CTS を期待します) が、ケーブルの両端でソフトウェアによって使用されるプロトコルの規律がそのようなアイドル交換を禁止している場合は、はんだごてを使って先に進むことにほとんど行き詰まっています。
あなたが試すかもしれないのは、パイプをセットアップし、ソフトウェアと物理デバイスの間でデータを転送し、カプセル化し、パイプがアイドル状態の場合は「接続チェック」を実行する、ある種の追加の「悪魔」です。 /P>
かなり一般的な解決策を 1 つ追加させてください。エンドポイント デバイスがハードウェア制御を使用しない場合、ホスト側のプラグ内で CTS を使用して DTR をショートさせ、ホスト側で「ハードウェア制御」を使用できます。 DTR を生成すると、CTS が自動的に駆動され、ケーブルが存在する場合は伝送が有効になるため、伝送は影響を受けません。一方、ケーブルがない場合、システムはこのイベントに適した方法で CTS の欠如に反応します。タイムアウトを生成するか、ケーブルが差し込まれるまで送信を中断します。