Saya memiliki dongle BLED112 dan perangkat BLE yang berisi profil GATT dengan Layanan-Karakteristik. Saya telah menginstal pygatt untuk berkomunikasi dengan perangkat BLE saya.

Berikut ini adalah kode python saya untuk terhubung ke perangkat BLE saya dan membaca/menulis ke karakteristik: -

import pygatt
adapter = pygatt.BGAPIBackend()
#adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('30:F5:6A:01:2D:05',address_type=pygatt.BLEAddressType.public)
characteristic = "f1126ec4-6e99-5552-5286-55bc21d65776"
device.char_write(characteristic, bytearray([0x00]), wait_for_response=True)
value = device.char_read(characteristic)
print(value)
adapter.stop()

Saya dapat terhubung ke perangkat saya. Namun, saya mendapatkan kesalahan berikut saat membaca atau menulis:

C:\Python\Python37-32\lib\site-packages\pygatt\backends\bgapi\bgapi.py", baris 570, di expect_any raise exc pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout: Waktu habis setelah 10.000000 detik menunggu []

Saya telah menyertakan wait_for_response=True dalam instruksi menulis saya, tetapi saya masih mendapatkan masalah ini.

Bagaimana cara membaca/menulis dengan karakteristik tanpa kesalahan?

PS: Saat memindai, saya mengamati bahwa UUID di atas milik "deskriptor".

Apakah ini alasan mengapa saya mendapatkan kesalahan?

Apakah ada cara untuk menulis ke "deskriptor" (dan bukan karakteristik) di pygatt?

2
Abhishek 24 Maret 2020, 14:31

1 menjawab

Jawaban Terbaik

Saya akhirnya mendapatkannya dengan mengubah karakteristik UUID ke pegangan karakteristik. Berikut ini adalah kode kerja: -

import pygatt
import time
adapter = pygatt.BGAPIBackend()
#adapter = pygatt.BGAPIBackend()
adapter.start()
adapter.scan(timeout=1)
device = adapter.connect('30:F5:6A:01:2D:05',address_type=pygatt.BLEAddressType.public)
characteristic = "26"
device.char_write_handle(characteristic, bytearray([0x00, 0x09]), wait_for_response=True)
time.sleep(2)
value = device.char_read_handle(characteristic)
print(value)
adapter.stop()
1
Sandrocottus 26 Maret 2020, 07:36