我是新来的,所以我对Arduino和Visual C#软件有疑问。 我正在制作一个软件,通过COM5端口向我的arduino设备发送“数据”,我有3组单词,ON,OFF和INTER。 ON =高亮LED,OFF =低LED,INTER使其闪烁。 ON工作,OFF也工作,但是当我按下我的软件时,将INTER数据发送到我的arduino的按钮正在接收ON信号,因此它会在ON数据发送时保持通电状态。
这是我的arduino代码。 (我不认为是来自我的C#软件,导致其他一切正常但是将INTER字发送到我的char变量时闪烁不起作用。)
int led = 11;
int led13 = 13;
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{
digitalWrite(led13,LOW);
char data = Serial.read();
switch (data)
{
case 'ON': digitalWrite(led,HIGH); break;
case 'OFF': digitalWrite(led,LOW); break;
}
data = Serial.read();
if (data == 'INTER') { inter(); }
}
void inter()
{
digitalWrite(led,LOW);
delay(1600);
digitalWrite(led,HIGH);
delay(1600);
}
答案 0 :(得分:0)
我认为代码结构有很多原因。
1- Serial.read(); 会返回一个字符,因此每次尝试阅读时您只有一个字符 2 - 你正在使用案例' ON':我不确定arduino如何解释它。 这里有一些关于switch case的一般规则:
- '案例'的值必须是整数或字符常量
- 列出项目'案例的顺序'陈述不重要
- 列表项可以首先出现默认子句(约定将它放在最后),不能使用表达式或范围
醇>
3-您需要在使用后读取整个串行缓冲区 while(Serial.avilable()){}然后你可以检查收到的字符串是否包含或等于ON / OFF / INTER
我真的不知道arduino会对' INTER'或者' OFF'单引号标识单个字符