投稿者 hori  (社会人) 投稿日時 2015/4/13 12:56:29
VB2010Exにて、自分の店で使うアプリを趣味半分で作っているのですが
先日シリアルポートで電話番号を通知してくれる機械を買いました。
わからないのでメーカーに問い合わせたら
個別の案件には答えられないと、けんもほろろでしたのでここにおずがり致します。

その機械にはテスト送信の機能があって

通信仕様は

規格:仮想COMポート (僕の環境では "COM3" で間違いないはずです)
同期方式:非同期
通信速度:9600bps
ビット長:7
パリティ:偶数
ストップビット:1

で、テスト送信されるデータは、STX(02H)+21キャラクタ+ETX(03H)、とのことです。
                             ↓
(これはアスキー文字列であり、VBの ReadLine() で読み込む時に
TextBox に表示可能な文字に自動変換されるものと認識していますが
それで間違いないでしょうか?)

そこで、Form に Button を貼り付け以下のようなコードを書きました。
(書いたと言ってもMSフォーラムのコピペですが・・・)

=====================================

 Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click

        Dim returnStr As String = ""

        Dim port As SerialPort = New SerialPort("COM3", 9600, Parity.Even, 7, StopBits.One)

        port.Open()

        port.ReadTimeout = 10000

        Try

            Do
                Dim Incoming As String = port.ReadLine()
                If Incoming Is Nothing Then
                    Exit Do
                Else
                    returnStr &= Incoming & vbCrLf
                End If
            Loop

        Catch ex As TimeoutException
            returnStr = "Error: Serial Port read timed out."
        Finally
            If port IsNot Nothing Then port.Close()
        End Try

        MsgBox(returnStr)

 End Sub

==============================================

これを実行し、ボタンを押してタイムアウトまでの間に
件の機械をテスト送信させるのですが 
"Error: Serial Port read timed out."が表示されます。

コードがおかしいとすればどこがおかしいのでしょうか?

コードに問題がなければ機械側の問題ということでしょうか?

ご教示よろしくお願いいたします。