Данные, считанные из последовательного порта, разделены Код + результат внутри - PullRequest
3 голосов
/ 31 марта 2019

Итак, я пытаюсь прочитать данные с последовательного порта для связи с Arduino.Вот код, который я использую:

    public partial class Form1 : Form
{
    SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

    public Form1()
    {
        InitializeComponent();
        port.Open();
        port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
    }


    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        this.Invoke(new EventHandler(DoUpDate));
    }

    private void DoUpDate(object s, EventArgs e)
    {
        textBox1.AppendText(port.ReadLine() + "\r\n");
    }
}

Но результат, который я получаю в текстовом поле (проверьте изображение):

enter image description here

Значение чтения должно быть 975, но я получил отдельные значения, а также много пустых строк.

Произведена любая помощь.

РЕДАКТИРОВАТЬ # 1:

Здеськод Arduino:

int sensorPin=A0;
int sensorValue=0;

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

void loop()
{
  sensorValue=analogRead(sensorPin);
  Serial.print(sensorValue);
  Serial.print("\n");
}

И вот результат, когда я нажимаю на последовательный считыватель в IDE arduino (который должен показать код C #)

enter image description here

РЕДАКТИРОВАТЬ # 2

Подумав больше о проблеме, я думаю, что код C # очень быстрый, он читает неполные данные, но у меня нет решения для этого, сделайтеВы знаете что-нибудь, что я могу попытаться решить?

1 Ответ

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

Я не бегло говорю на C #, но, возможно, вам следует подождать, пока данные будут в буфере Serial, прежде чем пытаться их прочитать.Метод для этого заключается в использовании port.ReadExisting(), как видно здесь !

Надеюсь, это поможет!

...