■ COMポートに何がつながっているか知るには?

[Visual Basic 初心者掲示板] [過去ログの一覧]


すえ太朗 2004/02/09(月) 15:26:46
vb6 COMポートに何がつながっているか知るにはどうすれば良いでしょうか?

岡田 之仁 [E-Mail] 2004/02/09(月) 15:50:50
すごいこと聞きますネ!〜

何かが繋がっていたら、その何かは、何をするものでしょうか?
それを知っているのは、繋いだ人のみですが・・・

因みに可能性を言いますと、デモム関係ですと、CD信号やDTR等
の制御信号をON/OFFすれば、相手もON/OFFしてくるので、何か
が繋がってくるのは解ります。次にATコマンドを発行すれば
応答があれば、ATコマンドに応答する機材であることは解り
ます。ですが、FAXかもしれません・・・FAXであるかど
うかもATコマンドで識別は可能です。

ですが、世の中には、制御線に応答しない、いわゆる
『垂れ流し』
と言うRS-232C機材もあります。
そうしたものには、では、何を送るか?
その機器を知らないことには、コマンドを送ることすらできま
せんが・・・

結果として、何かが繋がっていると言うことは、制御線を持っ
ている場合のみ、何かが繋がっていることは認知が可能です。

他の機材の場合、不可能です。

※ あくまで自分がその何かを知っているので、通信が成立する
  のですから・・・

以上。

すえ太朗 2004/02/09(月) 16:00:46
回答ありがとうございます。
では、RS232ーUSB変換ケーブルをポートに差し込んだ時の、ポート番号を知りたいのですが、デバイスマネージャーのポートを読み込んで処理することも出来ませんか?

岡田 之仁 [E-Mail] 2004/02/09(月) 17:21:28
USBに挿したRS-232C変換アダプタに割り当てられたCOMポート
と言うことであれば・・・

    Dim Serial As SWbemObject
    Dim SerialSet As SWbemObjectSet
    Dim Locator As SWbemLocator
    Dim Service As SWbemServices
    
    Set Locator = New WbemScripting.SWbemLocator
    Set Service = Locator.ConnectServer
    
    Set SerialSet = Service.ExecQuery("Select * From Win32_SerialPort")

    For Each Serial In SerialSet
        Debug.Print Serial.Description
        Debug.Print Serial.DeviceID
        Debug.Print Serial.PNPDeviceID
    Next
    
※ 参照設定で、Microsoft WMI Scripting V1.x Library
  をチェックして下さい。

  WMI関係をインストールしていない場合は・・・

    Dim Serial As Object
    Dim SerialSet As Object
    Dim objWMIService As Object
    Dim strComputer As String
    
    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set SerialSet = objWMIService.ExecQuery("Select * from Win32_SerialPort")
    
    For Each Serial In SerialSet
        Debug.Print Serial.Description
        Debug.Print Serial.DeviceID
        Debug.Print Serial.PNPDeviceID
    Next
    
で、情報は取れます。

● ここで、Win32_SerialPort でヘルプ等から検索して頂きます
  と、中身の他の情報が解ります。

  通常、マシンの設定変更をしていない場合、COM1・COM2は本体
  なので、それ以降が、増設になります。

  ただし、マシンやOSによっては、COM3・COM4が予約になって
  おり、増設が、COM5からの場合もあるのでご注意下さい。

● 取得された情報からUSB経由でのアダプタであろうと、認識
  するしかありませんが・・・

ご検討下さい。

以上。

すえ太朗 2004/02/10(火) 08:21:31
[[解決]]

ありがとうございました。
希望通りに動作しました。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library