Vad missar jag här?
Postat: 20 mars 2020, 14:19:54
Har denna kod där jag inte vill att något skall skickas förrän jag vet att den seriella bufferten är tom, således det första while. Den andra while för att inte göra något av det understa förrän data finns i bufferten och detta direkt efter så inget annat läggs där så jag vet att det kommer från rätt ställe
Utan den sista while funkar allt fint as is men så fort jag lägger till den sista while (samma med if som test) får det frispel och skickar ut det ovan på serieporten braaa många fler ggr än vad den skall och jag får inte ihop på vilket sätt den kan göra det på.
Det enda den verkar göra är att den hoppar till slutet av den förra while och gör allt efter i samma takt som loop men det skall den väl inte kunna göra utan bara loopa while raden tills frågan blir sann och stoppa loop från att röra sig ända till så sker?
Utan den sista while funkar allt fint as is men så fort jag lägger till den sista while (samma med if som test) får det frispel och skickar ut det ovan på serieporten braaa många fler ggr än vad den skall och jag får inte ihop på vilket sätt den kan göra det på.
Det enda den verkar göra är att den hoppar till slutet av den förra while och gör allt efter i samma takt som loop men det skall den väl inte kunna göra utan bara loopa while raden tills frågan blir sann och stoppa loop från att röra sig ända till så sker?
Kod: Markera allt
void vac_value() {
if ((millis() - time_now) >= period) {
time_now = millis();
while (Serial.available() == 0) { //Finns det data loopa raden tills motsatsen händer, det nollställs efter några ms.
Serial.print("@254PR3?;FF");
vac_sent = HIGH; //Används på ett annat ställe
while (Serial.available() > 0) { //Finns ingen data loopa raden till så sker
String data = Serial.readString();
String vac = data.substring(7, 14);
lcd.setCursor(4, 0);
lcd.print(vac);
vac_sent = LOW;
}
}
}
}