返回char数组arduino的不同部分 [英] Returning different parts of a char array arduino
问题描述
I asked a question here about my issue and thanks to @enhzflep I solved the huge part of my problem. My problem was if I write 46754!ABCDEFG12345#qwerwe to the serial, I want to get AB which is two chars after '!'. The code below does this work perfectly. However now I need to get 'CD', 'EF', three chars before '#' (for my example it means '345') and the whole thing between these things which is 'G12' the size of 'G12' depends on the size of the whole thing between '!' and '#'. In short I want to get different parts of the char array between '!' and '#'.
char pack[5] = {0};
char command[5] ={0};
int Index = 0;
bool Seen = false;
void setup(){
Serial.begin(9600);
}
void loop(){
while (Serial.available() > 0){
char received = Serial.read();
if (received == '!')
{
Seen = true;
}
else if (received == '#')
{
return strdup(pack);
return strdup(command);
}
else if (Seen == true){
if(Index<2){
pack[Index++] = received;
Serial.print(received);
}
/*if(Index>2&&Index<5){
command[Index++] = received;
Serial.print(received);
} */
}
}
return NULL;
}
推荐答案
我自己无法测试任何代码,但我认为这应该可以工作.将command
的分配更改为200字节.您注释掉的代码似乎大部分是正确的.我只是做了一些小改动:
I can't test any code myself, but I think this should work. Change the allocation of command
to 200 bytes. Your commented out code seemed mostly correct. I just made some minor changes:
if(Index>=2){
command[Index-2] = received;
Index++;
Serial.print(received);
}
这篇关于返回char数组arduino的不同部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!