使用MSComm控件读取串口数据时,OnComm只有第一次能读回内容,之后便不再触发了
数据能显示出来,但是只有第一次能出数据,之后就不触发MSComm1_OnComm()事件了.
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.RThreshold = 1
MSComm1.DTREnable = True
MSComm1.Settings = "38400,N,8,1 "
MSComm1.InBufferSize = 16
MSComm1.OutBufferSize = 150
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText 'comInputModeBinary '
MSComm1.PortOpen = True
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
End Sub
Private Sub MSComm1_OnComm()
Dim S As String
S = MSComm1.Input
If S <> " " Then
Text3.Text = S & ": " & Timer
End If
End Sub
[解决办法]
串口的OnComm有7种情况触发,你代码中缺乏选择,可能接收中受其它因素干扰。
MSDN解释:
OnComm 常数
常数 值 描述
comEvSend 1 发送事件。
comEvReceive 2 接收事件。
comEvCTS 3 clear-to-send 线变化。
comEvDSR 4 data-set ready 线变化。
comEvCD 5 carrier detect 线变化。
comEvRing 6 振铃检测。
comEvEOF 7 文件结束。
建议代码修改如下:
Private Sub MSComm1_OnComm()
Dim S As String
Select Case MSComm1.CommEvent
Case comEvReceive
S = MSComm1.Input
If S <> " " Then
Text3.Text = S & ": " & Timer
End If
End Select
End Sub