Ten kawałek kodu: void loop() { String dht_out; float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { dht_out="No DHT!"; } else { dht_out="TD="+String(t,1)+" HD="+String(h,1); } lcd.setCursor(0, 0); lcd.print("TB="+String(bmp.readTemperature(),1)+"PB="+String(bmp.readPressure()/100)+" "); lcd.setCursor(0, 1); lcd.print(dht_out);
delay(500);
//Komunikacja z esp do debuga String tmp=""; while (Serial.available()>0) { char inByte=Serial.read(); tmp+=inByte; } if (tmp.length()>0) { DebugSerial.print(tmp); }
//komunikajca z debuga do esp while (DebugSerial.available()>0) { char outByte=DebugSerial.read(); Serial.write(outByte); } }
Ma słuzyc narazie tylko jako interfejs przerzucający dane między jednym a drugim serialem. I dziala prawie dobrze. Problemem jest mianowicie przycinanie wyniku do 64bajtów. Mimo że kopiuje po kolei bajty z Serial za pomoca Serial.read to po 64 sztukach petla while sie konczy a po drugim przejsciu ogólnej petli juz nic nie czyta.
Po zwiększeniu bufora do 164 w pliku HardwareSerial.h wczytuje sie więcej.
Co robie nie tak? Czy mozliwe ze wciaganie bajtów z bufora po jednym jest na tyle wolne ze przy 115200 wczytanie 64 trwa tyle ze mi sie bufor od nowa napełni?