从串口读取的数据是分开的。代码+内部结果

时间:2019-03-31 16:23:35

标签: c# arduino serial-port windows-forms-designer

因此,我正在尝试从串行端口读取数据以与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,但我得到了分开的值以及许多空行。

有任何帮助。

EDIT#1:

这是Arduino代码:

int sensorPin=A0;
int sensorValue=0;

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

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

这是当我在arduino IDE中单击串行读取器时的结果(应该显示C#代码)

enter image description here

EDIT#2

更多地考虑了问题之后,我认为C#代码读取的数据不完整非常快,但是我没有解决方案,您知道我能尝试解决什么吗?

2 个答案:

答案 0 :(得分:0)

我不太懂C#,但是也许您应该在尝试读取数据之前等待数据进入串行缓冲区。一种方法是使用port.ReadExisting(),就像可以看到的here

希望有帮助!

答案 1 :(得分:0)

在loop()中插入20毫秒的延迟时间