error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached
แล้วพอรันใหม่อีกทีมันมี error ที่บรรทัด Me.Invoke(d, New Object() {buffer}) เขียนว่า
IndexOutOfRangeException was unhandled
Index was outside the bounds of the array
Public Class Form1
Dim rxflag As Boolean
Dim data As String
'Delagate เพื่อใช้ในการชี้ตำแหน่งของ Function หรือ Sub
Dim buffer As String
Private Delegate Sub UpdateTextBox(ByVal recvData As String)
'Sub สร้างไว้เพื่อใช้ในการ update textbox ที่ต้องการ
Private Sub UpdateTextBoxHandler(ByVal recvData As String)
Timer1.Start()
Dim MyInfo As String = recvData
'TextBox3.Text = MyInfo
If MyInfo.StartsWith("N1:") Then
'Dim strData As String = recvData.Substring(3).ToString
Dim N1() As String = recvData.Split(":")
Dim Result() As String = N1(1).Split(",")
TextBox3.Text = Result(0)
TextBox4.Text = Result(1)
Else
Dim N2() As String = recvData.Split(":")
Dim Result() As String = N2(1).Split(",")
TextBox5.Text = Result(0)
TextBox6.Text = Result(1)
End If
Try
Dim fdCon As New MySqlConnection("Database=serialport;Data Source=localhost;User Id=root;Password=1234")
Dim fdCom As New MySqlCommand("", fdCon)
fdCon.Open()
'-- Dim fdRead As OleDb.OleDbDataReader = fdCom.ExecuteReader(mysqlCommandBehavior.CloseConnection)
Dim m_date As String = TextBox1.Text
Dim m_time As String = TextBox2.Text
Dim m_temp As String = TextBox3.Text
Dim m_humi As String = TextBox4.Text
'fdCom.CommandText = "INSERT INTO temp_humi (date,time,temp,humi) VALUES ('" & m_date & "','" & m_time & "','" & m_temp & "','" & m_humi & "')"
' fdCom.ExecuteNonQuery()
'fdCon.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
buffer = buffer & SerialPort1.ReadExisting
Dim iret As Integer
iret = InStr(1, buffer, vbCr)
If iret <> 0 Then
'ตรวจสอบ object Textbox1 ว่าขณะนี้ต้อง invork กลับไป MainThread หรือไม่
If TextBox1.InvokeRequired Then
'สร้าง Delagate และส่งชื่อ Sub ที่ต้องการจะชี้ให้ไปทำงาน
Dim d As New UpdateTextBox(AddressOf UpdateTextBoxHandler)
'ทำการเรียก Sub และส่ง string value
Me.Invoke(d, New Object() {buffer})
'ถ้าอยู่ใน MainThread
Else
'ทำการ เรียก Sub เพื่อ update ได้เลย
UpdateTextBoxHandler(buffer)
End If
buffer = ""
End If
End Sub
โค๊ด serial port ด้านล่างนี้ครับไม่ทราบว่าผิดตรงไหนครับ Code (VB.NET)
Public Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
buffer = buffer & SerialPort1.ReadExisting
Dim iret As Integer
iret = InStr(1, buffer, vbCr)
If iret <> 0 Then
'ตรวจสอบ object Textbox1 ว่าขณะนี้ต้อง invork กลับไป MainThread หรือไม่
If TextBox1.InvokeRequired Then
'สร้าง Delagate และส่งชื่อ Sub ที่ต้องการจะชี้ให้ไปทำงาน
Dim d As New UpdateTextBox(AddressOf UpdateTextBoxHandler)
'ทำการเรียก Sub และส่ง string value
Me.Invoke(d, New Object() {buffer})
'ถ้าอยู่ใน MainThread
Else
'ทำการ เรียก Sub เพื่อ update ได้เลย
UpdateTextBoxHandler(buffer)
End If
buffer = ""
End If
End Sub