- - PR -
COMポートに接続されたことを検出する
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-16 11:25
前の投稿で書いたとおりです。 | ||||||||||||
|
投稿日時: 2007-04-16 22:01
すごく気になったのですが、私だけ?!
機器側が USB なら、PC の USB ポートにつなげばいいのでは? PC 側が USB なら、COM ポートではないのでは?
それってデバイスがそういう機能を持っているのではなく、デバイス ドライバが USB にあがってきた信号を仮想 COM ポートにバイパスしている、ですよね?「USB → COM」な変換器を通すのではなく、USB ポートを使うんだけど、アプリケーションは COM ポートから操作できますよ、ってことですよね? _________________ | ||||||||||||
|
投稿日時: 2007-04-26 13:54
// 引用--------------------------------------------
Jittaさん 4/16投稿 それってデバイスがそういう機能を持っているのではなく、デバイス ドライバが USB にあがってきた信号を仮想 COM ポートにバイパスしている、ですよね?「USB → COM」な変換器を通すのではなく、USB ポートを使うんだけど、アプリケーションは COM ポートから操作できますよ、ってことですよね? 引用--------------------------------------------// そうです。デバイスがCOMとして認識される機能をもっているわけではなく、 当該ドライバがその役割をしています。 | ||||||||||||
|
投稿日時: 2007-04-26 22:40
だったら、ドライバーがそういう情報を公開するかどうか、じゃないですか? USB ポートにデバイスをつないだら、ドライバが COM ポートにマッピングするわけですよね?だったら、ドライバがそのマップを返してくれるなら、取れるのではないでしょうか。 余談: 渋木さんと rvmxさんで、想定している使い方が異なるんじゃないかなぁ? で、USB の機器なんだから、USB ポートで制御する方が楽なんじゃない?と思いました。ハムスターさんは、すでにあるプログラムを使いたい、ってことなんだと思いますけど。 _________________ | ||||||||||||
|
投稿日時: 2007-04-27 00:22
↑は半分正しくて半分間違っています。 ドライバ「だけ」で単なる USB 接続の機器を COM ポートに見せることは出来ません。 「そういう仕様の USB 接続機器」と「その機器に対応したドライバ」の組み合わせによって、はじめて「USB 接続機器」が「(仮想)COM ポート」に見えるのです。
状況説明が足りないので ・通常の COM ポートに制御対象となる機器を接続している。 ・USB シリアル変換ケーブル経由で制御対象の機器を接続している。 ・USB 接続すると仮想 COM ポートに見える機器を接続している。 のどれか分からなかったんですが、どうやら3番目のパターンのようですね。 まぁ、通常の COM ポートなんて見たこともなくて、説明し分ける必要がわからなかったのかもしれませんが。
ドライバレベルで「COM ポート」に見せかけてしまうと、なかなかそうもいかないんですよ。 たまたま必要もあったので少し調べてみましたが、WMI では無理ぽいです。 SetupDiXXX 系の API を使うことになる上、前に書いたようにある程度 DDK レベルの知識が必要です。 | ||||||||||||
|
投稿日時: 2007-04-27 15:52
USBポートを使うんだけど、アプリケーションはCOMポートから操作して、ハード的にRS-232を入出力するようなハードとソフト(ドライバ)とより成るコンポーネントを「USB-シリアル変換器(ケーブル)」と呼んでいると思うのですが。 さて。測定器やなんかを扱う現場でありがちなパターンとしては
じゃないかと思うんですが。 「RS-232コネクタが付いているわけじゃないけど(ドライバとの組み合わせで)USB 接続するとCOM ポートに見える機器」ってのもないわけじゃないですが、RS-232なんていう簡単な(原始的ともいう)、かつ普及して"いた"I/Fだと生のポートをつけちゃうことが多いように思います。産業用の機器の世界では。 #USB接続して+ドライバで仮想HP..じゃなくて仮想GPIBっていうオシロはこないだ使いました。普通GPIBのI/Fなんて入れてないからこれはUSB化する意味大あり。 まぁ、こういう用途(シリアルポートが付いていないPCをシリアルポートのついた機器に繋げる)ですから市販の変換器ではUSBレベルでの仕様の公開や接続を検出したりするAPI(といっていいかな。外部への通知機構)は付いてないんじゃないかと思います(そういう製品ももしかしたらあるかも知れませんが)。 もちろん、変換ICは定番があるみたいですからそれを調べてドライバを自分で書くというのなら何でもありでしょうけど... | ||||||||||||
|
投稿日時: 2007-04-28 07:49
で、今回の場合は、その変換機の RS-232C 端の方に機器が固定的に接続されているようなイメージだと思います。 つまり
の COM ポート版かと。 最近のノートPCには COM ポートが付いてないものが多いので、これはこれでまぁ意味のあることなんでしょう。
えーとね、個々の製品に専用の API が用意されていることはありませんが、「USB-シリアル変換機(の先に制御機器が固定的に接続されているようなものも含めて)」にしたって、結局のところは「USB 機器」なんです。 だから、Windows の DDK レベルの API を使えば列挙できるし、特定の製品を検出することは可能です。 (試してないけど、接続の検知も WM_DEVICECHANGE 他で可能なはずです) 具体的な手順はもう分かってるんですが、結構面倒なんで、元質問者の人が DDK レベルの API を使う気があるのかどうかを知りたいところです。 せっかく情報公開しても「無理なんであきらめます」なんて言われた日には悲しいですから。 [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2007-04-28 08:58 ] | ||||||||||||
|
投稿日時: 2007-04-28 08:11
英語の文書を読み進む気合いがあるか、とかですね(笑) 私は一気にやる気合いがないので分散しています。 _________________ |