readValue из характеристики всегда пусто, но уведомления работают? - PullRequest
0 голосов
/ 02 апреля 2019

Я использую адаптер Bluetooth со шкалой, в веб-приложении с помощью веб-API Bluetooth.

Я могу получить сервис и его характеристику, затем вызвать enableNotifications () и установить обратный вызов для события «характеристическая ценность». Когда я нажимаю «Печать» на шкале, происходит событие, и я могу установить значение в своем приложении. Однако, когда я пытаюсь использовать readValue (), это пустой DataView с длиной байта 20 всех нулей.

Кто-нибудь знает, как получить значение из шкалы, не нажимая кнопку на шкале, чтобы запустить событие?

EDIT: Я использую этот адаптер Bluetooth от serial.io: BlueSnap Smart Bluetooth 4.0 (BLE) Адаптер iOS https://buy.serialio.com/collections/adapters/products/bluesnap-smart-bluetooth-4-0-ble-to-rs232-adapter

1 Ответ

0 голосов
/ 03 апреля 2019

Теперь есть еще информация от вас, я могу попытаться ответить.
В комментарии, который я дал, я предположил, что это BLE-шкала, но это не так. Это шкала, использующая соединение через последовательный порт с BLE-адаптером.
Многие весы используют протокол последовательной связи DB-II.
Чтобы отправить Key-команду, необходимо отправить байтовый массив, содержащий 7 байтов:
Префикс из 2 байтов [SOH] (01h) [STX] (02h),
ID масштаба 1 байт (по умолчанию = 01h), Ключ-команда 1 байт
и суффикс из 3 байтов [ETX] (03h) [EOT] (04h) [LEN] (Общая длина минус 1).
Некоторые шкалы используют HEX-нотацию, другие - просто байты. Вы должны попробовать это.
Чтобы отправить ключевую команду, например, активировать клавишу PRINT, в шестнадцатеричном формате отправьте: 01 02 01 01 03 04 06.
В простых байтах 1211346.

Ключевые команды:

Ноль: 40 ч
ТАРА: 20ч
РЕЖИМ: 10 ч
SET: 08h
ОБРАЗЕЦ: 04 ч
ДЕРЖАТЬ: 02 ч
ПЕЧАТЬ: 01ч

Более подробную информацию можно найти в этом PDF: https://wagicas.pl/download/software/Protocols/DB-II_Serial_Communication_Protocol.pdf

...