你好团队对话框中,
我已经写了基于该ble_central项目,发现有一个特别的名称或MAC地址的BLE装置的程序。
如果发现一个设备,我连接到它,然后我写入的特性。
我的问题是:
每次我试着写外设,状态为3(ATT_ERROR_WRITE_NOT_PERMITTED)在写完成的事件。
当我尝试通过NRF连接应用程序我的手机做到这一点,我可以读取并没有任何问题写。
尝试了作为外设一个树莓派,我的手机,也是一个对话框14680。
每次状态为3。
的printf( “开始写入\ r \ n”);uint16_t * MTU = 0;ble_gattc_get_mtu(EVT-> conn_idx,MTU);的printf( “MTU率:%U \ r \ n”,* MTU);uint8_t测试= 0×00;的printf( “UUID:%S \ r \ n” 个,format_uuid(CHARACT [0] .uuid));的printf( “写入\ r \ n”);ble_gattc_write(EVT-> conn_idx,CHARACT [0] .handle,假的sizeof(测试),测试和);
CHARACT [0]包含从特征的处理程序。
非常感谢提前的努力。
致以最亲切的问候
HDR
设备:
嗨HDR,
感谢您对我们的公共BLE论坛你的问题。你能请注明是什么外设?是另一种DA14682?
谢谢,PM_DIALOG.
我用了一个树莓派与PyBluez外围,我的手机与上述应用程序和一个对话框14680.我现在想要一个DA 14682的,因为该设备是盆栽我无法访问14680。
嗨hdr
我有同样的要求
你能告诉我什么是写完成的,事件以及如何使用?
谢谢
如果我没有理解这一点,当我称之为ble_gattc_write的Write_Completed_Event被调用,它已经被执行。在事件中,我找回conn_idx,处理程序和状态代码。在我的情况下,状态代码为3,代表ATT_ERROR_WRITE_NOT_PERMITTED。
为了描述如何使用事件,我将引用ble_central示例项目。
嗨hdr
我也用ble_gattc_write和我添加Write_Completed_Event到app_task.c如下,这是正确的,当ble_gattc_write完成?
Static const struct ke_msg_handler app_gap_process_handlers[]=
{
{GAPM_DEVICE_READY_IND,(ke_msg_func_t)gapm_device_ready_ind_handler}
{GAPM_CMP_EVT,(ke_msg_func_t)gapm_cmp_evt_handler}
{GAPC_CMP_EVT,(ke_msg_func_t)gapc_cmp_evt_handler}
{GAPC_CONNECTION_REQ_IND,(ke_msg_func_t)gapc_connection_req_ind_handler}
{GAPC_DISCONNECT_IND,(ke_msg_func_t)gapc_disconnect_ind_handler}
(ke_msg_func_t) gapc_get_dev_info_req_ind_handler}, {GAPC_GET_DEV_INFO_REQ_IND
{GAPC_SET_DEV_INFO_REQ_IND,(ke_msg_func_t)gapc_set_dev_info_req_ind_handler}
{GAPM_PROFILE_ADDED_IND,(ke_msg_func_t)gapm_profile_added_ind_handler}
(ke_msg_func_t) gapm_adv_report_ind_handler}, {GAPM_ADV_REPORT_IND
(ke_msg_func_t) gapc_param_update_req_ind_handler}, {GAPC_PARAM_UPDATE_REQ_IND
(ke_msg_func_t) gapc_le_pkt_size_ind_handler}, {GAPC_LE_PKT_SIZE_IND
{GAPC_CON_RSSI_IND, (ke_msg_func_t)gapc_get_con_rssi_ind_handler}, //Alex Add 20191030
{GATTC_READ_IND,(ke_msg_func_t)app_read_ind_handler},//亚历克斯测试2020 0710
{GATTC_SDP_SVC_IND,(ke_msg_func_t)app_disc_all_svc},//亚历克斯测试2020 0710
{GATTC_CMP_EVT, (ke_msg_func_t)alex_gattc_cmp_evt_handler},//alex test 2020 0716
// {GAPC_PEER_ATT_INFO_IND,(ke_msg_func_t)app_read_dev_ver_ind_handler},//亚历克斯测试2020 0710
的#if(BLE_APP_SEC)
{GAPC_SECURITY_IND,(ke_msg_func_t)gapc_security_ind_handler}
#Endif.
};
我想你用的是另一个SDK和Dialog-Chip。
嗨HDR,
感谢您的详细回复。根据蓝牙LE规范:
“如果属性值由于权限而无法写入,那么将发送一个错误响应,并发送错误代码«Write Not allowed»。”
能否请你检查特性(在周侧)有写的权限?如果是的话,那么我会建议要仔细检查中央(DA14682)写入正确的处理程序(CHARACT [0] .handle)。
此外,这将是有一个BLE嗅探器的日志非常有帮助的,这样我们就可以明白发生了什么在空中。
谢谢,PM_DIALOG.
你好,
外围设备的特征具有写权限,处理程序应该是正确的。
这里是我的代码从对话框14682外设(相同的结果状态3):
随着我的手机,我可以在特性写。
嗨,亚历克斯,
谢谢你的评论,但请提出另一个论坛线程。具体的论坛主题与DA14682和SDK1.0.14相关。据我所知,你们在设计中使用了DA14585和SDK6,所以请用你们的issue创建另一个ticket。
谢谢,PM_DIALOG.
嗨HDR,
Thansk FRO gettign回来。能否请您提供一个BLE嗅探器捕获/
谢谢,PM_DIALOG.
你好,
不幸的是,我们无法进行BLE嗅探。
我们将继续寻找错误和您联系,如果我们发现任何新的信息。
嗨HDR,
有请,任何进一步的投入将是非常有益的。
谢谢,PM_DIALOG.
你好,
非常感谢您的帮助。我发现我错了。
我的手柄确实错了。我应该将evt->value_handle赋给handle_evt_gattc_discover_char方法中的句柄。
非常感谢
hdr
嗨HDR,
高兴的是,你想通了这一点,并感谢您的指示。
谢谢,PM_DIALOG.