android - 如何加快 Xamarin Android 中的 SPP 吞吐量?

标签 android .net xamarin bluetooth android-bluetooth

我正在尝试让 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/

相关文章:

java - Android:如何使用下载管理器类?

android - 如何设备测试 Android 2.3.5 Developer option 在哪里?

android - 使用 NDK 的 Android 上的 SDCARD 文件权限

.net - .Net Framework 4.0 安装程序是否包含 .Net Framework 3.5?

c# - 存储库中 Database.SetInitializer<ArContext>(null) 的用途?

xamarin - 我可以构建 Armv7 + Arm64 架构,但不能单独构建 Armv7

java - 仅当其他方法完成时才调用方法 - RxJava

c# - 协变和泛型

android - 谁应该在什么时候处置 Intent ?

xamarin - 自定义 ListView 绑定(bind)在 Xamarin.Forms 中不起作用