Массив индексации HardwareSerial

Как индексировать порты HardwareSerial в один массив?

Это компилируется, но не работает.

HardwareSerial Serials[]={Serial,Serial1,Serial2,Serial3};

void setup(){
    for (int i=0;i<=3;i++){
        Serials[i].begin(38400);
        while (!Serials[i]);
    }
}

char s;
void loop(){
    for (int i=0;i<=3;i++){
        if (Serials[i].available()){
            s=Serials[i].read(); 
            Serials[i].write(s); 
        }
    }
}

, 👍0

Обсуждение

пожалуйста, в следующий раз предоставьте код, который компилируется, @Juraj


1 ответ


Лучший ответ:

5

ваш код копирует Serial в элементы массива HardwareSerials. Чтобы использовать исходные объекты Serial, сохраните и используйте указатели.

HardwareSerial* Serials[]={&Serial,&Serial1,&Serial2,&Serial3};

void setup(){
    for (int i=0;i<=3;i++){
        Serials[i]->begin(38400);
        while (!*Serials[i]);
    }
}

void loop(){
    for (int i=0;i<=3;i++){
        if (Serials[i]->available()){
            char s=Serials[i]->read();
            Serials[i]->write(s);
        }
    }
}
,