发送消息的问题

了解更多常见问题解答教程

2个帖子/ 0新
最后一篇
斯坦利_yeh.
离线
最后一次露面:1年8个月前
加入:2016-12-23 06:52
发送消息的问题

嗨对话框,
我使用下面的函数将BLE消息发送到我的移动(主机)。

void user_send_ble_data(uint16_t句柄,const uint8_t * data,const uint16_t长度)
{
if(ke_state_get(task_app)!= app_connected)
返回;

struct susts1_val_ntf_ind_req * req = ke_msg_alloc_dyn(custs1_val_ntf_req,prf_get_task_from_id(task_id_custs1),task_app,custs1_val_ntf_ind_req,length);

req-> handle = handle;
req->长度=长度;
req-> notification = false;
memcpy(req->值,数据,长度);

KE_MSG_SEND(REQ);
}
我使用Android的测试应用程序每5秒连续向DA14585发送命令消息。
每次我的设备接收命令消息时,它应该向测试应用程序发送10个原始数据消息,例如:
for(Uint8_t i = 0; i <10; i ++)
{
user_send_ble_data(tdkam_idx_control_point_val,ble_report,10);
}

一段时间后,设备将断开连接。
重新连接后,DA14585可以接收消息但无法发送任何消息。
如果我仍然将命令消息发送到DA14585,它将崩溃。
即使我重新刻录代码,它也会陷入“rwip_schedule()”功能。
你有什么主意吗?我的发送功能有什么不对吗?

顺便说一下,如果da14585收到一条消息并刚发送返回一条消息,那就没问题了。
非常感谢。

设备:
mt_dialog.
离线
最后一次露面:2周19小时前
职员
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

据我所知,试图使用指示发送数据,这意味着在发送下一个指示之前,外设必须验证前一个是由中央包装的。所以,据我所知,在设备期望从链接的另一边确认确认时,请继续分配消息以便发送指示,因此您可能会耗尽堆。为了正确发送通知和迹象,您必须等待完成回调,然后在向堆栈发送其他消息之前发生。因此,您可以使用user_send_ble_data并等到指示确认消息,例如ble_app_peripheral项目包括可指示的特征,该消息将指示中央确认的指示的接收是Custs1_Val_ind_cfm和该项目处理在BLE_APP_PERITELAL项目中的项目处理。所以从那个回调你可以触发后续迹象。

谢谢mt_dialog.