У меня проблемы с входом во второй цикл Serial.available моего кода, расположенного в пакете.Пожалуйста, дайте мне знать, если вы видите что-то не так с кодом. Код Arduino
Входы: 1. «Пакет» -> я получаю +1 от последовательного монитора 2. «5 & 12! 23! 34! 59! 70!»-> Я получаю 0 от Serial Monitor.Для этого, я должен увидеть, 5 12 23 34 59 70
Пожалуйста, дайте мне знать, если вы видите что-то не так в этом коде и почему Serial.available не работает в пакете?
String incoming;
String readIncoming;
int i=0;
typedef struct {
int npins;
int addr[512];
}
measureList;
measureList list;
void setup() {
Serial.begin(9600);
Serial.println("Serial conection started");
incoming = ""; list.npins = 6;
}
void loop() {
while(Serial.available() > 0) {
incoming = Serial.readString();
if(incoming == "HI") { Serial.println("Steven"); }
if(incoming == "SampleAll") { SampleAll(); }
if(incoming == "Package") { Serial.println("+1"); Package(); }
}
}
void Package(void)
{
while(1)
{
if(Serial.available()>0 & i<= list.npins)
{
char recieved = Serial.read();
if (recieved != '&' & i == 0){incoming = incoming + recieved;}
if (recieved == '&' & i == 0){list.npins = incoming.toInt(); Serial.println(list.npins); incoming=""; i = 1;}
if (recieved != '!' & recieved != '&' & i > 0){incoming = incoming + recieved; }
if (recieved == '!' & recieved != '&' & i > 0){ list.addr[i] = incoming.toInt(); Serial.println(list.addr[i]);incoming = ""; i = i + 1;}
if (i == list.npins) {break;}
}
}
}