VB拔掉已经打开的串口问题
VB软件打开了某个串口后正在运行,怎么实现当串口线拔掉后该打开的串口也跟着关闭。不然再插回串口线后继续发送数据的时候就会卡机,软件就会没响应了,只能重现打开软件才可以。 VB 串口通信 上位机
[解决办法]
个人认为这个问题需要换个思路,通常情况下串口通信都是一发一收的,如果连续几次通信都超时了,不就可以认为是串口线路不通了?此时关闭串口即可。
[解决办法]
串口开着总在通讯吧,检测到一段时间没通讯就把串口关掉,就像一楼说的。
也可以这样,如果是主动发送的,那就在要发送的时候去开串口,发完就关掉,
如果是被动接收的,还是去改下通讯协议,发个心跳包什么的,多长时间没通讯就关掉。
[解决办法]
Private Sub MSComm_OnComm()
Select Case MSComm1.CommEvent
Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
Case comEventCTSTO ' CTS Timeout。
Case comEventDSRTO ' DSR Timeout。
Case comEventFrame ' Framing Error
Case comEventOverrun '数据丢失。
Case comEventRxParity ' Parity 错误。
Case comEventTxFull '传输缓冲区已满。
Case comEventDCB '获取 DCB] 时意外错误事件
Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive ' 收到 RThreshold # of chars.
Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 '
Case comEvEOF ' 输入数据流中发现 EOF 字符
End Select
End Sub