繁体   English   中英

带有Visual C#的Arduino软件无法正常工作

[英]Arduino with Visual C# made software don't properly work

我是新来的,所以我对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- Serial.read(); 返回一个字符,因此每次尝试读取时只有一个字符
2-您正在使用情况'ON':不知道arduino如何解释它。 以下是有关开关案例的一些一般规则:

  1. “ case”的值必须是整数或字符常量
  2. 列表项中“ case”语句的顺序不重要
  3. 列出默认子句可能首先出现(约定放在最后)的项目,不能使用表达式或范围

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

我真的不知道arduino会把'INTER'或'OFF'当作什么,因为单引号标识一个字符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM