vb.net 使用多个serialport串口 控件,互相影响得问题
高手好:
做一个小软件,使用电脑的3个USB分别联接3台串口设备。现在出现了一个很诡异得现象!!!
当我拔掉串口2的设备,串口1端口无法接收设备的返回数据,
也就是 SerialPort1.DataReceived 事件没有反应了。
但是发送数据,串口设备能接收到。
我重复关闭和打开串口尝试重新联接设备,接收数据事件也还是没响应。
唯一只能关闭软件重新运行软件 才能恢复接收数据。
串口设备1的接收事件
Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim ReciveLEN As Integer
Try
ReciveLEN = SerialPort1.BytesToRead
ReDim Preserve ReciveBYTE(ReceiveSUM + ReciveLEN)
SerialPort1.Read(ReciveBYTE, ReceiveSUM, ReciveLEN) '读取缓冲数据
ReceiveSUM += ReciveLEN
If UBound(ReciveBYTE) > 3 Then
If ReciveBYTE(ReceiveSUM - 1) = 10 And ReciveBYTE(ReceiveSUM - 2) = 13 Then
Me.BeginInvoke(New Meterdelegate(AddressOf MeterreceivedDelegate), New Object() {})
End If
End If
Catch ex As Exception
ThreadErr = ("仪表接收线程执行错误1" & ex.ToString)
End Try
End Sub
串口设备2的接收事件
'电源通信接收事件
Private Sub SerialPort2_DataReceived(sender As Object, e As Ports.SerialDataReceivedEventArgs) Handles SerialPort2.DataReceived
Dim ReciveLEN As Integer
Try
ReciveLEN = SerialPort2.BytesToRead
ReDim Preserve PowerReciveBYTE(PowerReceiveSUM + ReciveLEN)
SerialPort2.Read(PowerReciveBYTE, PowerReceiveSUM, ReciveLEN) '读取缓冲数据
PowerReceiveSUM += ReciveLEN
If PowerReciveBYTE(PowerReceiveSUM - 1) = 10 Then
Me.BeginInvoke(New Powerdelegate(AddressOf PowerreceivedDelegate), New Object() {})
End If
Catch ex As Exception
ThreadErr = ("电源接收线程执行错误1" & ex.ToString)
End Try
End Sub