シリアルポート(RS-232C)からデータを読み取るには?

解決


アカツキ  2008-02-06 01:32:41  No: 100217

はじめまして。アカツキです。

vb6で、シリアル(RS-232C)から伝送されたデータを処理するのPGを作っています。
しかし、利用しているパソンコンはRS-232Cのポートがないため、RS-232CからUSBシリアル変換アダプター(USB-RSAQ5)を利用することになりました。

データを取れるかどうかを確認するため、以下のPGを作りました。

Private Sub Form_Load()
    
    MSComm1.CommPort = 4  'RS-232Cポート番号
    MSComm1.Settings = "19200,E,8,1"
    
    MSComm1.InputLen = 0
    MSComm1.InputMode = comInputModeText
    MSComm1.InBufferCount = 0
    
End Sub

Private Sub Command2_Click()
    If MSComm1.PortOpen = False Then
        MSComm1.PortOpen = True
    End If
    
    If MSComm1.InBufferCount > 10 Then
    
        Instring = MSComm1.Input
        
        List1.AddItem Instring
    End If

End Sub

実行したら、いつも

実行時エラー:8020
通信デバイスの読み取り時にエラーが発生しました。

のエラーメッセージが表示しました。

debugすると、
Instring = MSComm1.Input
のとき、エラーが発生

MSComm1.Settings = "19200,E,8,1"の値がいろいろ変わって
テストしましたが、エラーが解決できませんでした。

どなたかいいアイディアがあれば、教えていただくようにお願いします。

追記:
RS-232Cポートがあるパソコンに、データが問題なく取りましたが、
新しいパソコンに変わって、データが取れなくなりました。
USBシリアル変換アダプターのデバイスが一応問題なくインストールしました。


Feb  2008-02-06 01:36:48  No: 100218

USBシリアル変換アダプターを使用時も下記のCOMポート番号で
間違いはありませんか?
コントロールパネルのシステム、デバイスマネージャーで
再度確認して見て下さい。

MSComm1.CommPort = 4  'RS-232Cポート番号


アカツキ  2008-02-06 02:14:46  No: 100219

Febさん、ご返答ありがとうございます。

実行する前、ポート番号がすでに確認しました。
もう一回確認しましたが、以下のように書いてあります。
  拡張ポート(USB-RSAQ5)(COM4)

もし、MSComm1.CommPortが4以外設定すれば、
ポート番号が不正
というようなエラーメッセージが出てきました。


しんご  2008-02-06 10:22:18  No: 100220

同じ内容で2つ投稿されているようですが
どちらで議論を進めるか書き込んでください。
あと、ところどころ日本語がおかしいです・・・

いくつか質問をば。
1.新しいPCのOSとSPは何ですか?
2.「RS-232Cポートがあるパソコン」のOSとSPは何ですか?
3.コマンドプロンプトで「mode」と打って、きちんと認識されているか
    どうかチェックしましたか?
4.新しいPCと同じOSが入っている他のPCでは試しましたか?
5.BIOSの設定には間違いありませんか?
6.他のUSBポートに挿してテストした場合、どうなりますか?


アカツキ  2008-02-06 23:23:15  No: 100221

しんごさん、ご返答ありがとうございます。

確かに、同じ内容で2つ投稿しました。初めての投稿は、追記をプラスしたとき、間違えて"解決"をチェックしました。誤解を招かないように、もう一回投稿しました。できれば、こちらの投稿で、アイデアを頂きたいです。

①新しいPCのOSはVistaです。
  でも、そのUSB-RSAQ5はVistaに対応すると明示しています。
②以前のパソコンのOSはXPでした。
  つい先ほど、別のWin2kのOSが入っているパソコンで試しました。
  問題なくデータを読み取りました。
③MODEコマンドで、ポートを認識されました。
④については、同じOSのマシンがないので、テストできませんでした。
⑤BIOSの設定って、具体的に、どんな設定でしょうか。
⑥他のUSBポートに挿入してテストしても、同じ問題でした。

デバッグしたら、MSComm1.InBufferCount  の値が段々大きくなることが確認しました。
ただ、Instring = MSComm1.Input  でバッファ内のデータを取り込む時、エラーが発生。

ご返答をまたよろしくお願いします。


我龍院  2008-02-07 01:10:56  No: 100222

こちらに乗り換えますね。
>パソコンの設定だったら、どこで設定したらいいのでしょうか。
相手の通信スピード、パリッティの有り無し、データービット等の
設定値を調べ、こちらも同じに"19200,E,8,1"の設定を変えます。
設定が不正だと、あるマシンでは通信が出来て、別なマシンでは
通信が出来ないことはありえます。
USB-RSAQ5の不良も考えられますね、コンピューターが2台あるなら、
片方はUSB-RSAQ5で片方はオンボードの232Cを使えばすぐにわかると
思いますが。


中途半端  2008-02-07 02:42:08  No: 100223

たぶん余計なおせっかいでお邪魔なだけだと思いますが
ハンドシェイクの設定はどうなんでしょうか。
232CもUSBも同一のプログラムで且つイニシャルではハン
ドシェイクの設定は行ってないようなので、初期値(ハ
ンドシェイクなし)の設定だとは思いますが。

Debug.Print MSComm1.Handshaking
で確認してみてください。

ハンドシェイクなしの設定になっているかどうか。
また相手機器との通信仕様がそれでよいのかの確認
も必要では。
古い話なのでウロ覚えですがUSBでのシリアル通信の
場合、コントロールできない制御線がたしか1本あっ
たような記憶があります。


ひでらん  2008-02-07 17:25:42  No: 100224

最近VB6とMSCommを使用してないので的外れかも知れませんが・・・

>MSComm1.InBufferCount  の値が段々大きくなることが確認しました。

InBufferCount値はどの位になっているでしょうか?

USB-RSAQ5で使用されているUSBシリアル変換の半導体がどこの物か
わかりませんが、半導体によって送受信バッファ数に差があります。
私が経験した中で一番小さい物だとUSBシリアル変換器->PC間のバッ
ファ数が128バイトのものがありました。

何がいいたいかというと、変換器側でバッファオーバーフローが
発生してたりしないでしょうか?と・・・。

データサイズを小さくして確認してみてはどうでしょうか?


けみ  2008-02-07 21:00:12  No: 100225

テストプログラムの代わりに
ハイパーターミナルなどで確認してみては?

1.2台PCがあるようなのでクロスケーブルで接続して
  お互いに入力した文字が相手のPCに表示されるか確認してみる。

2.相手側に実機を使ってXPの時とVISTAの時の挙動を確認してみる。
  あ、PC側はハイパーターミナルで。

3.可能であれば信号線(RS・CS・ER)などの状態の比較

まずは機器が正しく動作しているか確認ですね。
>⑥他のUSBポートに挿入してテストしても、同じ問題でした。
があるので機器かサポートしていないピンがあるとかっぽいですけど。


kouhei  2008-02-13 01:12:07  No: 100226

似た現象が起きてるので便乗ですが

MSCOMMを利用したシリアル通信PG、処理は似たようなものとだけ

OS:Vista Business(アップグレード無しのインストール直後)
USBコンバータ:UC-SGT D Version(32bit Vista対応とされています)
ドライバは正常にインストール済み・・・のはず

直にオンボードの232Cへ接続すると正常に動作しますが、
USBコンバータを挟むとアカツキさんと同じ現象が起きますね。
ちなみにXPでは動作確認済み

関係ありそうなMSさんのkb:
http://support.microsoft.com/kb/841700/
http://support.microsoft.com/kb/318784/

USBの不良かもしれないですが、何か仕様勘違いしてるのかなぁ?


アカツキ  2008-02-13 17:44:34  No: 100227

皆さん、いろいろアドバイスいただきまして、本当にありがとうございました。

先日、USB-RSAQ5の製造会社に問い合わせしました。その会社から最新のドライバーソフトをいただきました(そのソフトはインターネット上で公開準備中ですって)。それをインストールすると、無事に通信できました。

今後ともどうぞよろしくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加