お世話になります。
VB6でシリアル通信を使ったプログラムを作成しようと思っています。
使用するPCの有効なCOMポートを調べて、コンボボックスに
リストを加えるようなものが出来ればいいと考えています。
調べてみても、いまいちわかりませんでしたのでよろしくお願いいたします。
いろいろありますが、最終的な結論として・・・
本体ポートは列挙できても、拡張ボードやPCMCIAカード
USBアダプタ等でのシリアル通信アダプタは、列挙されない
場合があります。
機器のメーカーのドライバーが正しくレジストリにも登録しな
いのが原因なのですが・・・
一般的には・・・
http://blogs.yahoo.co.jp/sirius_cma1/2519308.html
こんなところでしょうか・・・
以上。参考まで
オショウ様、ご回答ありがとうございます。
ご紹介いただいたサイトを参考に作成してみます。
ご紹介いただいたサイトを参考に機能実現できました。
しかし、下記の疑問が出ましたのでよろしくお願いします。
サンプルでは、WMIというものを使ってUSB変換も取得できるようです。
得られる結果が、文字列("通信ポート (COM1) 通信ポート (COM2)")と
なりますが、こちらを数値(1,2)で取得したいと思います。
WMIというものの話になってしまうのかもしれませんが
文字列を加工するのではなく、ポート番号を取得する方法があれば
よろしくお願いいたします。
Win32_SerialPort を使うと、シリアルポートに関する
パラメータを取得できるようです。
ttp://www.anchorsystems.jp/anchor/ashp/netmon/samples/wmi_hard.html#Win32_SerialPort.htm
上記サイトはVB6用には書かれていませんので、
適宜変換してください。
実際にプログラムを組んでみましたが、
ポート番号を数値で得ることはできませんでした。
"通信ポート (COM1)"以外にも、"COM1"などの情報は得られましたが・・・
コマンドプロンプトから mode と打ってみても
ポート番号を数値で得られないように、無理なのではないでしょうか?
デバイスマネージャでみても、ポート番号は書かれておりませんし、、
ちなみにデバイスマネージャにおいて、COMポート番号割当は
「COM1」のように記述して割当てるようです。(WinXP のお話)
"COM1"などの文字列情報から、数値部分のみを抽出する方法で
ダメなのですか?
しんご様、ご回答ありがとうございます。
ご紹介いただいたサイトを参考にして
objItem.DeviceID
という記述をすれば"COM1"といった情報が得られました。
今回の理想に一番近かったので、これで進めます。
ご回答いただいた方々、ありがとう御座いました。
ツイート | ![]() |