Guten Tag! Ich möchte Daten von der seriellen Schnittstelle lesen. Die Daten können alle 2 Sekunden gelesen und in einer Datenbank gespeichert werden. Ich habe eine Datagridview verwendet, um sie anzuzeigen und zu speichern. Aber es scheint sehr verzögert zu sein. Ich muss einige Sekunden warten, um auf einen anderen Button klicken zu können. Gibt es andere Möglichkeiten, wie dies zu tun ist? Jede Hilfe würde tun. Vielen Dank!UI ist bei Verwendung der seriellen Kommunikation verzögert.
Imports System.Data.OleDb
Public Class PICtoVB[enter image description here][1]
Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Recto D Sanchez Jr\Desktop\Datalogger GUI\test\test\bin\Debug\database1.accdb"
Dim MyConn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource
Dim timerval As Integer = 0
Private Sub btnconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnconnect.Click
btnconnect.Enabled = False
btnread.Enabled = True
btndisconnect.Enabled = True
SerialPort1.Open()
Timer1.Enabled = True
End Sub
Private Sub btndisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndisconnect.Click
btndisconnect.Enabled = False
btnread.Enabled = False
btnconnect.Enabled = True
Timer1.Enabled = False
SerialPort1.Close()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
timerval = timerval + 1
Dim serialdata1 As String
Dim serialdata2 As String
Dim serialdata3 As String
Dim serialdata4 As String
Try
serialdata1 = SerialPort1.ReadLine.ToString
serialdata2 = SerialPort1.ReadLine.ToString
serialdata3 = SerialPort1.ReadLine.ToString
serialdata4 = SerialPort1.ReadLine.ToString
dgvdata.Rows.Add(serialdata1, serialdata2, serialdata3, serialdata4)
DATALOGBindingSource1.AddNew()
DATETextBox.Text = serialdata1
TIMETextBox.Text = serialdata2
TEMP__C_TextBox.Text = serialdata3
RH____TextBox.Text = serialdata4
DATALOGBindingSource1.EndEdit()
DATALOGTableAdapter1.Update(Database1DataSet1.DATALOG)
Catch ex As Exception
End Try
End Sub
Meinen Sie, ich muss ein anderes Formular erstellen, um die Daten zu lesen? Ich bin immer noch ein Neuling für vb.net. Bitte bei mir tragen. – jaysonpogi
haben Sie versucht, einen Hintergrundarbeiter oder einen anderen Thread zu verwenden? – Werdna
Wenn ich meinte, dass Sie ein anderes Formular erstellen sollten, dann hätte ich gesagt, dass Sie ein anderes Formular erstellen sollten. Was ich sagte, war, dass Sie das 'DataReceived' Ereignis Ihres' SerialPorts' behandeln sollten. Ich sagte das hauptsächlich deshalb, weil Sie das 'DataReceived' Ereignis Ihres' SerialPorts' behandeln sollten. Was genau daran, ein Anfänger zu sein verhindert, dass Sie "Serialport Data Received Event" in Google eingeben? – jmcilhinney