■ シリアルで転送されたデータを読み取るには?

[Visual Basic Q & A 掲示板] [過去ログの一覧]


アカツキ 2008/02/05(火) 15:55:42 <初心者>
はじめまして。アカツキです。

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"の値がいろいろ変わって
テストしましたが、エラーが解決できませんでした。

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

アカツキ 2008/02/05(火) 16:04:22
[[解決]]

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

アカツキ 2008/02/05(火) 16:07:37
すみません。解決 チェックボックスを間違えてチェックしました。それを削除してください。まだ 解決していません。お願いします。

我龍院 2008/02/05(火) 17:18:06
>MSComm1.Settings = "19200,E,8,1"
この「E」は正しいですか?
普通はノンパリが多いんだけど。

アカツキ 2008/02/05(火) 17:40:13
我龍院さん、ご返答ありがとうございます。

それは、Eとか、Nとか、Oとか、変換しても、問題が解決されませんでした。
また、テスト途中、新しいエラーメッセージが出てきました。

comEventFrame 1004 フレーム エラーです。ハードウェアによってフレーム エラーが検出されました。 

これは、具体的に、どんな意味でしょうか。よろしくお願いします。

我龍院 2008/02/05(火) 18:55:00
>それは、Eとか、Nとか、Oとか、変換しても、問題が解決されませんでした。
そんな乱暴な(笑)、パリティは相手の機器と合わせてください。
ケーブルが長すぎるなんて事はないよね。
コネクタが半分抜けかかってるとか、フレーム エラーってのはそういう
レベルの話です。
両方の機器の設定が合っていて、フレームエラーが出るのでしたら、
ハードウェアーの問題でしょ。

アカツキ 2008/02/06(水) 14:31:56 <初心者>
我龍院さん、ご返答ありがとうございます。

以前のマシンで、MSComm1.Settings = "19200,E,8,1" で、問題なくデータを読み取りました。

今回はパソコンだけ変わったなので、その設定で、問題なくデータを取れると思いました。

>両方の機器の設定が合っていて。。。
パソコンの設定だったら、どこで設定したらいいのでしょうか。
MODE COMx で設定することでしょうか。
一度 MODE COMx コマンドで試したが、問題が解決されませんでした。

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

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library