vba串口通讯实时接收

我的问题是:我用vba与串口通讯,发送操作能实现,但接收总是不行,缓冲区达到设置的字符数但不会触发OnComm事件。请会的人帮我修改一下程序。初始化代码和OnComm代码... 我的问题是:
我用vba与串口通讯,发送 操作能实现,但接收总是不行,缓冲区达到设置的字符数但不会触发OnComm事件。请会的人帮我修改一下程序。初始化代码和OnComm代码如下。

'初始化用户窗体时初始化串口,并打开端口
Private Sub UserForm_Initialize()
On Error GoTo Err1:
Set mscomm1 = CreateObject("MSCOMMLib.MSComm.1")
mscomm1.CommPort = 3 '使用 COM3
mscomm1.Settings = "9600,N,8,1" '9600 波特,无奇偶校验,8 位数据,一个停止位
mscomm1.RThreshold = 1 '缓冲区有1个字节就产生OnComm事件
mscomm1.RTSEnable = True
mscomm1.InputLen = 0 '为 0 时,使用 Input 将使 MSComm 控件读取接收缓冲区中全部的内容。
mscomm1.InputMode = comInputModeText 'Input以二进制形式取回用comInputModeBinary,以文本形式取回是(缺省项)
mscomm1.OutBufferCount = 0 '清空发送缓冲区
mscomm1.InBufferCount = 0 '清空接收缓冲区

If mscomm1.PortOpen = False Then
mscomm1.PortOpen = True
开关.Caption = "断开"
UserForm1.Caption = "当前状态:已连接"
End If
Exit Sub
Err1:
MsgBox "无法打开COM口或该COM口被占用!", vbInformation, "系统提示"
End Sub

'接收到数据时触发OnComm
Private Sub MSComm1_OnComm()
Select Case mscomm1.CommEvent
Case comEvReceive
Dim Buffer As Variant
mscomm1.InputLen = 0
mscomm1.InputMode = comInputModeText
接收区.Value = MSComml.Input
Case Else
End Select
End Sub
展开
 我来答
匿名用户
2015-10-23
展开全部
Private Sub MSComm1_OnComm()
    Select Case MSComm1.CommEvent
        Case comEvReceive   ' 收到 RThreshold # of
            Dim s As String, s2 As String
            s = MSComm1.Input
            s2 = Trim(s)   's2就是接受到的数据
        Case Else
    End Select
End Sub
追问
我现在遇到的问题是不会触发oncomm(),是不是初始化时设置有那里不对?麻烦帮我检查一下。
追答
那你必须要调用MSComm1_OnComm这个过程,比如在某个按钮事件过程或在计时过程。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
八__八
2015-10-22 · 超过77用户采纳过TA的回答
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:144万
展开全部
真是高科技啊,无能为力了。
追问
总有人会的,群众的力量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式