1、 在 OnComm 事件中接收数据:
这种方式能充分 MSCOMM 控件的特性。OnComm 事件还可以检查和处理通讯错误;可以
通过检查 CommEvent 属性的值来查询事件和错误;对于不定长数据以及对数据进行处理
比较复杂的情况,此法不是很方便。
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 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
2.轮循法采集数据:
A、定时器轮循法
对于数据包方式收发数据以及不需即时响应情况,用轮循法更好些。实际上轮循法最大的
好处在于集中处理数据而且不太占用 CPU。轮循法要注意定时采集的时间片段大小;这里
用二进制收发模式;使属性 RThreshold、SThreshold 为 0,屏蔽 ONCOMM 事件。
InputMode = comInputModeBinary
RThreshold = 0
SThreshold = 0
Private Sub TmrComm_Timer()
'采用轮循法采集数据