シリアルポートを使用してスケールからデータを取得するためにvb.netプログラムを作成しようとしています。シリアルポートの奇妙なデータの表示とクラッシュ
私はスケールモデルを知らない、ただ表示モデル:IND231。
問題は、私は愚かなデータを取得することです:
あなたはパテで見たようリフレッシュのみの1行がある:
が、パテのターンは、私が取得する場合、これは
真の重みは最初の2時00分(真ん中)、私の状況では、このラインは爽やかではありませんが、巨大なラインを作り、5~10秒後に、私のプログラムはちょうどクラッシュします。私のプログラムコードは次のとおりです。
Imports AxSerial
Public Class Form1
Dim Q As Queue(Of String) = New Queue(Of String)
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
For Each s In System.IO.Ports.SerialPort.GetPortNames()
lstPorts.Items.Add(s)
Next s
End Sub
Private Sub btnStart_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnStart.Click
Try
If lstPorts.SelectedIndex = -1 Then
MsgBox("Please select a port")
Exit Sub
Else
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = 1
SerialPort1.RtsEnable = False
SerialPort1.PortName = lstPorts.SelectedItem.ToString
SerialPort1.Open()
Timer1.Start()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object,
ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _
Handles SerialPort1.DataReceived
Q.Enqueue(SerialPort1.ReadExisting())
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Timer1.Tick
SyncLock Q
While Q.Count > 0
txtReceived.Text &= Q.Dequeue
End While
End SyncLock
End Sub
Private Sub btnStop_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnStop.Click
SerialPort1.Close()
Timer1.Stop()
End Sub
End Class
これはIND321シリアルポートのパラメータである
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = 1
SerialPort1.RtsEnable = False
RtsEnableとわからないイム、私はこれはのFlowControlだと思います。
パテのようなデータを取得するには何が必要ですか?
あなたは同じデータを取得しているように見えます...あなたのパテは "0000 00"とあなたのテキストボックスも ")0 00 00"と言いますが、その後に戻ります。タイマーが起動するたびにテキストボックスをクリアしてから、新しい値 – SilverShotBee
Smartに更新してください。しかし、今は点滅していて、私は00時、次回は0)、次回は空白のテキストボックスを得る。 –
'ReadLine()'を使ってみてください。 '.Newline'を' vbCr'に設定する必要があるかもしれません。 –