Возврат различных частей массива символов arduino - PullRequest
0 голосов
/ 10 апреля 2020

Я задал вопрос здесь о моей проблеме, и благодаря @enhzflep я решил большую часть своей проблемы. Моя проблема заключалась в том, что если я напишу 46754! ABCDEFG12345 # qwerwe в сериал, я хочу получить AB, который состоит из двух символов после '!'. Код ниже делает эту работу отлично. Однако теперь мне нужно получить «CD», «EF», три символа до «#» (для моего примера это означает «345»), и все, что между этими вещами - «G12», размер «G12» зависит от размер всего этого между '!' а также '#'. Короче говоря, я хочу получить различные части массива char между '!' а также '#'.

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 Ответ

0 голосов
/ 10 апреля 2020

Я не могу протестировать любой код сам, но я думаю, что это должно работать. Измените распределение command на 200 байтов. Ваш закомментированный код казался в основном правильным. Я только что внес небольшие изменения:

if(Index>=2){
    command[Index-2] = received;
    Index++;
    Serial.print(received);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...