Garmaine Staff asked 2 years ago

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