我是一名初学者,但是我喜欢挑战。在这些挑战中,我遇到了一个问题。
我正在构建基于Raspberry Pi的设备,我想通过智能手机对其进行控制。选择取决于通过蓝牙的通信。我配对并连接了两个设备,没有任何问题,我将Android的数据发送到RPi没有任何问题。从RPi发送数据时出现了问题,短信正确发送,但是发送更多数据会导致问题。 InputStream丢失990个字节,我注意到一个数据包就是那么多字节。
这是我的代码
public static void ListenForData()
{
InStream = socket.InputStream;
byte[] dataBuffer = new byte[1024];
int dataBytes;
while (true)
{
byte[] fileBuffer;
try
{
using (var ms = new MemoryStream())
{
while (InStream.CanRead || InStream.IsDataAvailable())
{
dataBytes = InStream.Read(dataBuffer);
ms.Write(dataBuffer, 0, dataBytes);
fileBuffer = ms.ToArray();
File.WriteAllBytes(Path + "c.jpg", fileBuffer);
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
break;
}
}
}
[我使用BluetoothChat示例发送消息,在这种情况下它可以工作,但是例如发送图像会导致上述错误。
我找到了解决方案。原来,我两次运行了侦听线程。在两个地方(只有一个地方),我添加了用于检查线程是否已经正常工作的选项。纠正此错误后,一切正常。