【问题标题】:readValue from characteristic always empty, but notifications work?特征中的读取值始终为空,但通知有效吗?
【发布时间】:2019-08-24 02:13:51
【问题描述】:

我在使用蓝牙 Web API 的 web 应用中使用带有刻度的蓝牙适配器。

我可以获取服务及其特征,然后调用 enableNotifications(),并为“characteristicvaluechanged”事件设置回调。当我按比例上的“打印”时,事件触发,我可以在我的应用程序中设置值。但是,当我尝试使用 readValue() 时,它是一个空的 DataView,字节长度为 20 个全为零。

有人知道如何在不按下秤上的按钮触发事件的情况下从秤中获取值吗?

编辑: 我正在使用来自 serial.io 的蓝牙适配器: BlueSnap 智能蓝牙 4.0 (BLE) 适配器 iOS https://buy.serialio.com/collections/adapters/products/bluesnap-smart-bluetooth-4-0-ble-to-rs232-adapter

【问题讨论】:

  • 我可以想象,您必须先向秤发送命令,然后才能阅读,或者在通知中包含数据。一些秤使用非常简单的协议,只需发送“P”,用于打印或“PS”用于稳定读数或“PI”用于不稳定读数。如果没有任何关于制作模型的规模或所用特征的信息,就没有更多的帮助了。

标签: javascript bluetooth bluetooth-lowenergy bluetooth-gatt


【解决方案1】:

现在有你提供的更多信息,我可以尝试回答。
在我给出的评论中,我认为它是 BLE 规模的,但事实并非如此。它是使用带有 BLE 适配器的串行端口连接的秤。
很多称重秤都使用 DB-II 串行通信协议。
要发送键盘命令,您必须发送一个包含 7 个字节的字节数组:
2个字节的前缀 [SOH] (01h) [STX] (02h),
刻度 ID 1 字节(默认 = 01h), 键盘命令 1 个字节
和3个字节的后缀[ETX] (03h) [EOT] (04h) [LEN](总长度减1)。
一些比例使用 HEX 表示法,另一些只是纯字节。您必须尝试一下。
要发送诸如激活打印键之类的键命令,请以十六进制发送:01 02 01 01 03 04 06。
纯字节 1211346。

键盘命令:

零:40 小时
皮重:20 小时
模式:10 小时
SET : 08h
示例:04 小时
保持:02h
打印:01h

更多信息可以在这个 pdf 中找到: https://wagicas.pl/download/software/Protocols/DB-II_Serial_Communication_Protocol.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2020-02-06
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多