掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB6 MSCommでCOM3以降を使うと出る「実行時エラー 9」の回避策は? (ID:88147)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんばんは。 ターゲット機器とRS232で接続し、この機器の制御プログラムをVB6で作成しています。ターゲット機器とは、バイナリでの通信で、簡単なプロトコルを使います。 PCに標準で実装されているCOM1を使って問題なく通信できて(ターゲット機器の制御が希望通りできて)います。 PCには、COMポートが1つしかないため、複数のターゲットを制御しなければならない理由から、USBからRS232に変換するケーブル(ELECOMのもの)を使っています。 この変換ケーブルを使うと、 "実行時エラー'9': インデックスが有効範囲にありません" というエラーが出てしまいます。 エラーの出る場所は、 RxBuff = MSComm1.Input If Len(Hex$(CStr(RxBuff(1)))) = 1 And Len(Hex$(CStr(RxBuff(2)))) = 1 Then RxBuffData = "0" + Hex$(CStr(RxBuff(1))) + "0" + Hex$(CStr(RxBuff(2))) ElseIf Len(Hex$(CStr(RxBuff(1)))) = 1 And Len(Hex$(CStr(RxBuff(2)))) = 2 Then RxBuffData = "0" + Hex$(CStr(RxBuff(1))) + Hex$(CStr(RxBuff(2))) ElseIf Len(Hex$(CStr(RxBuff(1)))) = 2 And Len(Hex$(CStr(RxBuff(2)))) = 1 Then RxBuffData = Hex$(CStr(RxBuff(1))) + "0" + Hex$(CStr(RxBuff(2))) Else RxBuffData = Hex$(CStr(RxBuff(1))) + Hex$(CStr(RxBuff(2))) End If で、Len(Hex$(CStr(RxBuff(1)))) = 1 And Len(Hex$(CStr(RxBuff(2)))) = 1 Then の部分です。(COM1を使うと、問題なく実行されているようです) ここでやりたいことは ・受信したバイナリデータを、 ・4文字の文字列にする です。 RxBuffDataはString型の変数で、RxBuffは、Byte型の変数です。 これはターゲット機器のレジスタをリードしているコードの一部です。 ターゲット機器は、 ACK + Data_H + Data_L の3バイトを返してきます。 この2バイト目、3バイト目を、16進表記の文字列としてフォームに表示したいために、 このようなコードを入れてあります。 USBからRS232へ変換するケーブルを使うと、このようなエラー発生は既知の問題なのでしょうか? 回避する方法はあるでしょうか? 以上、アドバイス頂ければ幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.