我正在尝试让 Xamarin 应用程序通过蓝牙从我们的自定义 PCB 接收大约 10 kbps 的 SPP 数据。 PCB 上的 BC127 模块可以发送的最大数据包大小为 255 字节,因此应用程序需要每约 25 毫秒接收一个数据包。我使用数据包来分隔数据,因此需要一次接收一个数据包。
测试应用程序不断尝试接收数据,但是有时当它返回接收方法的开头时,接收流中有 2 个以上的数据包在等待。我的问题是,是什么导致我的蓝牙接收方法出现巨大延迟?我附上了下面的方法。连接到蓝牙模块后,应用程序什么也不做,只是在 while(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;
}
最佳答案
我认为该问题是由于 Android 操作系统执行后台任务而导致我的接收线程中断。由于这只是一个间歇性问题,因此重写数据接收器以同时处理多个数据包解决了这个问题。
关于android - 如何加快 Xamarin Android 中的 SPP 吞吐量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913722/