字符发送到串口没有被arduino读取

本文关键字:arduino 读取 串口 字符 | 更新日期: 2023-09-27 18:14:03

我正在从visual studio c#发送一个字符到串行端口,我希望arduino读取字符并做一些工作。但是,它读错了。我已经使用串行监视器测试了arduino程序,它工作得很好。这是我的c#代码。

private void startBit_Click(object sender, EventArgs e)
    {
        char start = '!';
        byte[] buffer = new byte[] { Convert.ToByte(start) };
        timerRealTimeData.Enabled = true;
        serialPort1.PortName = "COM29";
        serialPort1.BaudRate = 9600;
        serialPort1.DtrEnable = true;
        serialPort1.Open();
        serialPort1.Write(buffer, 0, 1);
        if (serialPort1.IsOpen)
        {
            Start.Enabled = false;
            Stop.Enabled = true;
        }
    }

下面是读取串口的arduino代码

char incomingByte;
void setup()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}
 void loop()
 {
 if(Serial.available() > 0) {
  incomingByte = Serial.read();
  if(incomingByte=='!')
      {
        digitalWrite(13,HIGH);
        delay(2000);
        digitalWrite(13,LOW);
      }
  }
}

我被困在这个很长一段时间。

字符发送到串口没有被arduino读取

尝试使用int而不是char读取等效的Ascii(33)。同时修改

一行
if(Serial.available() > 0)

if(Serial.available())

给你一些参考。

首先,创建一个打开串行端口的函数和一个关闭串行端口的函数。单击处理程序startBit_Click打开串行端口,这意味着如果再次调用该处理程序,则端口已经打开,并且将生成异常。(除非您有其他未显示关闭串行端口的代码?)

第二,我猜你是通过USB端口连接到arduino的?如果是,DtrEnable应该是false(默认),因为您没有XON/XOFF软件握手。

你还应该在调试窗口中检查缓冲区,在缓冲区被分配字符后设置一个断点,并检查你发送的字符是否确实是你认为的。