如何加速Xamarin Android的SPP吞吐量?

时间:2016-10-07 09:18:52

标签: android .net xamarin bluetooth android-bluetooth

我试图让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; 
    }

1 个答案:

答案 0 :(得分:1)

我认为这个问题是由于Android操作系统执行的后台任务阻碍了我的接收线程。事实证明只是一个间歇性的问题,重写数据接收器一次处理多个数据包解决了它。