【问题标题】:Timeout reading Arduino's serial port读取 Arduino 的串口超时
【发布时间】:2018-08-19 11:01:37
【问题描述】:

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

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);
}

【问题讨论】:

  • 你试过通过arduino软件连接arduino吗?
  • 如果您指的是 Arduino IDE 中的串行监视器,它会显示“1 1 1 1 1 1 ....”,即。正确的输出
  • 我自己没有尝试过,我已经通过蓝牙完成了一个项目,并与 Arduino pro 成功通信。我找到了一个你可能感兴趣的链接medium.com/@sawetefe/…
  • 谢谢,我会保留它以备将来参考。同时,我已经解决了(请参阅下面的答案):必须设置 port.RtsEnable = true;
  • 太好了,项目成功了!

标签: c# winforms arduino serial-port


【解决方案1】:

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

【讨论】:

  • 好好看看这个线程。有帮助吗?请指定更多信息,以便其他人可以发现这很有用。 1. 稍微改进您的问题- 2. 它真的需要启用 RTS 吗? 3. 为什么需要启用 RTS?如果这对任何人都没有帮助并且您不希望或不知道原因:请删除该线程。这是没有意义的......
猜你喜欢
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多