Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查VBA中的串行端口是否为空_Vba_Serial Port - Fatal编程技术网

检查VBA中的串行端口是否为空

检查VBA中的串行端口是否为空,vba,serial-port,Vba,Serial Port,我想从串行端口通过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_

我想从串行端口通过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”执行操作。无法手动启动查询。程序必须识别自己何时以及数据是否可用。

我认为您需要使用系统API函数来实现这一点。有些示例可以在网上获得(请查找“vba串行API”),还有一些“随时可用”的文件。