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

C# Arduino使用Visual C制作的软件无法正常工作,c#,c,arduino,C#,C,Arduino,我是新来的,所以我有一个关于Arduino和Visual C软件的问题。 我正在制作一个软件,通过COM5端口将数据发送到我的arduino设备,我有3组字,ON、OFF和INTER。ON=高亮LED,OFF=低亮LED,INTER使其闪烁。ON工作,OFF也工作,但当我按下我的软件时,向我的arduino发送INTER数据的按钮会收到ON信号,所以它会在发送ON数据时保持通电 这是我的arduino代码。我不认为是从我的C软件,因为其他一切工作正常,但在发送INTER-word到我的char变

我是新来的,所以我有一个关于Arduino和Visual C软件的问题。 我正在制作一个软件,通过COM5端口将数据发送到我的arduino设备,我有3组字,ON、OFF和INTER。ON=高亮LED,OFF=低亮LED,INTER使其闪烁。ON工作,OFF也工作,但当我按下我的软件时,向我的arduino发送INTER数据的按钮会收到ON信号,所以它会在发送ON数据时保持通电

这是我的arduino代码。我不认为是从我的C软件,因为其他一切工作正常,但在发送INTER-word到我的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-Serial.read;返回一个字符,因此每次尝试读取时只有一个字符 2-您正在使用案例“ON”:我不确定arduino如何解释它。 以下是有关开关箱的一些一般规则:

“case”的值必须是整数或字符常量 列表项“case”语句的顺序不重要 列表项默认子句可能出现在第一个约定的最后一个位置。您不能使用表达式或范围 3-一旦串行缓冲区可用,您需要使用 whileSerial.aviable{}则可以检查收到的字符串是否包含或等于ON/OFF/INTER


我真的不知道arduino如何理解“INTER”或“OFF”,因为单引号标识单个字符

如果在检查data==“INTER”之前对Serial.read进行重复调用,我已经尝试过了。我已经消除了那个副本,但仍然没有结果。我的原始草图没有那个副本。我试图重新读取数据字符,但是。。。同样的结果。。。我在想…那个开关盒说明。。我猜arduino没有离开开关箱,它一直在用开关箱的说明。。。但是我真的不知道发生了什么事。。我也在考虑用整数变量发送数据,看看这些信息是否以某种方式分布在arduino设备上。