本文介绍了返回char数组arduino的不同部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我问了一个问题关于我的问题,感谢@enhzflep,我解决了我的大部分问题.我的问题是,如果我向序列写入46754!ABCDEFG12345#qwerwe,我想获取AB,它是'!'之后的两个字符.下面的代码可以完美地完成此工作.但是,现在我需要获取"CD","EF",#"之前的三个字符(例如,我的意思是"345"),以及这些东西之间的整个内容(即"G12"),"G12"的大小取决于整个事物的大小介于!"之间和 '#'.简而言之,我想在'!'之间获取char数组的不同部分.和 '#'.

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的不同部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 09:33