我有一个简单的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串行监视器PuTTY和HyperTerminal。所有这些程序都很好地与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;
}
}
}
答案 0 :(得分:0)
我想到了两件事:
您是否尝试echo 2 > com7:
(请注意冒号)?
Windows中的行分隔符是双字节序列CR / LF。也许串行监视器使用另一个,你的Arduino草图不理解CR / LF。
如果这没有帮助,您应该发布草图或SSCCE示例。
答案 1 :(得分:0)
好吧,我不知道该怎么做,上面的答案没有用,我手头有一个备用的Arduino UNO。我将UNO插入我的继电器板,上传了相同的代码,现在一切都可以从命令提示符和上面提到的三个程序中运行。
有没有人知道为什么在UNO上使用与Diecimila相同的代码会有不同的行为?
我的印象是代码的行为应该与Arduino的类型无关。无论如何,我将从现在开始使用UNO,因为我需要通过命令提示符与它进行通信。