Проблемы с получением событий нажатия кнопки от кнопки Bluetooth (Jieli-Tech ATG-SJL, iOS)IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с получением событий нажатия кнопки от кнопки Bluetooth (Jieli-Tech ATG-SJL, iOS)

Сообщение Anonymous »

Я работаю над приложением для iOS, которое подключается к кнопочному устройству Bluetooth (ATG-SJL) с помощью CoreBluetooth. В устройстве используется чипсет от Jieli-Tech, и я пытаюсь прослушивать события нажатия кнопок (одинарное нажатие, двойное нажатие, длительное нажатие) через характерный UUID AE42.
Устройство успешно подключается, и я могу обнаружить услуги и характеристики. Однако у меня возникли проблемы с получением уведомлений о событиях нажатия кнопок.
Вот что я сделал на данный момент:
  • Подключился к устройству и обнаружил характеристику AE42.
  • Настройте уведомления для характеристики AE42.
  • Определено несколько шаблонов для обнаружения одиночных, двойных и длительных нажатий на основе данных, полученных из характеристики.
    < /li>
Вот фрагмент соответствующего кода:

Код: Выделить всё

func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
guard let characteristics = service.characteristics else { return }
for characteristic in characteristics {
if characteristic.uuid.uuidString == "AE42" {
ae42Characteristic = characteristic
peripheral.setNotifyValue(true, for: characteristic)
print("Notifications enabled for AE42 characteristic")
}
}
}

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
if let error = error {
print("Error updating value for characteristic \(characteristic.uuid): \(error.localizedDescription)")
return
}

guard let value = characteristic.value else {
print("No value received for characteristic \(characteristic.uuid)")
return
}

print("Value received for characteristic: \(characteristic.uuid), value: \(value.hexEncodedString())")

if characteristic.uuid.uuidString == "AE42" {
processInputReport(value)
}
}
ФункцияprocessInputReport ищет определенные шаблоны в полученных данных:

Код: Выделить всё

private func processInputReport(_ data: Data) {
inputBuffer.append(data)

// Check for button interactions like single click, double click, long press
if checkForSingleClick() {
handleClick()
inputBuffer.removeAll()
} else if checkForDoubleClick() {
handleDoubleClick()
inputBuffer.removeAll()
} else if checkForLongPress() {
handleLongPress()
inputBuffer.removeAll()
}

if inputBuffer.count > 20 {
inputBuffer.removeAll()
}
}
Проблема:
Устройство подключается успешно, но события нажатия кнопок либо не поступают последовательно, либо происходят по непредсказуемой схеме.
Проблема:
Устройство подключается успешно, но события нажатия кнопок либо не поступают последовательно, либо происходят по непредсказуемой схеме.
Проблема:
Устройство успешно подключается, но события нажатия кнопок либо не поступают последовательно, либо происходят по непредсказуемой схеме.
Проблема:
Устройство подключается успешно, но события нажатия кнопок либо не поступают последовательно, либо происходят по непредсказуемой схеме.
p>
Я подтвердил, что уведомления включены, и вижу некоторые данные, но они не всегда соответствуют ожидаемым шаблонам для одиночного, двойного или длительного нажатия.
Кроме того, я не уверен, правильно ли я обрабатываю характеристические данные или существует конкретная проблема, связанная с тем, как этот чип Bluetooth отправляет входные события.
Sspecs:
  • Устройство: ATG-SJL (набор микросхем Bluetooth Jieli-Tech)
  • Версия iOS: 16.x
    xCode 15.4
  • Библиотека/SDK: CoreBluetooth
  • Репозиторий Jieli-Tech GitHub: iOS-JL_Bluetooth
Что пробовал:
  • Проверил, что устройство подключено и характерные уведомления есть включено.
  • Использовал сканер Bluetooth, чтобы убедиться, что UUID характеристик совпадают и что характеристика AE42 используется для событий нажатия кнопок.
  • Реализовано сопоставление шаблонов. для разных типов нажатий кнопок (одиночное, двойное, длительное нажатие), но данные не всегда совпадают с моими ожиданиями.
Вопросы:

Вопросы:
  • Есть ли какие-то особые нюансы у устройств Jieli-Tech при обработке характерных уведомлений, которые мне не хватает?
  • Есть ли лучший подход к обработке характеристических данных для обнаружения взаимодействия с кнопками?
  • Удалось ли кому-нибудь успешно получать стабильные уведомления от Bluetooth-устройств Jieli-Tech на iOS?
Будем очень признательны за любую помощь или информацию!
ps: я нашел ветку, в которой кому-то удалось подключиться с помощью ESP -
https:/ /community.platformio.org/t/how-can-i-control-an-esp32-with-a-tiktok-bluetooth-controller/41927/5

Подробнее здесь: https://stackoverflow.com/questions/790 ... ch-atg-sjl
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Рекомендации по стеку API Tech для мобильной игры Unity для Android/IOS [закрыто]
    Anonymous » » в форуме Android
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как я могу интегрировать дисплей клиента Partner Tech CD7220 UN с моим POS-приложением Laravel? [закрыто]
    Гость » » в форуме Php
    0 Ответы
    60 Просмотры
    Последнее сообщение Гость
  • Как я могу интегрировать дисплей клиента Partner Tech CD7220 UN с моим POS-приложением Laravel? [закрыто]
    Гость » » в форуме Jquery
    0 Ответы
    74 Просмотры
    Последнее сообщение Гость
  • Стек Java Tech [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Почему простой оператор ввода может вызвать ошибку во время выполнения? (Work@tech IDE) Ошибка NZEC
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»