Arduino Serial.println печатает только первый символ правильно - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующий эскиз Arduino:

int hygrometer = A3;

void setup(){
  Serial.begin(9600);
}

void loop(){
  int value = analogRead(hygrometer);    
  value = constrain(value,400,1023);  
  value = map(value,400,1023,100,0);  
  Serial.println(value);
  delay(2000);
}

Однако, с другой стороны последовательного соединения (приложение .NET Core, размещенное на Raspberry Pi с Raspbian), я получаю некоторые странные результаты, так как правильно отображается только 1-й символ, остальные - просто случайные байты. Более того, если я запускаю Serial Monitor без приложения, прослушивающего последовательный интерфейс, значения отображаются правильно. Однако в тот момент, когда я запускаю приложение, Serial Monitor отображает то же самое.

Это код .NET Core для инициализации последовательной связи:

SerialDevice serial = new SerialDevice(port1, BaudRate.B9600);

serial.Parity = Parity.None;
serial.StopBits = StopBits.One;
serial.DataBits = 8;
serial.Handshake = Handshake.None;

serial.DataReceived += DataReceivedHandler;

if (serial != null && serial.IsOpen)
    serial.Close();

serial.Open();

Есть идеи о том, что происходит?

Спасибо!

1 Ответ

0 голосов
/ 28 июня 2019

Если вы запустите чтение в цикле while, возможно, вы сможете захватить остальные биты.Попробуйте это:

using System;
using System.IO.Ports;
using System.Threading;
namespace ConsoleApp1
{
    class Program
    {
        static SerialPort _serialPort;
        public static void Main()
        {
            _serialPort = new SerialPort();
            _serialPort.PortName = "COM4";  //Set your board COM
            _serialPort.BaudRate = 9600;
            _serialPort.Open();
            while (true)
            {
                string a = _serialPort.ReadExisting();
                Console.WriteLine(a);
                Thread.Sleep(200); // !!! Not sure if this is necessary !!!
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...