2014-03-26 60 views
1

我需要通过蓝牙串行链路传输多个8字节数据包。我正在使用JY MCU蓝牙串行模块。在PC端,我有一个C#应用程序正在运行,与COM端口进行通信。使用C#通过蓝牙串行模块传输数据

考虑到115200波特,每个8字节的数据包应该花费8 * 8/115200 = 0.555毫秒。

问题是,每4个数据包中有一个需要39毫秒的时间才能完全破坏所有的时间。

对于测量次数,我使用.net框架的秒表组件。从C#应用 输出:


试样#583:39.126841990471毫秒

试样#584:0.7883273789593毫秒

试样#585:0.93885067781563毫秒

试样#586:0.884708368788226毫秒

样品#587:8.65278575619526 ms

样品#588:1.05558303203074毫秒

样品#589:0.870116824511337毫秒

样品#590:0.888932236868378毫秒

样品#591:39.0876752137277毫秒

样品#592:1.02639994347697毫秒

样品#593:0.820198383564084 ms

样品#594:0.960737994230964毫秒

试样#595:15.2051571125331毫秒


注意,每个样品含有8个字节的数据

+0

如果降低波特率,一致性会提高吗?在类似的说明中,当我切换到使用bt 4.0时,我注意到更好的连接时间。您是否在主机和客户端上使用相同的bt版本? –

+0

该模块的波特率不能用软件改变。我明天将访问实验室,看看一致性是否发生变化。 现在不太了解bt版本:( – Faisal

回答

0

教条#1:没有这样的东西作为一个保证定时在蓝牙世界。

只要考虑一个丢帧的设备(例如,因为您的微波炉刚打开) - 将帧理解为丢失的时间非常可观。此外,第一个样本中显示的连接/断开连接冗长。如果其中一个设备使用例如一个蓝牙鼠标或可发现,所有投注都关闭。长话短说:蓝牙消息没有一致的定时 - 如果你想保持定时信息,在你的有效载荷中包括一个时间戳。

+0

Thanx的建议。 但为什么每4个数据包显示重大错误?我在想,添加一个缓冲区或类似的东西可能会改善时间? 实际上,这个C#应用程序正在模拟脑电图设备,所以计时非常重要。 – Faisal

+0

如果无线连接,真正的EEG设备会将样本的时间戳与样本一起发送,这完全是因为无线无法保证时间。 –

+0

好的。但为了在每个数据包中添加更多的数据,我需要增加波特率。你能建议我如何超越115200?如果我可以以1382400 bps进行通信,情况会更容易。 (虽然它是一个虚拟的COM端口,但C#不允许我在高于115200的任何端口上打开COM端口) – Faisal