0

私のPCで使用可能なCOMポートを確認するための適切なコードを誰か教えてください。TCL初心者です。PC のどの COM ポートがアクセス可能で、シリアル通信に使用できるかを確認したいと考えています。すぐに助けてください。本当に感謝します。

4

1 に答える 1

0

シリアル通信は非常に古いものであり、いくつかのことを前提としていることを覚えておいてください。

  • 接続されたデバイスとホスト コントローラの両方が、リンク パラメータ (ボー レート (速度)、データ ビット数、およびパリティ ビット) に同意します。どちらの当事者も、相手がどのパラメータを使用するように構成されているかを自動的に知る方法はないことに注意してください。
  • デバイスと通信しようとする以外に、デバイスがそこにあることを知る本当の方法はありません。COM ポートに接続されたデバイスのリストに Windows が表示するのは、実際にはそれらのポート用に構成したものですシリアルとして表示される他の種類のデバイス (Bluetooth ドングルや USB モデムなど) がありますが、それらは実際にはシリアル デバイスではなく、それらの COM ポート アクセスはシステムによってエミュレートされます。

ご覧のとおり、実際の COM 接続デバイスについて話している場合、これらのデバイスは列挙をサポートしていないため (たとえば、USB とは対照的に)、質問はあまり意味がないように見えます。

いずれにせよ、あなたが望むことをしようとする次の方法を想像できます:

  1. スキャンするポートの数を考え出します。私の知る限り、WMI などを使用して、 COM ポートに接続された構成済みデバイスのリストをシステムに照会する以外に、どの COM ポートが実際に使用可能かを知る方法はありません。
  2. set f [open {\\.\comN} r+]通常のイディオムを使用して、それらを 1 つずつ開いてみてください。他のデバイスは COM ポートを排他的に開くことができるように見えるため、catchここでエラーが発生する可能性があることを確認してください。
  3. デバイスの回線ステータスを照会します。

    % chan config $f -ttystatus
    CTS 0 DSR 0 RING 0 DCD 0
    

    ポートに接続されているもの (存在する場合) が通信可能であることを示す DSR 信号を探します。

  4. デバイスと通信するか、チャネルを閉じて次のポートに進みます。

thisおよびthisを参照してください(wiki にシリアル通信に関する詳細情報があります。検索してください)。

PSあなたの質問は、一般的な「コードを教えて」症候群のように聞こえます。これを読んで、これを修正してみてください。

于 2012-08-30T12:10:01.257 に答える