Я пытался получать данные из программы windows Termite в моей программе Xamarin через Bluetooth. Это код, который я использовал для получения данных:
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».