esp8266 64bajty buforu? Dlaczego to sie sypie?

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?

Reply to
sczygiel
Loading thread data ...

W dniu środa, 12 lipca 2017 00:33:42 UTC+2 użytkownik snipped-for-privacy@gmail.com napisał:

Dobra, juz wiem :) Bez sensu najpierw czytam odpowiedź a potem zadaje zadanie dla esp i nastepnie robie cale czytanie sensorów i czekam 500ms.

Trzeba to przepisać na cos sensowniejszego :)

Reply to
sczygiel

Użytkownik napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@googlegroups.com... W dniu środa, 12 lipca 2017 00:33:42 UTC+2 użytkownik snipped-for-privacy@gmail.com napisał:

A moze wystarczy bufor powiekszyc?

Bo jak sie domyslam, ta softwareowa biblioteka na przerwaniach port czyta ... to dac wiekszy bufor i po sprawie.

Tylko pamietac, ze z Wifi moze przyjsc z 10MB/s :-)

J.

Reply to
J.F.

W dniu środa, 12 lipca 2017 11:54:34 UTC+2 użytkownik J.F. napisał:

Dla testu dalem 250 bajtów. Ale to złe rozwiązanie :)

Juz znalazlem feler. Wieczorkiem sobie poprawie.

A DOS-a to mozna zrobic w sumie chyba kazdemu :) na różne sposoby więc narazie sie tym nie martwie, jak mi ktos zdosuje te stacje pogody to sie zaczne martwic :)

Reply to
sczygiel

ryzykując przecfelenie, zapytam...

z czego korzystasz przy kompilacji - jaki tool i jaki opis pdf?

o co chodzi z tym debugowaniem po serialu?

Reply to
invalid unparseable

W dniu środa, 12 lipca 2017 18:07:05 UTC+2 użytkownik wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU napisał:

Całośc sie nazywa arduino.

Normalnie musisz mieć mikrokontroler, plytke pcb, programator i co tam sobie chcesz do tego mikrokontrolera podłaczyć. To sporo zachodu nawet jak sie montuje takie zabawy na plytce prototypowej (tej grubej, nie tej pcb z milyjonem otworów).

Jakieś ludki wymyslili ze mozna ludziom sprzedać mikrokontroler na plytce z interfejsem usb i headerami dla wygodnego podpinania dodatkowych układów.

Do tego dodali środowisko programistyczne które tez nazywa sie arduino. Pisze sie w nim w C. Ale w praktyce programy wychodzą mocno podobne do basica bo wiekszość tego co chcesz robic jest juz przez kogos napisana i tylko posługujesz sie biblioteką.

I np. zamiast dumać jak ustawić port szeregowy po prostu piszesz Serial.begin(115200); i juz masz calosc ustawiona.

W praktyce praca wyglada tak ze podpinasz te plytke do kompa po usb, uruchamiasz te środowisko arduino i piszesz programy. Do dyspozycji masz mini terminal szeregowy i zazwyczaj aby sprawdzić co tam w programie sie dzieje piszesz sobie np. Serial.println("wartosc zmiennej X:"+X); I elegancko widzisz jaka wartosc ma ta zmienna w okienku terminala.

W moim przypadku uparłem się ze wykorzystam mniejsza i tansza plytke która ma tylko jeden sprzetowy serial. A moduł wifi komunikuje sie z plytka wlasnie po serialu. I aby debugowac i korzystac z modułu wifi potrzebuje dwu serialów. Dlatego skorzystałem z programowego seriala jako dodatkowego.

Serial - łącze szeregowe Pi*oko zgodne z rs232 Arduino -

formatting link
do pisania dla arduino -
formatting link
Na allegro mozna kupic "podróbki" arduino za niewielkie pieniądze i zacząc się bawić.

Dokumentacja jest w wiekszości tu:

formatting link
kazda biblioteka ma swoje przyklady do odmałpowania. I czasem trzeba grzebnąć w dokumentacji np. w przypadku modułu wifi tu:
formatting link

Reply to
sczygiel

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.