我今天遇到了蓝牙和网络应用程序的问题。
介绍
首先,这是我的目标:我想在 Web 应用程序(可能用 C#、ASP.Net Core 和 JS 编写)中连接 KDC(条形码扫描仪)。您可以在此处找到此扫描仪的型号和特性:koamtac.com/wp-content/uploads/KDC300.pdf。该项目的目标是主要在平板电脑和移动设备上使用该网站,而不是在 windows 上使用扫描仪(但我们也希望能够在计算机上看到该网站)遗憾的是,Koamtac 为 windows 本地应用程序提供了一个 SDK,适用于 Android 应用程序,但并非真正适用于 Web 应用程序...
BLE工具
考虑到这个目标,我发现了 BLE 技术和由 google 提供支持的新 Web Bluetooth API:Google Web Bluetooth API Implementations Status。如您所见,我们可以将它与 windows 一起使用来发现设备,但不能与它们连接。(但对于 android 6+,两者都可以做到)。
这个工具似乎正好符合我的项目,但目前我真的不知道我的 KDC 是否可以用作 BLE 设备。我决定制作一个简单的 Web 应用程序,我可以在其中测试我是否看到(或没有)KDC 设备。
应用
navigator.bluetooth.requestDevice(
{
acceptAllDevices: true,
optionalServices: ['battery_service']
})
.then(device => {
console.log('> Found ' + device.name);
console.log('Connecting to GATT Server...');
return device.gatt.connect();
})
我是在 github 代表上完成的,以获得授权 Web 蓝牙 API 所需的 HTTPS 协议。你可以在这里看到这个应用程序:我的 GitHub 存储库
最后,我用 3 个不同的状态尝试了这个应用程序:
- 使用 Windows 10,在本地(使用 Chrome 开发工具)
- 使用 Windows,连接到 rlamotte.github.io
- 在我的智能手机上使用 Android 6+,连接到 rlamotte.github.io
在给出我的结果之前,您可以在 Github Rep 中名为“ Device_In_Range_...... ”的图片上看到 windows/android 范围内的每个蓝牙设备
结果
我有这些结果:
- 在本地,每次都会找到 KDC 设备(请参阅Request_Device_Result_Windows_Local)。我无法连接到它(请参阅KDC_connect_Windows),因为 Windows 无法连接到 GATT。
- 在此页面(请参阅Request_Device_Result_Windows)中,找到 KDC 的时间为 10%,并且需要很长时间才能获得它(大约 1 分钟)。如您所见,Request 找到了 Gwladys 和 81PRMX1。
- (请参阅Request_Device_Result_Android),从未找到 KDC,并且请求找到了 EST(信标)和 JBL Flip 3(蓝牙扬声器)。
结论:
如您所见,request_device 的结果与 windows 10 和 android 6 不一样。但是当我们使用这些设备的蓝牙管理器时,我们看到的设备完全相同(每个 request_device 找到的设备总和)。
我是蓝牙 API 领域的新手,我不知道为什么 Android 不显示所有带有 request_device 的蓝牙设备。
谢谢你的帮助;)
编辑#1
KDC 300 似乎不支持 BLE。我目前正在寻找一种将蓝牙经典设备连接到网络应用程序的方法。如果有人有想法,你可以告诉我。如果我没有找到任何强大的方法来解决它,我将尝试使用 xamarin 制作一个混合应用程序 android/windows 以使用本机蓝牙连接。