通过通知向应用程序连续发送两个数据包,但收是应用到的两个数据包的数据都是第二个数据包的,这是怎么回事?

3个帖子/ 0个新帖子
最后发表
kongxiangmin
离线
最后看到:1年8个月前
加入:2019-01-02 01:33
通过通知向应用程序连续发送两个数据包,但收是应用到的两个数据包的数据都是第二个数据包的,这是怎么回事?

嗨,对话框中,

我使用的发送函数是send_ble_data (const uint8_t *数据,uint16_t长度),

Send_ble_data (uint8_t *data,uint16_t length)


struct sps_server_data_tx_req *req = KE_MSG_ALLOC_DYN(sps_server_data_tx_req,
TASK_SPS_SERVER,
TASK_APP,
sps_server_data_tx_req,
len);
申请- >长度=兰;
memcpy(请求- >价值、缓冲区、兰);

ke_msg_send(要求的);

我也参考了这个回答,

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。

我第二个数据包应该是把第一个覆盖掉了,然后又发了一次第二个数据包。

请问一下我这样的处理方式哪里错了错误,我这个程序是在需求方的基础上改的。

谢谢了!

设备:
CYibin
离线
最后看到:10个月2个星期前
工作人员
加入:2017-12-14 02:48
你好,

你好,

从你贴上来的代码,我们只知道:

你从用户层,向剖面层发送了一条消息,需要发送一段数据。并附上待发送的数据和数据长度。

至于这个消息由剖面层接收之后,做什么处理,我们无从得知。

不过,如果你没有对需求方工程的剖面层做任何修改的话,这种发送数据的方式应该没问题。

需求方工程发送数据过程,大概描述如下:

1.用户层发消息给概要文件层,并附上待发送数据和数据长度

2.剖面层接收到用户层的数据之后,把他们都扔进缓冲

3.剖面层检查一切条件成熟之后(串口没有数据,发送缓冲历史遗留的待数据等),将数据从缓冲中拉出来(ble_pull_data),然后扔给底层(GATTC_NOTIFICATION)

4.底层发送完数据之后,会给到上层一条成功与否的消息

5.剖面层接收到发送结束消息之后,在回调函数中继续从缓冲中拉数据出来,继续发送。重复 3 4 5,直到数据完毕。

yoshow317
离线
最后看到:1年8个月前
加入:2019-09-26 06:25
你好,

你好,

我使用SDK 5.0.4 ble_app_profile,也是參考下面回答,連續呼叫兩次send_to_app ();

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-hardware-device-reference-designs-dialog--26

但也是跟一樓一樣,兩筆封包都是第二筆的資料,是不能這樣呼叫嗎?