命令提示符重定向到Arduino无法正常工作

时间:2012-06-13 04:42:12

标签: windows-xp serial-port arduino

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

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

mode com7:9600,n,8,1

但是,当我尝试向其发送整数以便解析时,没有任何反应,例如:

ECHO 2 > COM7

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

编辑请注意,我已尝试使用Arduino串行监视器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;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我想到了两件事:

  • 您是否尝试echo 2 > com7:(请注意冒号)?

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

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

答案 1 :(得分:0)

好吧,我不知道该怎么做,上面的答案没有用,我手头有一个备用的Arduino UNO。我将UNO插入我的继电器板,上传了相同的代码,现在一切都可以从命令提示符和上面提到的三个程序中运行。

有没有人知道为什么在UNO上使用与Diecimila相同的代码会有不同的行为?

我的印象是代码的行为应该与Arduino的类型无关。无论如何,我将从现在开始使用UNO,因为我需要通过命令提示符与它进行通信。