MSComm 控件提供下列两种处理通讯的方式:

事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

Private Sub MSComm_OnComm ()
   Select Case MSComm1.CommEvent
   \’ Handle each event or error by placing
   \’ code below each case statement

\’ 错误
      Case comEventBreak   \’ 收到 Break。
       Case comEventCDTO   \’ CD (RLSD) 超时。
      Case comEventCTSTO   \’ CTS Timeout。
      Case comEventDSRTO   \’ DSR Timeout。
      Case comEventFrame   \’ Framing Error
      Case comEventOverrun   \’数据丢失。
      Case comEventRxOver\’接收缓冲区溢出。
      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

如果监听过程中设备关闭,可以收到 oncomm事件,CommEvent 的comEventBreak。
ComEventBreak 1001 收到 Break 信号。
但是如果是串口断开,则只能收到ComEvCTS 3 CTS 信号发生变化。
但是刚开始打开串口的时候这个事件就会产生。

所以暂时想不出什么好办法判断监听过程中判断设备有效,除非定时发送指令侦测

原创文章,转载请注明: 转载自YippeeSoft开心软件

本文链接地址: VB MSComm 控件oncomm串口断开

历史博文

标签:, , ,