1

我今天遇到了蓝牙和网络应用程序的问题。

介绍

首先,这是我的目标:我想在 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 个不同的状态尝试了这个应用程序:

  1. 使用 Windows 10,在本地(使用 Chrome 开发工具)
  2. 使用 Windows,连接到 rlamotte.github.io
  3. 在我的智能手机上使用 Android 6+,连接到 rlamotte.github.io

在给出我的结果之前,您可以在 Github Rep 中名为“ Device_In_Range_...... ”的图片上看到 windows/android 范围内的每个蓝牙设备

结果

我有这些结果:

  1. 在本地,每次都会找到 KDC 设备(请参阅Request_Device_Result_Windows_Local)。我无法连接到它(请参阅KDC_connect_Windows),因为 Windows 无法连接到 GATT。
  2. 在此页面(请参阅Request_Device_Result_Windows)中,找到 KDC 的时间为 10%,并且需要很长时间才能获得它(大约 1 分钟)。如您所见,Request 找到了 Gwladys 和 81PRMX1。
  3. (请参阅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 以使用本机蓝牙连接。

4

0 回答 0