Xamarin 蓝牙不会接收所有字节

Xamarin bluetooth won't receive all bytes

我试图通过蓝牙从我的 Xamarin 程序上的 windows 程序 Termite 接收数据。这是我用来接收数据的代码:

        public async Task BeginListenForData()
    {
        try
        {
            inStream = btSocket.InputStream;
            streamReader = new StreamReader(inStream);
        }
        catch (IOException ex)
        {
            Console.WriteLine(ex.Message);
        }

        char[] buffer = new char[256];
        int bytes;
        await Task.Run(async () =>
        {
            while (true)
            {
                try
                {
                    if ((bytes = await streamReader.ReadAsync(buffer, 0, buffer.Length)) > 0)
                    {
                        buffer = new Char[(int)streamReader.BaseStream.Length];
                        streamReader.Read(buffer, 0, (int)streamReader.BaseStream.Length);

                            System.Diagnostics.Debug.WriteLine(new String(buffer));

                            string eindtekst = new string(buffer, 0, bytes);
                            streamReader.DiscardBufferedData();

                        }
                    }
                    catch (Java.IO.IOException)
                    {
                        break;
                    }

                }
            }).ConfigureAwait(false) ;
            return;
        }

但是当我使用断点时,它大部分时间都会分两部分接收我的消息。例如字符串 "Received",它首先接收到 "R",然后是字符串的其余部分 "eceived"。有没有办法将消息作为一个部分接收?

此代码部分:bytes = await streamReader.ReadAsync(buffer, 0, buffer.Length 是其中 bytes 首先是 1 而不是 7 以字符串 "Received".

为例

在我发布的另一个问题中,我用它解决了这个问题。我在另一页上发布了我的答案,所以我将在另一页上留下一个 link 关于如何使用蓝牙在 Xamarin 中接收数据。

感谢所有的帮助