超时读取Arduino的串口

时间:2018-08-19 11:01:37

标签: c# winforms arduino serial-port

我有一个C#dll,我想在其中读取Arduino的串行端口。对于此测试,我只发送“ 1 1”。我无法让C#读取此内容,但总是会收到超时错误。我尝试了各种波特率,port.ReadLine,port.ReadByte(在C#中)以及Serial.print和Serial.println(在Arduino中)的各种组合。 Arduino是Teensy USB CDC(如果有的话)。设备管理器中的端口设置似乎还可以,就像在串行端口监视器中一样,我可以看到Arduino输出(貌似)很好:

enter image description here

C#代码。

int interval = 25;
using (SerialPort port = new SerialPort("COM9", 57600, Parity.None, 8, StopBits.One)) {
                    port.ReadTimeout = 7000;
                    port.NewLine = "\r";
                    try {
                        string output = null;
                        port.Open();
                        while (output == null && loopCnt < (timeOut / interval)) {
                            output = port.ReadLine();
                            Thread.Sleep(interval);
                            loopCnt++;
                        }
                        MessageBox.Show("output: [" + output+"]");

Arduino代码:

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

void loop() {
    Serial.print("1 1");
    Serial.print('\r');
    delay(5000);
}

1 个答案:

答案 0 :(得分:0)

已解决:端口设置需要port.RtsEnable = true;