用中断方式
MSComm1.RThreshold = 1
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
MSComm1.RThreshold = 1
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
就楼上的在MSComm控件的OnComm 事件里检测就行
就楼上的在MSComm控件的OnComm 事件里检测就行
Private Sub MSComm1_OnComm()
Dim GetChar As String
Select Case MSComm1.CommEvent
Case comEvReceive
GetChar = MSComm1.Input
...
Case Else
Exit Sub
End Select
或者:
Dim GetChar As String
...
MSComm1.InputLen = 0
do while(mscomm1.CommEvent=comEvReceive)
If MSComm1.InBufferCount Then
GetChar = MSComm1.Input
End If
...
doevents
loopEnd Sub
如果想用循环
Dim GetChar As String
...
MSComm1.InputLen = 0
do while(...)
If MSComm1.InBufferCount Then
GetChar = MSComm1.Input
End If
...
doevents
loopEnd Sub
或者:
Dim GetChar As String
...
MSComm1.InputLen = 0
do while(mscomm1.CommEvent ...)
If MSComm1.InBufferCount Then
GetChar = MSComm1.Input
End If
...
doevents
loopEnd Sub