1

私はマゼランスキャナー/スケールを持っています。rs232経由で私のPCに接続されています。ハイパーターミナル プログラムでコマンド S11 + ENTER を送信することで、はかりの重量を読み取ることができます。重量はハイパーターミナルにまったく問題なく表示されます。私の質問は、vb.net コードを使用しているときに重みを読み取れないのはなぜですか。

これまでの私のコードは次のとおりです

Imports System
Imports System.IO.Ports
Imports System.Threading

Public Class Form1
    Dim WithEvents Myport As SerialPort = New System.IO.Ports.SerialPort("COM2", 9600, Parity.Odd, 7, StopBits.One)
    Private Sub btnOpenPort_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenPort.Click
        Try
            If Not Myport.IsOpen Then
                Myport.Open()
                MsgBox("Port Opened")
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub sendCommand_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sendCommand.Click
        Try
            Myport.Write("S11" & vbCr)
            Thread.Sleep(20)
            Myport.ReadTimeout = 500
            TextBox1.Text = Myport.ReadExisting
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

更新: コマンド S334 (スキャナーのビープ音を鳴らす) を送信すると、スキャナーのビープ音が鳴ります。これは、スキャナーとの通信やコマンドの送信に問題がないことを意味します。唯一の問題は、スケールから応答を読み取る方法です。

解決策が見つかりました!!!!! Myport.Handshake = Handshake.RequestToSend 重量とスキャンされたバーコードをキャッチするために、次のイベントも追加する必要が ありました

Private Sub REC(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Myport.DataReceived

    TextBox2.Text &= Myport.ReadTo(Chr(13))
    Try
        TextBox2.Text = TextBox2.Text.Replace("S11", "")
        If TextBox2.Text.Length = 4 Then
            Label1.Text = "Weight: " & TextBox2.Text / 100
        End If
    Catch ex As Exception
    End Try
    Try
        TextBox2.Text = TextBox2.Text.Replace("S08A", "")
    Catch ex As Exception
    End Try
End Sub

私の問題は解決しました!!!

4

1 に答える 1