我试图让Xamarin应用程序通过我们自定义PCB的蓝牙接收大约10 kbps的SPP数据。 PCB上的BC127模块可以发送最大255字节的数据包,因此应用程序需要每隔25ms接收一个数据包。我使用数据包来分离数据,因此需要一次接收一个数据包。
测试应用程序一直在尝试接收数据,但有时当它在接收方法开始时返回时,接收流中有2个以上的数据包等待。我的问题是,是什么导致了我的蓝牙接收方法的巨大延迟?我已经附上了以下方法。连接到蓝牙模块后,应用程序除了在一段时间(真实)循环中运行此方法外什么都不做。
public byte[] ReadBluetoothPacket()
{
int bytesAvailable = 0;
while (bytesAvailable == 0) // Wait for packet to arrive
{
bytesAvailable = stream.BaseInputStream.Available(); // Find out how big the packet is
}
byte[] result = new byte[bytesAvailable];
_socket.InputStream.Read(result, 0, bytesAvailable); // Add the bytes to the buffer
return result;
}
答案 0 :(得分:1)
我认为这个问题是由于Android操作系统执行的后台任务阻碍了我的接收线程。事实证明只是一个间歇性的问题,重写数据接收器一次处理多个数据包解决了它。