2

我有一个简单的 Arduino 程序,它从串行输入中解析一个 int 并打开一个螺线管。它与 Arduino 串行监视器(旧 Arduino,带 ATmega168的Diecimila )完美配合。

我的目标是从命令提示符将该数据发送到 Arduino。我已经通过运行确保命令提示符 com 设置正确:

mode com7:9600,n,8,1

但是,当我尝试将整数发送给它进行解析时,什么也没有发生,例如:

ECHO 2 > COM7

我也尝试过 ECHO '2' > COM7, ECHO "2" > COM7, (ECHO 2) > COM7 以及我能想到的所有其他变体。

编辑请注意,我已经使用 Arduino Serial Monitor、PuTTYHyperTerminal进行了尝试。所有这些程序都可以很好地与 Arduino 通信,并且螺线管按预期打开。我还尝试了下面的代码,Serial.parseInt()而不是Serial.read()在案例编号周围使用单引号和不使用单引号。再一次,在所有情况下,它都适用于上述三个程序,但不适用于命令提示符。

编辑这是我正在使用的草图:

int incoming;

void setup()
{
    Serial.begin(9600);
    pinMode(2, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(8, OUTPUT);
}

void loop()
{
    if (Serial.available > 0)
    {
        incoming = Serial.read();

        switch(incoming)
        {
            case '1':
                digitalWrite(2, HIGH);
                delay(2000);
                degitalWrite(2, LOW);
                break;
            case '2':
                digitalWrite(4, HIGH);
                delay(2000);
                degitalWrite(4, LOW);
                break;
            case '3':
                digitalWrite(6, HIGH);
                delay(2000);
                degitalWrite(6, LOW);
                break;
            case '4':
                digitalWrite(8, HIGH);
                delay(2000);
                degitalWrite(8, LOW);
                break;
        }
    }
}
4

1 回答 1

0

想到两件事:

  • 你试过echo 2 > com7:(注意冒号)吗?

  • Windows 中的行分隔符是两字节序列 CR/LF。也许串行监视器使用另一个监视器,而您的 Arduino 草图不理解 CR/LF。

如果那没有帮助,您应该发布草图或SSCCE示例。

于 2012-06-13T20:34:52.880 回答