- PR -

USBのRS232通信

1
投票結果総投票数:13
Windows 2 15.38%
RS232 8 61.54%
COMException 3 23.08%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
yunamayu
会議室デビュー日: 2005/03/23
投稿数: 7
投稿日時: 2005-03-23 20:09
I-O DATAのUSBタイプのRS232変換器USB-RSAQ2を使ってRS232の通信をしています。
このとき、不用意にUSBハブを使ってつなぎ直すと、COMの番号が勝手に変更され、
その番号にMSCommのポート番号を割り振直しても「COMException」がスローされ、
HRESULTが0x800A1F42のエラーが返されます。
これを回避する方法はありませんでしょうか?
また、0x800A1F42のエラーの意味は何でしょうか?
ちなみに、USB-RSAQ2のデバイスドライバを入れなおしてもダメでした。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-03-23 22:15
USB機器の場合、異なるポートに接続された場合は同一機種でも別のハードウェアとして扱われます。これは別にCOMポートに限った話ではありません。また別のハードウェアとして認識してくれなくては、同一のハードウェアを複数つなぐことが出来なくなります。

MSCommのポート番号を割り当てなおしても・・・と言うことですがどの様な手順で行っているのでしょうか?

COMExceptionのMessageプロパティにもエラー内容は入っていないですか?

yunamayu
会議室デビュー日: 2005/03/23
投稿数: 7
投稿日時: 2005-03-24 08:27
甕星さん、ご返信ありがとうございました。

>USB機器の場合、異なるポートに接続された場合は同一機種でも別のハードウェアと
>して扱われます。これは別にCOMポートに限った話ではありません。また別のハード
>ウェアとして認識してくれなくては、同一のハードウェアを複数つなぐことが出来
>なくなります。

COMを使った通信ソフトを作るとわかるのですが、COM番号が変更されるとその部分の
ソフトを作り直すか、パラメータ化して変更できるようにする必要があります。
今回、6台のCOMをつないでいるので、USBとは言え配線が面倒で、デバック環境と運用
環境が異なるため、今動いていても現場で動かない危険性があり不安があります。
したがって、COMが変更されても再割り当てできればよいのですが、COM番号も256までしか振れないため、どんどん使えないCOMが出来てしまい、問題となります。

>MSCommのポート番号を割り当てなおしても・・・と言うことですがどの様な手順
>で行っているのでしょうか?

ドライバで未使用のCOMに変更ができます。ただし、一旦設定されてしまったCOMは接続する機器が無くてもドライバかレジストリがそのCOMを咥えていて開放してくれません。

>COMExceptionのMessageプロパティにもエラー内容は入っていないですか

出てくるコメントはHRESULTが0x800A1F42だけで、調べましたがわかりませんでした。
たぶん、使用中のCOMに設定しようとしたと言うことではないかと推測しています。
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2005-03-24 13:23
>このとき、不用意にUSBハブを使ってつなぎ直すと、COMの番号が勝手に変更され、

この辺りの詳しい手順と、運用環境について書かれていると、解決策を
提案しやすくなるのですが、どうでしょうか?

もっとも、運用環境でも、USBタイプのRS232変換器を使用しているなら、
解決は非常に難しいのですが(COMの番号が、変わる方が普通です)
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2005-03-24 14:46
今日は

昔、MSComm、USBハブ、USB-RSAQ2を使って複数ポートのアプリケーションを作ったことがあります。
はっきりは覚えていませんが、ハブ経由で複数ポートを再接続するとポート番号が変わったかも知れません。
これは、空いている資源を順番に割り当てる為仕方がないと思います。
現在、USB変換を1個しかない為これで、ハブ無しで確認するとポートは変わりません。
昔の対応は、ア゜リケーション側で通信を試し、自分のポートをサーチさせる機能を実装しました。
現在はMSCommは使っていませんのでエラーは分かりません。
yunamayu
会議室デビュー日: 2005/03/23
投稿数: 7
投稿日時: 2005-03-24 15:05
Lichtensteinさん、rvmxさん、回答ありがとうございました。
メーカにも問い合わせましたが、当たり障りのない回答しかもらえませんでした。
USBでCOMをコントロールするにはデバッグ環境をそのまま現場に持ち込まなくては
だめのようです。
せめて、レジストリの修正方法がわかればたすかるのですが・・・・
USBの仕様とは言え、使いづらいですね。
.NET2005でシリアルコントロールが追加されるらしいので、こちらに期待してみます。
1

スキルアップ/キャリアアップ(JOB@IT)