使用Visual C#的Arduino使得软件无法正常工作

时间:2015-03-27 12:22:01

标签: c# c arduino

我是新来的,所以我对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);

}

1 个答案:

答案 0 :(得分:0)

我认为代码结构有很多原因。

1- Serial.read(); 会返回一个字符,因此每次尝试阅读时您只有一个字符 2 - 你正在使用案例' ON':我不确定arduino如何解释它。 这里有一些关于switch case的一般规则:

  
      
  1. '案例'的值必须是整数或字符常量
  2.   
  3. 列出项目'案例的顺序'陈述不重要
  4.   
  5. 列表项可以首先出现默认子句(约定将它放在最后),不能使用表达式或范围
  6.   

3-您需要在使用后读取整个串行缓冲区 while(Serial.avilable()){}然后你可以检查收到的字符串是否包含或等于ON / OFF / INTER

我真的不知道arduino会对' INTER'或者' OFF'单引号标识单个字符