Returning different parts of a char array arduino

别说谁变了你拦得住时间么 提交于 2020-04-17 21:30:27

问题


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;
}

回答1:


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);
}


来源:https://stackoverflow.com/questions/61143922/returning-different-parts-of-a-char-array-arduino

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!