Ich versuche, vb.net-Programm zu erstellen, um Daten von Waagen mit der seriellen Schnittstelle zu erhalten.Serial Port seltsame Datenanzeige und Absturz
Ich weiß nicht Waage Modell, nur Modell anzeigen: IND231.
Problem ist, ich dumm Daten erhalten:
aber wenn wiederum auf Putty i diese:
Wie Sie in Kitt sehen gibt es nur eine Linie, die refresh jede Sekunde, das wahre Gewicht ist zuerst zwei 00 (in der Mitte), in meiner Situation ist diese Linie nicht erfrischend, aber mache eine riesige Linie und nach 5-10 s stürzt mein Programm einfach ab.
Mein Programmcode ist:
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
Dies ist IND321 Serial Port Parameter
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = 1
SerialPort1.RtsEnable = False
Ich bin nicht sicher mit RTSEnable, ich denke, das ist Flowcontrol.
Was muss ich korrigieren, um Daten wie Kitt zu bekommen?
Es sieht für mich aus, als ob Sie die gleichen Daten bekommen ... Ihre Putty sagt ") 0 00 00" und Ihre Textbox sagt auch ") 0 00 00", aber es folgt eine Rückkehr. Versuchen Sie, das Textfeld jedes Mal zu löschen, wenn Ihr Timer ausgelöst wird, bevor es mit einem neuen Wert – SilverShotBee
Smart aktualisiert wird. Aber jetzt blinkt es und einmal bekomme ich 00 00, nächstes Mal) 0, und das nächste Mal nur leere Textbox. –
Versuchen Sie es mit 'ReadLine()'. Sie müssen möglicherweise ".Newline" auf "vbCr" einstellen. –