vb6 COMポートに何がつながっているか知るにはどうすれば良いでしょうか?
編集 削除すごいこと聞きますネ!〜
何かが繋がっていたら、その何かは、何をするものでしょうか?
それを知っているのは、繋いだ人のみですが・・・
因みに可能性を言いますと、デモム関係ですと、CD信号やDTR等
の制御信号をON/OFFすれば、相手もON/OFFしてくるので、何か
が繋がってくるのは解ります。次にATコマンドを発行すれば
応答があれば、ATコマンドに応答する機材であることは解り
ます。ですが、FAXかもしれません・・・FAXであるかど
うかもATコマンドで識別は可能です。
ですが、世の中には、制御線に応答しない、いわゆる
『垂れ流し』
と言うRS-232C機材もあります。
そうしたものには、では、何を送るか?
その機器を知らないことには、コマンドを送ることすらできま
せんが・・・
結果として、何かが繋がっていると言うことは、制御線を持っ
ている場合のみ、何かが繋がっていることは認知が可能です。
他の機材の場合、不可能です。
※ あくまで自分がその何かを知っているので、通信が成立する
のですから・・・
以上。
回答ありがとうございます。
では、RS232ーUSB変換ケーブルをポートに差し込んだ時の、ポート番号を知りたいのですが、デバイスマネージャーのポートを読み込んで処理することも出来ませんか?
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経由でのアダプタであろうと、認識
するしかありませんが・・・
ご検討下さい。
以上。
ありがとうございました。
希望通りに動作しました。