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 中接收数据。
感谢所有的帮助
我试图通过蓝牙从我的 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 中接收数据。
感谢所有的帮助