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
相关推荐
vb2008串口编程应用实例,SerialPort控件应用
VB2008中的串口编程是一个重要的领域,尤其对于那些需要与硬件设备进行通信的应用程序来说。在VB.NET中,SerialPort控件提供了一种方便的方式来处理串行通信。
VB.NET串口助手源码实战:从串口配置到协议解析
串口通信是嵌入式调试的基础,SerialPort类提供了完整的串口操作封装。理解端口参数、DataReceived事件和线程模型是避免数据丢失的关键。在实际工程中,数据分包、编码转换、hex显示和定时发送等问题直接影响调试效率。通过VB.NET WinForms可以快速实现一个可定制的串口调试助手,满足协议解析、日志保存和自动发送等个性化需求,是设备调试和产测中的实用工具。
VB上位机与Modbus Poll联调:协议解析与调试技巧
Modbus是工业自动化领域应用最广泛的通信协议,其RTU和TCP模式在PLC、仪表、传感器等设备中随处可见。对于采用VB开发的工程师而言,掌握从协议帧组装到CRC16校验,再到串口和TCP通信的实现过程,是构建稳定上位机工具的关键。同时,借助Modbus Poll这类主站模拟工具,可以高效验证报文正确性与通信参数配置,显著减少联调时间。本文以VB上位机开发为主线,结合实际工程经验,剖析Modbus RTU帧结构、CRC算法、SerialPort与TcpClient轮询机制,以及Modbus Poll的Se
C#上位机动态图展示:WinForms实时动作可视化与流程回放实现
上位机监控与可视化是工业自动化设备调试中的关键环节,工程师需要将机台实时的轴位置、流程步骤和动作时序转化为直观的动态图形。这背后涉及从数据采集通道到绘图刷新的完整链路:串口、Modbus等协议负责获取底层寄存器数据,WinForms中的Chart控件则通过滚动窗口将离散采样点连成连续轨迹。为保证实时性,生产者-消费者模式被用于隔离后台采集线程与UI绘制线程,从而避免串口阻塞导致的界面卡顿。在调试场景中,结合时间戳校验与流程回放机制,工程师可以快速定位流程停顿点,追溯故障发生前的关键数据。这些技术对于使用C#
[VB.NET源码]界面美化(免费界面控件)
【VB.NET源码】界面美化(免费界面控件)在VB.NET编程中,开发者经常会遇到一个问题,那就是如何让应用程序的用户界面(UI)看起来更加美观、吸引人。


