使用C#通过蓝牙 - 串行模块传输数据

时间:2014-03-26 01:36:03

标签: c# bluetooth

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

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

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

对于测量时间,我正在使用.net框架的秒表组件。 C#应用程序的输出:


样本#583:39.126841990471 ms

样本#584:0.7883273789593 ms

样品#585:0.93885067781563 ms

样本#586:0.884708368788226 ms

样本#587:8.65278575619526 ms

样品#588:1.05558303203074 ms

样本#589:0.870116824511337 ms

样品#590:0.888932236868378 ms

样品#591:39.0876752137277 ms

样本#592:1.02639994347697 ms

样品#593:0.820198383564084 ms

样品#594:0.960737994230964 ms

样品#595:15.2051571125331 ms


请注意,每个样本包含8个字节的数据

1 个答案:

答案 0 :(得分:0)

教条#1:在蓝牙世界中没有保证计时的事情。

只考虑一个丢帧的设备(例如,因为你的微波炉刚开机) - 理解帧丢失的时间很长。此外,第一个示例中显示的连接/断开连接很长。如果其中一个设备使用例如蓝牙鼠标或可发现,所有投注均已关闭。

长话短说:蓝牙消息没有一致的时间 - 如果你想保留时间信息,请在你的有效载荷中包含一个时间戳。