Xamarin形式-InputStream丢失一些叮咬,将无法读取所有数据

问题描述 投票:0回答:1

我是一名初学者,但是我喜欢挑战。在这些挑战中,我遇到了一个问题。

我正在构建基于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示例发送消息,在这种情况下它可以工作,但是例如发送图像会导致上述错误。

c# xamarin android-bluetooth
1个回答
0
投票

我找到了解决方案。原来,我两次运行了侦听线程。在两个地方(只有一个地方),我添加了用于检查线程是否已经正常工作的选项。纠正此错误后,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.