我需要通过蓝牙 - 串行链路传输多个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个字节的数据
答案 0 :(得分:0)
教条#1:在蓝牙世界中没有保证计时的事情。
只考虑一个丢帧的设备(例如,因为你的微波炉刚开机) - 理解帧丢失的时间很长。此外,第一个示例中显示的连接/断开连接很长。如果其中一个设备使用例如蓝牙鼠标或可发现,所有投注均已关闭。
长话短说:蓝牙消息没有一致的时间 - 如果你想保留时间信息,请在你的有效载荷中包含一个时间戳。