c#蓝牙串行端口周期性无法获取数据

c#蓝牙串行端口周期性无法获取数据,c#,unity3d,bluetooth,serial-port,C#,Unity3d,Bluetooth,Serial Port,我有一个c#/unity应用程序,它利用串口与一个设备建立蓝牙连接,然后将一些数据实时发送回应用程序。 问题是,有时它看起来完全是随机的,但至少每分钟一次,串行端口连接/数据传输速度急剧下降,设备缓冲区被填满,因此数据丢失。打开wifi会让事情变得更糟,但这是可以预测的。当我打开wifi时,数据传输速度会立即下降,但在cca 3秒内会恢复正常。 在另一台类似的计算机上尝试了同样的应用,它有点更好——速度下降的频率更低,在安卓设备上下降的频率更高,但几乎马上就恢复了。 我是否应该考虑任何串行端口设

我有一个c#/unity应用程序,它利用串口与一个设备建立蓝牙连接,然后将一些数据实时发送回应用程序。 问题是,有时它看起来完全是随机的,但至少每分钟一次,串行端口连接/数据传输速度急剧下降,设备缓冲区被填满,因此数据丢失。打开wifi会让事情变得更糟,但这是可以预测的。当我打开wifi时,数据传输速度会立即下降,但在cca 3秒内会恢复正常。 在另一台类似的计算机上尝试了同样的应用,它有点更好——速度下降的频率更低,在安卓设备上下降的频率更高,但几乎马上就恢复了。 我是否应该考虑任何串行端口设置或Sistem设置。有没有一种方法可以在代码中解决这个问题


thx

如果问题中没有代码示例,很难给出好的答案

但是从它的声音中,你可能会受到蓝牙设备所在的2.4GHz射频的干扰

Wi-Fi可能是最大也是最有问题的一种,其他蓝牙接收器和设备也可能相互干扰

微波、直接卫星服务、2.4GHz和5GHz手机、无线扬声器、外部监视器、婴儿监视器以及任何通过2.4GHz射频通话的无线设备都可能干扰您的信号

你能做的事

1) 在相当高的射频环境中工作。一个没有很多其他通讯设备的

2) 物理材料可能导致各种射频问题。反射/碰撞。尽管如此,还是试着消除你在交流中的任何物理障碍。远离荧光灯和微波(均发射2.4 GHz)

3) 将设备移动到更近的位置


因为这是作为虚拟com端口运行的,所以没有串行端口或系统设置会对此产生积极影响。可能会更幸运地实现自己的蓝牙设备驱动程序

如果问题中没有代码示例,就很难给出好的答案

但是从它的声音中,你可能会受到蓝牙设备所在的2.4GHz射频的干扰

Wi-Fi可能是最大也是最有问题的一种,其他蓝牙接收器和设备也可能相互干扰

微波、直接卫星服务、2.4GHz和5GHz手机、无线扬声器、外部监视器、婴儿监视器以及任何通过2.4GHz射频通话的无线设备都可能干扰您的信号

你能做的事

1) 在相当高的射频环境中工作。一个没有很多其他通讯设备的

2) 物理材料可能导致各种射频问题。反射/碰撞。尽管如此,还是试着消除你在交流中的任何物理障碍。远离荧光灯和微波(均发射2.4 GHz)

3) 将设备移动到更近的位置


因为这是作为虚拟com端口运行的,所以没有串行端口或系统设置会对此产生积极影响。可能会更幸运地实现自己的蓝牙设备驱动程序

你能分享你的代码吗?不,它是专有的,对不起。你能分享你的代码吗?不,它是专有的,对不起。是的,我在做一些重新搜索和测试时想到了同样的东西,所以我应该发布我的问题的这些更新:通过测试,我发现在Android和Windows上,如果我通过连接增加数据流的数量,设备缓冲区定期填充并转储数据。因此,一些系统协议似乎无法将接收到的数据保存在电脑和平板电脑的缓冲区中,用于蓝牙虚拟串行端口。好像计算机的速度不够快,无法接收所有传输的数据。如果我将发送数据包的速度调低到150赫兹左右,或者如果我调低在给定时间内发送的数据包数量,问题就消失了。而且,一旦我开始传输数据,缓冲区电流就不会发生。它有一些延迟(200 hz时为30秒),这也取决于速度,但一旦它启动,缓冲区每两秒就会充满一次。我相信这涉及到在蓝牙射频层发生的重试。你说的重试是什么意思?ps:只需以更慢的速度进行更多测试,问题仍然存在,但不太常见。在90赫兹时,它每隔几分钟就会发生一次,但它的持续时间和在200赫兹时一样长,大约是两秒钟。当然,bt设备缓冲区变满的速度要慢一点。450hz下的数据传输量为500b/s,比BT硬件文档中规定的数据传输量少300b/s。所以我认为这与串口缓冲区变满有关?是的,我在做一些重新研究和测试时也想到了同样的东西,所以我应该发布我的问题的更新:通过测试,我发现在Android和Windows上,如果我通过连接增加数据流的数量,设备缓冲区定期填充并转储数据。因此,一些系统协议似乎无法将接收到的数据保存在电脑和平板电脑的缓冲区中,用于蓝牙虚拟串行端口。好像计算机的速度不够快,无法接收所有传输的数据。如果我将发送数据包的速度调低到150赫兹左右,或者如果我调低在给定时间内发送的数据包数量,问题就消失了。而且,一旦我开始传输数据,缓冲区电流就不会发生。它有一些延迟(200 hz时为30秒),这也取决于速度,但一旦它启动,缓冲区每两秒就会充满一次。我相信这涉及到在蓝牙射频层发生的重试。你说的重试是什么意思?ps:只需以更慢的速度进行更多测试,问题仍然存在,但不太常见。在90赫兹时,它每隔几分钟就会发生一次,但在200赫兹时,它的持续时间一样长,也就是大约两秒钟