|
RS232C というか EIA574 はとても古い規格なので「通信できる状態」というのがそもそも定義されていない。 オイラたちのような組み込み機器開発しているとこでは必要最小限の結線 (GND/TXD/RXD の3本) でのみ PCと機器を接続していたりするけど、そうすると事前に状態を判別するすべが無い、ってことになる。 Try/Catch で囲っても「通信できないこと」が原因で例外になったりはしない。
猫太郎氏の使う機器の仕様によっては事前に判別することができるかもしれないし、できないかもしれない。
というわけで ・最終目的の機器 ・機器と COMx 間を結ぶケーブル ・ COMx 自体の出来 (内蔵シリアルポートと USB/COM 変換器とで挙動が異なることは普通にある) あたりが全部対応しているなら「できる」「その具体的手法は機器やケーブルの仕様で違う」
まあ普通は無理と考えるべきだろう。
普通は何らかのコマンドを送って、一定時間内に返事が無かったら接続されていないと判断するしかないっす。 送信ハンドラ+受信ハンドラ+タイマ、でタイムアウトを実装するってことになるでしょう(コード略)
で、考えなしにコマンドを送ると機器側が動作しちゃったりしていろいろ困ることになったりするかもです。
|