首页 > 解决方案 > C#:serialPort 每次读取新数字

问题描述

问题很复杂,我的代码也很大,但让我试着解释一下。

请看下面的代码:

private void button13_Click(object sender, EventArgs e)
        {
            serialPort1.Write("0800");  // Write to serial port for reading
            Thread.Sleep(1);
            serialPort1.Write("0800");  // Write to serial port for reading
            in_data = serialPort1.ReadLine();
            textBox7.Text = in_data;
            Console.WriteLine(in_data);
            in_data = "";
            serialPort1.DiscardInBuffer();
            serialPort1.DiscardOutBuffer();
        }

让我解释一下:我以 C# 形式实现了一个按钮。当我按下按钮时,它通过serialPort1向arduino发送0800。它发送了两次。每次发送命令后,Arduino 都会通过 Serial.println(receivedData, HEX). 来自 Arduino 的这些数据由 C#(上面的函数通过in_data = serialPort1.ReadLine()line 读取并显示在 textBox7 中。在函数的最后一个,我正在清除两个缓冲区。但是问题是,每当我按下此按钮时,都会显示一些新数据在文本框中。

而且我不明白原因,因为连接到 arduino 的电路应该总是以相同的代码响应。我已经用其他夹具测试了电路,否则该电路工作正常。写入串行端口工作得很好。例如这个函数:

 private void button6_Click(object sender, EventArgs e)
        {
            serialPort1.Write("EXTADC");  // Write to serial port
            Console.WriteLine("EXTADC");
        }

请注意:每次发送两个命令是必要的,以便从电路中获得所需的输出。此外,我对 Arduino 和 C# 还很陌生(您可能从我的帖子中有所了解)。

标签: c#serial-portarduino-uno

解决方案


推荐阅读