我正在使用C#
and 32feet
(3.5 版)通过蓝牙 (SPP) 将 250 字节的块发送到我目前正在为其编写固件的嵌入式设备。
我正在使用以下代码建立连接:
var client = new BluetoothClient();
client.Encrypt = true;
client.Connect(bluetoothAddress, ServiceClassId);
NetworkStream stream = client.GetStream();
var writer = new BinaryWriter(stream);
我遇到了一些吞吐量非常低的问题,每个块需要大约 100 毫秒才能使用以下代码传输:
public void SendData(List<byte> data)
{
try
{
foreach (byte d in data)
{
writer.Write(d);
}
writer.Flush();
}
catch (Exception)
{
// The connection was lost
ConnectionCleanup();
}
}
将上面的代码块更改为下面的代码后,每个块在 4 ms 内传输。
try
{
writer.Write(data.ToArray());
writer.Flush();
}
catch (Exception)
{
// The connection was lost
ConnectionCleanup();
}
我很难理解这种“简单”的代码更改如何对吞吐量产生如此大的影响。谁能帮我解释发生了什么?我猜这与 32feet 的底层机制有关?
我来回更改了代码,每次结果都是一样的。传输的数据也是一样的。
我还直接从 Windows 连接到设备,然后在 Realterm 中打开 COM 端口以发送相同的数据。在这种情况下,我得到与使用类似的吞吐量writer.Write(data.ToArray())
。
我正在使用Microsoft Bluetooth Stack
.