vb.net 使用多个serialport串口 控件,互相影响得问题

gxdhover 2018-08-25 05:54:42
高手好:
做一个小软件,使用电脑的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
...全文
351 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxdhover 2018-08-27
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
每个控件绑定的是不同的串口么?调用serialPort2.Close();再打开

版主按楼上说的解决了, 应该是微软bug.
gxdhover 2018-08-27
  • 打赏
  • 举报
回复
引用 1 楼 zj_zwl 的回复:
这个类有bug(好像.net4.0以后解决了),反正我以前用也有类似问题,


哥们 好牛逼,我改为framework4.5确实好了, 没问题了 ,你台牛逼了, 膜拜你..... 万分感谢,这个问题纠结我一个礼拜了。 祝你好人永远好运。 再次感谢
zj_zwl 2018-08-26
  • 打赏
  • 举报
回复
这个类有bug(好像.net4.0以后解决了),反正我以前用也有类似问题,
threenewbee 2018-08-26
  • 打赏
  • 举报
回复
每个控件绑定的是不同的串口么?调用serialPort2.Close();再打开
gxdhover 2018-08-26
  • 打赏
  • 举报
回复
是吗 我用的确实是.net2.0

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧