我遇到了一个问题,这个问题让我在处理项目时陷入困境。
我使用 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);
}
然后从串行打印中读取,并转换为方法。
希望这个问题有道理,
感谢。