问题描述
我问了一个问题 此处 关于我的问题,感谢@enhzflep,我解决了大部分问题.我的问题是,如果我将 46754!ABCDEFG12345#qwerwe 写入串行,我想得到 AB,它是 '!' 之后的两个字符.下面的代码完美地完成了这项工作.但是现在我需要得到CD"、EF"、#"之前的三个字符(在我的例子中它意味着345")以及这些东西之间的全部内容,即G12",G12"的大小取决于'!' 之间的整个事物的大小和 '#'.简而言之,我想在 '!' 之间获取字符数组的不同部分.和 '#'.
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的不同部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!