SPS不一致的数据包大小

10个帖子/ 0新
最后一篇
svl0822型
离线
最后一次露面:5年7个月前
加入:2014-11-17 19:20
SPS不一致的数据包大小

你好对话框,

我在我的早期线程中问了这一点,但它被标记为解决,可能没有被重新预订 - 我正在使用DA14580使用SPS配置文件,并尝试每80毫秒使用它来接收20个字节。DA从主UC获取UART上的数据,并将其发送到显示数据的便携式设备。我所拥有的问题是我的便携式接收到大小不一致的数据分组 - 有时数据包根据需要具有20个字节,但其他时间单个20字节传输为两个数据包或数据是20字节宽,但是移位。

我在持续时间〜2 ms的持续时间内发送20个字节,因此在下一个数据周期出现之前应该有足够的时间来接收数据并将其发送。

我需要数据包是相同的大小,因为我的便携式的应用程序希望它们保持一致。你知道什么可能导致这个问题吗?

谢谢,
svl0822型

je_dialog
离线
最后一次露面:5天2小时前
员工
加入:2013-12-05 14:02
在那里,你在使用hw吗?

你好,你在用硬件流量控制吗?哪个设备被配置为中央设备(我假设是通过UART从主机MCU获取数据的设备)?

谢谢Je_Dialog.

svl0822型
离线
最后一次露面:5年7个月前
加入:2014-11-17 19:20
你好,我的对话,

你好,我的对话,

我不使用HW流量控制。我假设这不是必要的,因为我得到了我发送的所有字节(通过ble),但是有什么不同它们进入的数据包大小。
我正在使用DA14580上的“设备”SPS项目。Central是我的主芯片,DA14580只是充当蓝牙串行接口。

svl0822型

mhv_dialog.
离线
最后一次露面:5天22小时前
员工
加入:2013-12-06 15:10
嗨svl0822,

嗨svl0822,

您正在观察对话框串行端口服务的预期行为。串行端口链路与UART完全异步,数据包完整性得不到保证,这当然不是有意的。DSPS实现针对流数据进行了优化,并不适合您的应用程序。

从您的描述中,您实际上尝试发送离散数据包 - 这正是如何智能智能。您应该使用20byte大小的特征实现自定义服务。每次您有20个字节准备好BT传输,您都应该继续并将其加载到特征(在GATT数据库中)。SmartDevice(平板电脑/智能手机)实现如此简单,并确保了数据包完整性。您将使用GATT通知,以确保每次更新数据时都会向SmartDevice发送到SmartDevice。

如果您需要有关实现自定义服务的更多信息,请告诉我。它并不像听起来那么可怕,而且它肯定更适合您所描述的用例。代码占用也会小得多。

svl0822型
离线
最后一次露面:5年7个月前
加入:2014-11-17 19:20
mhv_dialog,

mhv_dialog,

谢谢你的详细说明。你描述的声音就像它一样。
是否有任何关于实施自定义服务的文档?我看了软件开发指南,但它没有详细说明这一点。

我是否可以使用SPS服务并只需在“SPS_SERVER_TASK.C”文件中添加新特征?此外,当你说“20字节宽特征”时,你的意思是拥有称为“大小”的属性,这将具有长度20?我正在查看TX数据特征的声明,它有固定长度的属性,因此我没有看到可变性来自的地方。你能为我解释这个吗?

谢谢你的耐心。我是一个新的BLE编程和不确定的基础知识。

SUMMER20100514.
离线
最后一次露面:4年2个月前
上师
加入:2014-12-30 05:01
嗨,也许你应该参考一下

嗨,也许您应该参考Sample128或Spotar服务。

克里姆9531
离线
最后一次露面:4年2个月前
加入:2015-01-28 23:52
你好,我面对一样

你好,我也面临同样的情况,与一个发送/接收13字节数据包的micro通信。在两个方向上,对于单个数据包来说,一切都很好,但最终事情会分崩离析,当只有部分数据包被放入UART-to-BLE缓冲区时,我会收到通知。如果有一种简单的方法来暂停notify,直到在UART上接收到完整的13个字节,那么问题就解决了。TX\u WAIT\u LEVEL似乎暗示了这一点,但它被注释为//3个数据包(20+2*27),没有进一步的解释。你知道这是不是正确的方法吗?

je_dialog
离线
最后一次露面:5天2小时前
员工
加入:2013-12-05 14:02
嗨,克里姆,我能在一个很高的时候问你吗

嗨Klim,我可以在高层问你试图如何实现什么?DSP专为纯流应用而设计:保留数据包完整性的方式没有任何东西 - 它只是填充缓冲区并传输。我只是想知道是否有一种更简单的方法,可以帮助,就像使用AN-B-029建立简单的自定义配置文件以满足您的需求。如果DSP是去的方式,我们可以看看你关于添加TX_WAIT_LEVEL的问题(它不是我们尚未尝试过的SOMING)。BR JE_DIALOG.

克里姆9531
离线
最后一次露面:4年2个月前
加入:2015-01-28 23:52
嗨je_dialog,

嗨je_dialog,

我的解决方案是继续流流数据,而是在应用程序中拆卸/组装数据包。

我在数据包中包含一个超时处理程序,使得如果给定的数据包花费太长以组装,则我*假设*存在维护BLE连接的问题。

在这种情况下,我重新尝试发送/接收数据包,最终将失败到“通信丢失”异常处理程序。

到目前为止,如果稍后,我需要做出更多更改,那么我会在这里发布。

干杯,--克里姆

je_dialog
离线
最后一次露面:5天2小时前
员工
加入:2013-12-05 14:02
嗨Klim,谢谢

嗨Klim,谢谢你让我们知道它适合你...赞扬的反馈,Br Je_Dialog