Nach einigem Suchen habe ich immer noch Probleme mit dem Lesen von Daten von einer seriellen Schnittstelle in VB.Net/VS2010. Ich weiß, dass die serielle Schnittstelle funktioniert, ich kann auf die Schnittstelle schreiben, aber wenn ich von ihr lese, passiert nichts. Ich programmiere erst seit 3 Wochen, also versuche ich immer noch, mich zurechtzufinden.
Das Programm muss laufen, um Daten von einem Türlogger zu erfassen, ich werde dann die Daten in eine Datenbank ausgeben (noch nicht implementiert - ich möchte diesen Teil zuerst sortiert bekommen). Ich habe versucht, mehrere Terminalprogramme sowie ein anderes Gerät zu verwenden, das Daten auf der seriellen Leitung ausgibt, wobei im Textfeld nichts angezeigt wird tbxIn
.
Für jede Hilfe wären wir Ihnen sehr dankbar.
Der Code steht unten:
Imports System.IO.Ports
Imports System.IO.Ports.SerialPort
Public Class Form1
Dim comPort As IO.Ports.SerialPort = Nothing
Dim sComPort As String = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerialPortNames()
End Sub
Sub GetSerialPortNames()
' Show all available COM ports.
For Each sp As String In My.Computer.Ports.SerialPortNames
lstPorts.Items.Add(sp)
Next
End Sub
Private Sub lstPorts_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstPorts.SelectedIndexChanged
sComPort = lstPorts.SelectedItem
Button1.Enabled = True
End Sub
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Open the serial port using the OpenSerialPort method
Button1.Enabled = False
Button2.Enabled = True
Try
comPort = My.Computer.Ports.OpenSerialPort(sComPort, 9600, IO.Ports.Parity.None, 8, 1)
' comPort.DtrEnable = True
comPort.ReadTimeout = 500
Do
comPort.WriteLine("Go")
Dim sIncomming As String = comPort.ReadLine()
tbxIn.Text = sIncomming & vbCrLf
Loop
Catch ex As TimeoutException
tbxIn.Text &= "Error: Serial Port Read Timeout" & vbCrLf
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
comPort.Close()
Button1.Enabled = True
Button2.Enabled = False
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
tbxIn.Text = e.ToString
End Sub
End Class