Я пытаюсь прочитать строки, отправленные с Arduino Uno через USB-соединение.Моя программа на Arduino работает нормально, и я получаю данные от Arduino в моем универсальном приложении.
В последовательном мониторе из Arduino IDE можно увидеть, что данные отправлены правильно.
Это выглядит так:
22.77;29.35;101352.00
22.77;29.36;101340.00
22.77;29.35;101347.00
22.77;29.35;101348.00
Это мой код для Arduino:
void loop() {
float temp = htu.readTemperature();
float humidity = htu.readHumidity();
float pressure = bmp.readPressure();
Serial.print(temp);
Serial.print(";");
Serial.print(humidity);
Serial.print(";");
Serial.print(pressure);
Serial.print("\r\n");
}
В окне вывода Visual Studio:
2201365.00
22.68;29.
35;101360.00
5;10136
Это мой код на C #:
private async Task RetrieveData()
{
string filter = SerialDevice.GetDeviceSelector("COM7");
var devices = await DeviceInformation.FindAllAsync(filter);
if (devices.Any())
{
string deviceId = devices.First().Id;
_device = await SerialDevice.FromIdAsync(deviceId);
if (this._device != null)
{
this._device.BaudRate = 9600;
this._device.StopBits = SerialStopBitCount.One;
this._device.DataBits = 8;
this._device.Parity = SerialParity.None;
this._device.Handshake = SerialHandshake.None;
_dataReader = new DataReader(_device.InputStream);
while (true)
{
var bytesRecieved = await this._dataReader.LoadAsync(21);
if (bytesRecieved > 0)
{
string data = _dataReader.ReadString(bytesRecieved);
string[] block = data.Split('\n');
Debug.WriteLine(data);
//await Window.Current.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
//{
// _tblkTemperature.Text = block[0].Split('=')[1] + " °C";
// _tblkHumidity.Text = block[1].Split('=')[1] + "% rH";
// _tblkPressure.Text = block[2].Split('=')[1] + " Pa";
//});
}
await Task.Delay(500);
}
}
}
}
Я давно ищу решение, ноЯ ничего не нашел.