难以通过网络蓝牙连接热敏打印机

Sul*_*rjo 3 javascript progressive-web-apps web-bluetooth angular

现在我正在开发能够连接热敏打印机的网络。我正在使用 Angular 框架,并且我使用库成功将热敏打印机与 USB 连接ng-thermal-printer。但我希望我的网络也能够通过网络蓝牙 BLE(蓝牙低功耗)连接热敏打印机。据我所知,BLE有GATT的规范,有服务和特性。

到目前为止,我所做的进展是,我可以在名为 nRF Connect 的应用程序的帮助下使用我的 Android 手机,在服务和特性中连接并向热敏打印机设备发送值,比方说具有 UUID AS 的服务和具有 UUID AC 的特性。定位服务 AS 并以特征 AC 发送十六进制值使我成功在热敏纸上打印一些内容。

但有一个问题。了解正确的服务和特征后。我在我的项目中实现了它。但是,我的 chrome 浏览器控制台显示错误:

  1. Origin 不允许访问任何服务...它告诉我在 requestiDevice() 时添加可选服务
  2. 在属性 optionServices 中添加 Service AS 后,控制台显示错误 DOMException: 连接因未知原因失败。该错误在 chrome PC 和 chrome android 中均显示。

注意:

  • 我已在 Chrome 上启用实验性 Web 平台功能
  • 我已经在 Chrome 上启用了使用 Web 蓝牙的新权限后端
  • 我已启用“允许从本地主机加载的资源使用无效证书”。在镀铬物上
  • 我已在 Chrome 上启用启用新 USB 后端
  • 我用过https。

附加问题。nRF Connect 应用程序使用的蓝牙连接与 BLE 不同吗?如果是这样,为什么它显示服务和特征?

Sul*_*rjo 5

我已经解决了这个问题。

我使用 2 台设备,我的电脑和 Android 手机。事实上,我的电脑的蓝牙不支持BLE。这就是为什么我一直在努力调试,因为我的桌面版 Chrome 在尝试连接我的热敏打印机后一直没有响应。

基本上,出现错误号 2 是因为我发送了编码字符串值,而不是 UInt8Array 值。

最终,我使用了 2 个 Web API。用于从移动设备将我的 PWA 连接到我的热敏打印机的 Web 蓝牙 API,以及用于从桌面将我的 PWA 连接到我的热敏打印机的 Web 串行 API。图书馆ng-thermal-printer对我的项目很有好处。我只需要扩展驱动程序。