我试图获得一个Xamarin应用程序接收大约10 kbps的SPP数据通过蓝牙从我们的定制PCB。PCB上的BC127模块可以发送255个字节的最大数据包,因此应用程序需要每隔25 to接收一个数据包。我使用数据包来分离数据,所以需要一次只接收一个。
测试应用程序不断尝试接收数据,但有时当它回到接收方法的开始时,接收流中会有2+数据包等待。我的问题是,是什么导致了我的蓝牙接收方法的巨大延迟?我附上了下面的方法。连接到蓝牙模块后,应用程序只在一段时间内运行此方法(True)循环。
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;
}发布于 2016-10-19 08:29:49
我相信这个问题是由于Android操作系统做的后台任务,这些任务阻碍了我的接收线程。由于它只是一个间歇性的问题,重写数据接收器来同时处理多个数据包解决了这个问题。
https://stackoverflow.com/questions/39913722
复制相似问题