返回char数组arduino的不同部分 [英] Returning different parts of a char array arduino

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

问题描述

我问了一个问题

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆