1
美好的一天! 我想从串口读取数据。数据可以每2秒读取一次并保存到数据库中,幸运的是,我使用了一个datagridview来显示并保存它。但它似乎非常滞后。我必须等待几秒钟才能点击另一个按钮。 如何做到这一点还有其他方法吗? 任何帮助都可以。谢谢!使用串行通信时UI很差
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
你的意思是我需要创建另一种形式来读取数据?我仍然是vb.net的新手。请多多包涵。 – jaysonpogi
您是否尝试过使用后台工作程序或其他线程? – Werdna
如果我的意思是你应该创建另一个表单,那么我会说你应该创建另一个表单。我所说的是你应该处理'SerialPort'的'DataReceived'事件。我说这主要是因为你应该处理'SerialPort'的'DataReceived'事件。作为一个初学者,究竟是什么让你无法在Google中输入“serialport datareceived event”? – jmcilhinney