Page 1 of 1

基于gatt_client demo,蓝牙双机通讯,收发的问题

Posted: Wed Nov 09, 2022 6:43 am
by i am daidai
各位大佬好!
我是新手入门,对于ble的gap以及gatt认知有限,多海涵。我的问题如下:
我现在基于gatt_client Demo做开发,在数据的收发遇到了问题,我连接的目标设备,连接正常,Esp32能正常接收,但是esp32发送数据一直提示失败,已知目标设备的发送和接收uuid是不一样的,不同的uuid对应的handle我试过去发送,但是还是不成功。
1.png
1.png (162.72 KiB) Viewed 1820 times
图中是我修改过的地方。结果如下:
2.png
2.png (61.38 KiB) Viewed 1820 times
请各位大佬帮忙看下我哪里弄错了。

Re: 基于gatt_client demo,蓝牙双机通讯,收发的问题

Posted: Fri Nov 11, 2022 9:24 am
by ESP_XuLZ
write_char 返回错误状态 0x06, 协议中的解释是 ATT Server does not support the request received from the client
应该是这个 characteristic 并不支持写的方式, 你需要看下这个 characteristic 的 properties (如 gatt_client 通过 esp_ble_gattc_get_char_by_uuid 获取到 characteristic 信息的 在 char_elem_result 有 properties ) 支不支持写,支持哪种写的方式
使用 esp_ble_gattc_write_char 函数可以选择 write type

有一点是如果使用 write request 方式, esp_ble_gattc_write_char 发送的数据长度大于 MTU , 将会选择使用 write prepare request 方式,而有的蓝牙芯片可能不支持这种写的方式,参考下这个 issue: https://esp32.com/viewtopic.php?f=25&t= ... 26#p104526

Re: 基于gatt_client demo,蓝牙双机通讯,收发的问题

Posted: Fri Nov 11, 2022 9:29 am
by i am daidai
谢谢您,昨天这个问题已经解决了,原因主机那边提供的写的特征属性值是GATT_CHAR_PROP_BIT_WRITE_NR,写的时候不需要回复,把写数据里面的那个参数换一下就行了,再次表示感谢!