您好团队对话框,
我已经根据BLE_Central项目编写了一个程序,该项目找到了具有特殊名称或MAC地址的BLE设备。
如果找到设备,则我连接到它,然后我写入特征。
我的问题是:
每次尝试写入外设时,状态为3(ATT_ERROR_WRITE_NOT_PERMITTE),在写入完成事件中。
当我尝试通过NRF Connect应用程序使用我的手机进行操作时,我可以在没有任何问题的情况下读写。
用作外围覆盆子PI,我的手机以及对话框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 test = 0x00;printf(“uuid:%s \ r \ n”,format_uuid(&charact [0] .uuuid));printf(“写\ r \ n”);BLE_GATTC_WRITE(EVT-> CONN_IDX,FALICLE [0] .HANDLE,FALSE,SIZEOF(测试)和测试);
faract [0]包含来自特性的处理程序。
非常感谢提前努力。
此致
HDR.
设备:
嗨HDR,
感谢您对公共BLE论坛的问题。您能否说明周边是什么?是另一个da14682吗?
谢谢,PM_DIALOG.
我使用带有PyBluez的覆盆子PI作为外设,我的移动电话与上面提到的应用程序和对话框14680.我现在正在尝试一个DA 14682,因为我无法访问14680,因为设备被培养。
嗨HDR.
我有同样的要求
你能告诉我什么是写完成的事件以及如何使用?
谢谢
如果我正确理解这一点,请在调用BLE_GATTC_WRITE时调用WRITE_COMPLETED_EVENT并已执行。在我恢复CONN_IDX,处理程序和状态代码中。在我的情况下,状态代码为3,它代表了ATT_ERROR_WRITE_NOT_PERMITTED。
要描述如何使用该事件,我将引用BLE_Cental示例项目。
嗨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},
{gapc_get_dev_info_req_ind,(ke_msg_func_t)gapc_get_dev_info_req_ind_handler},
{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},
{gapm_adv_report_ind,(ke_msg_func_t)gapm_adv_report_ind_handler},
{gapc_param_update_req_ind,(ke_msg_func_t)gapc_param_update_req_ind_handler},
{gapc_le_pkt_size_ind,(ke_msg_func_t)gapc_le_pkt_size_ind_handler},
{gapc_con_rssi_ind,(ke_msg_func_t)gapc_get_con_rssi_ind_handler},// alex添加20191030
{gattc_read_ind,(ke_msg_func_t)app_read_ind_handler},// Alex Test 2020 0710
{gattc_sdp_svc_ind,(ke_msg_func_t)app_disc_all_svc},// axx test 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},// Alex Test 2020 0710
#if(ble_app_sec)
{gapc_security_ind,(ke_msg_func_t)gapc_security_ind_handler},
#万一
};
我认为你使用另一个SDK和对话芯片。
嗨HDR,
感谢您的详细回复。根据Bluetooth LE规格:
“如果由于权限而无法写入属性值,则应使用错误代码«不允许写入错误响应»。“
您能否检查特色是否(在外围方面)有写入权限吗?如果是,那么我建议仔细检查中央(DA14682)写入正确的处理程序(Facut [0] .Handle)。
此外,拥有BLE嗅探器日志是非常有帮助的,这样我们就可以了解在空中发生的事情。
谢谢,PM_DIALOG.
你好,
外围设备中的特性具有许可写入,并且处理程序应该是正确的。
以下是对话框14682外设(相同的结果状态为3)代码:
使用我的手机,我可以写在特征。
嗨,亚历克斯,
谢谢你的评论,但请培养另一个论坛线程。具体论坛主题与DA14682和SDK1.0.14有关。据我所知,您在设计中使用DA14585和SDK6,因此请使用您的问题创建另一张票。
谢谢,PM_DIALOG.
嗨HDR,
桑斯克来了。请您提供BLE Sniffer Capture /
谢谢,PM_DIALOG.
你好,
不幸的是,我们没有嗅探的可能性。
如果我们找到任何新信息,我们将继续搜索错误并与您联系。
嗨HDR,
是的,任何进一步的投入都会非常有帮助。
谢谢,PM_DIALOG.
你好,
非常感谢您的帮助。我发现了我的错误。
我的手柄确实错了。我应该为句柄_VattC_Discover_char方法中的句柄分配EVT-> Value_Handle。
非常感谢
HDR.
嗨HDR,
很高兴你认为这一点,感谢你的迹象。
谢谢,PM_DIALOG.