首页 > 解决方案 > 从 VBA 检查串口是否为空

问题描述

我想通过串行端口的 VBA 从条形码扫描仪读取数据。就其本身而言,我可以使用以下代码来做到这一点。

Sub COM()
Dim COM_Byte As Byte
Dim Input_Buffer As String

    Open "COM7:9600,N,8,1" For Random As #1 Len = 1
    Input_Buffer = ""

    Do
        Get #1, , COM_Byte
        If COM_Byte Then
            If COM_Byte = 13 Then
                Debug.Print Input_Buffer
                Exit Do
            Else
                Input_Buffer = Input_Buffer & Chr(COM_Byte)
            End If
        End If
        Loop
    Close
End Sub

但是,我的问题是带有“Get”的行会阻塞代码,直到数据出现在端口上。有没有办法在执行“Get”之前检查端口上是否有数据?然后我可以让它循环运行,直到数据进入并且仍然能够使用“DoEvents”执行操作。无法手动启动查询。程序必须识别自己何时以及是否有数据可用。

标签: vbaserial-port

解决方案


推荐阅读