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



现在我正在开发能够连接热敏打印机的web。我使用的是angular framework,并且我使用库ng-thermal-printer成功地将热敏打印机与USB连接。但我希望我的网络也能够通过网络蓝牙连接热敏打印机,这是BLE(蓝牙低能耗(。据我所知,BLE有关贸总协定中的规范,也有其中的服务和特点

到目前为止,我所做的进展是,我可以在名为nRF connect的应用程序的帮助下,使用我的android手机,在Service和Characteristics中连接并向热敏打印机设备发送值,比如Service with UUID AS和Characteristicswith UUID AC。以服务AS为目标,以特征AC发送十六进制值,使我成功地在热敏纸上打印了一些东西。

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

  1. Origin不允许访问任何服务。。。它告诉我在请求时添加optionalServices((
  2. 在属性optionalServices中添加Service AS后,控制台显示错误DOMException:由于未知原因连接失败。在chrome PC和chrome android中都显示了错误

NB:

  • 我已经在chrome上启用了实验Web平台功能
  • 我已启用在chrome上使用Web蓝牙的新权限后端
  • 我已经为从localhost加载的资源启用了允许无效证书。铬
  • 我已启用在chrome上启用新的USB后端
  • 我使用过https

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

我已经解决了这个问题。

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

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

最终,我使用了2个web API。网络蓝牙API,用于从移动设备将我的PWA连接到我的热敏打印机,网络串行API,用于从桌面将我的PWA连接到热敏打印机。ng-thermal-printer图书馆对我的项目很有好处。我只需要延长驾驶时间。

我建议您尝试直接从about:bluetooth-internals页面发送这些十六进制值,看看是否也可以从那里重现连接错误。看见https://web.dev/bluetooth/#tips

如果是,请查看https://www.chromium.org/developers/how-tos/file-web-bluetooth-bugs学习如何正确地归档chromium错误,以便团队能够修复潜在问题。

如果没有,你能分享你的JS代码吗?这样我们就可以帮助你诊断代码中可能出现的问题?

最新更新