Я решил это с помощью характеристики уведомления. Сначала клиент подписывается на события уведомления на этой CCD, а затем каждая команда, отправленная хосту / устройству, подтверждается хостом, запускающим уведомление. Чтобы лучше синхронизировать команду и ответ, вы можете добавить инкрементный идентификатор команды к каждой команде и сделать так, чтобы идентификатор команды был частью данных уведомления, отправляемых обратно клиенту.
Однако я реализовалэто потому, что мне нужен был ответ после , когда устройство обработало команду, и результаты были отправлены обратно клиенту. Если все, что вы хотите знать, это то, получил ли хост команду, CCD с записью с ответом - это путь.
Я посмотрел на запись BT с помощью команды ответа, нокажется, что подтверждение этого может быть ниже, чем у приложения.
Действительно, обработчик записи с ответом почти всегда реализуется в стеке BLE, а не на уровне приложения. Однако я не понимаю, почему это будет проблемой;вы должны получать отчеты об ошибках вашего стека BLE в той или иной форме, когда запись с ответом завершается неудачно. Если это блокирующий вызов, он может даже вернуть успешное значение.