Я знаю, это звучит просто, но у меня возникли некоторые проблемы с этим. Я пытаюсь создать систему с микроконтроллером pi c (MCU) и приложением xamarin android. Отправка части из приложения в pi c MCU решена, но когда я хочу отправить данные из MCU в приложение, она не будет go безупречной. Я использую H C -06 в качестве устройства Bluetooth для приема и отправки сообщений.
Код для приема от MCU к приложению:
public void beginListenForData()
{
try
{
inStream = btSocket.InputStream;
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
}
Task.Factory.StartNew(() => {
byte[] buffer = new byte[1024];
int bytes;
while (true)
{
try
{
Array.Reverse(buffer, 0, buffer.Length);
bytes = inStream.Read(buffer, 0, buffer.Length);
if (bytes > 0)
{
string valor = Encoding.ASCII.GetString(buffer);
System.Diagnostics.Debug.WriteLine(buffer);
System.Diagnostics.Debug.WriteLine(bytes);
System.Diagnostics.Debug.WriteLine(valor);
if (valor == "D0O")
{
System.Diagnostics.Debug.WriteLine("Vergelijking gelukt!");
break;
}
//Result.Text = Result.Text + "\n" + valor;
}
}
catch (Java.IO.IOException)
{
//Result.Text = string.Empty;
break;
}
}
});
}
Как вы, возможно, мог бы получить сообщение, которое я пытаюсь отправить от MCU, это D0O (доблесть), когда сравнение работало с входящим сообщением, которое я хочу отладить, запись была успешной:
System.Diagnostics.Debug.WriteLine("Vergelijking gelukt!");
Следующая часть для проверки что за данные поступают:
System.Diagnostics.Debug.WriteLine(buffer);
System.Diagnostics.Debug.WriteLine(bytes);
System.Diagnostics.Debug.WriteLine(valor);
Я заметил странный вывод (см. изображение):
As Вы можете видеть, что сообщение разрезается на 2 части каждый раз. Кто-нибудь знает, почему и как это решить?
Я изменил порядок массива с помощью:
Array.Reverse(buffer, 0, buffer.Length);
Поскольку я заметил, что он введен в неправильном порядке. Это сработало, чтобы поставить его в правильном порядке.
Небольшое обновление:
Я изменил некоторую строку кода, и она работает более "безупречно"
while ((count = inStream.Read(buffer, 0, buffer.Length)) > 0)
Но что Странно, что первый бит отделяется от остальной части получаемой строки. Я не уверен, что вызывает эту проблему, если у кого-то есть идея?
Заранее спасибо.