【发布时间】:2020-04-30 20:13:06
【问题描述】:
我必须从蓝牙 SPP 扫描仪获取条形码。我可以打开 com 端口并捕获所有扫描,但是 2 分钟后扫描仪进入睡眠状态。当扫描仪唤醒时,它不再连接,但 com 端口仍然打开。我需要一种方法来确定扫描仪是否仍然连接,或者在扫描仪再次唤醒时是否进入睡眠状态并关闭/重新打开 com 端口。
我在 win10 中将扫描仪与电脑配对,这会创建一个输入 com 端口 (com4)。我可以打开那个端口并收听消息。 问题是,扫描仪只使用一种通信方式,似乎它没有发送任何信息说“我现在断开连接”,它只是进入睡眠状态并断开连接。 有什么方法可以看到扫描仪仍然连接,或者进入睡眠状态,或者任何可以连接的东西? 扫描仪是 WASP WWS550i。
_serialPort = New SerialPort(PortName, BaudRate, Parity.None, 8, StopBits.One)
_serialPort.PortName = PortName
_serialPort.Parity = Parity.None
_serialPort.DataBits = 8
_serialPort.BaudRate = BaudRate
_serialPort.StopBits = StopBits.One
AddHandler _serialPort.DataReceived, AddressOf sp_DataReceived
_serialPort.Open()
Private Sub sp_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
_LastDataReceived = _serialPort.ReadLine()
End Sub
【问题讨论】:
-
DeviceWatcher 可用于 UWP 应用程序。 Enumerate devices 如果是桌面应用程序,请尝试处理NativeWindow 中的 WM_DEVICECHANGE 消息。 Detecting Bluetooth SPP serial port disconnect (C# 4.5 Win 8.1)
-
我试过 WM_DEVICECHANGE 但它没有发送任何关于端口的消息。我猜是因为它是一个虚拟端口,并且扫描仪没有发送任何信息表明它已断开连接。
-
也许是同一个人在 StackOverflow 上提问。 Detecting Bluetooth SPP serial port disconnect (C# 4.5, Windows 8.1) 蓝牙好像没有生成消息。不幸的是,它似乎很难被发现。
-
WM_DEVICECHANGE 并查找 GUID_BLUETOOTH_HCI_EVENT 或 GUID_BLUETOOTH_RADIO_OUT_OF_RANGE:docs.microsoft.com/en-us/windows/win32/bluetooth/…
-
另一个问题不是我问的。但是似乎没有办法检测这种连接的状态,特别是因为它不是 2 路通信。此外,我必须能够随时连接任何条码阅读器,所以我认为它行不通。我现在正在寻找不同的条形码扫描仪,并通过 BLE 进行。还是谢谢