首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

使用MSComm控件读取串口数据时,OnComm只有第一次能读回内容,之后便不再触发了,该怎么处理

2012-01-21 
使用MSComm控件读取串口数据时,OnComm只有第一次能读回内容,之后便不再触发了数据能显示出来,但是只有第一

使用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


热点排行