如何在 Xamarin Android 中加快 SPP 吞吐量?

How to speed up SPP throughput in Xamarin Android?

我正在尝试让 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 OS 正在执行后台任务,这阻碍了我的接收线程。结果证明这只是一个间歇性问题,重写数据接收器以一次处理多个数据包解决了它。