检查VBA中的串行端口是否为空
我想从串行端口通过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_
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”),还有一些“随时可用”的文件。