Arduino - 方法的串行消息太快

时间:2015-05-27 08:37:34

标签: java serial-port arduino

我遇到了一个问题,这个问题让我在处理项目时陷入困境。

我使用 java 向arduino的串口发送多个字符串,将字符串转换为某些方法, 所以字符串基本上代表'命令'。

无论如何,当我发送一个命令时,每个人都按照应有的方式工作。然而, 当我在很短的时间内发送多个字符串时,项目开始变得奇怪,并且 我相信方法是最重要的或类似的东西。

我发送命令为'id:amount',其中'id'是一个附加某种方法的数字,'amount'是一个乘以毫秒。

当我发送命令时,我希望它们触发一个特定的方法(来自arduino),就像我从循环方法中解雇它一样,它起作用,因为它们按照它们被放入的顺序触发,在一个延迟之后完了。

对不起,如果问题含糊不清。

这是我的代码:

    void setup() {
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  initiateCommands();
}

/*
 Reads all commands
*/
void initiateCommands(){
 if(Serial.available()){
   String cmd = Serial.readStringUntil('\n');
   String command = getValue(cmd, ':', 0);
   int cmdId = command.toInt();
   int amount = getValue(cmd, ':',1).toInt();
   if(amount < 1) amount = 1;
   switch(cmdId){
      case 0: up(amount); break;
      case 1: down(amount); break;
      case 2: left(amount); break;
      case 3: right(amount);break;
      case 4: forward(); break;
      case 5: backward(); break;
      case 6: bppLeft(amount); break;
      case 7: bppRight(amount); break;
      case 8: wait(amount); break;
    }
   pauseBPP();  
 } 
}

如果我得到两个命令,如'6:1'和'7:1',我想开枪 案例6案例7的方法是bppLeft(int)和bppRight(int)。

'int'值现在不重要,所以不要担心。 无论如何,这两种方法都有这种延迟,这就像一个持续延迟时间的动作。

重新创建我的结果如下:

void loop(){
   bppLeft(1);
   bppRight(1);
}

然后从串行打印中读取,并转换为方法。

希望这个问题有道理,

感谢。

0 个答案:

没有答案