Üdvözletem!
Adott egy UNO + ethernetshield. Cliens módban adatokat küldök egy szerverre. A visszaérkező adatokat pedig szeretném feldolgozni.
Mivel a sram véges ezért megkérdezném, hogy miként lehet ideglenesen elmenteni a visszaérkező adatokat hogy a részemre szükséges adatokat kiszedjem belőle?
Az oldal kódja ami visszaküldésre kerül:
HTTP/1.1 200 OK
Date: Sat, 27 Sep 2014 19:44:09 GMT
Server: Apache/2.2.23 (CentOS)
X-Powered-By: PHP/5.2.17
Content-Length: 32
Connection: close
Content-Type: text/html; charset=UTF-8
12345678901234567890123456789000
A fejlécből kiderül hogy az adat ami nekem kell 32byte méretű. Jelen esetben a "12345678901234567890123456789000" Viszont nem tudom hogyan kezeljem le. String változót nem használhatok mert az túl rövid. Több 100byte helyet meg nem szívesen foglalnák le.
Esetleg figyeljem a Content- Type: sort és utána kezdjem el menteni az adatokat?
Vagy egy másik lehetőség hogy az egészet szépen sd kártyára kiiratom és amikor megvan a teljes letöltés akkor keresek benne.
Hogy szokták ezt szépen memóriahatékonyan feldolgozni?
Honlap kódból adat kinyerése.
Re: Honlap kódból adat kinyerése.
Ahogy én csinálnám:
Keresem az ENTER-t (\n)
Az _utána_ jövő válasz tudod hogyan kezdődik? nézd a kerektereket és ha az első 3 egyezik, fogadd el. A válasz nálam valami ilyesmi:
OK:státuszkód
Innen az ENTER után a szövegláncban az 1..3. karakter OK:
Csak ezt a karakterláncot tartom meg.
Hátulütő: a OK: után csak 32...120 ASCII kódok jöhetnek, ENTER nem.
Keresem az ENTER-t (\n)
Az _utána_ jövő válasz tudod hogyan kezdődik? nézd a kerektereket és ha az első 3 egyezik, fogadd el. A válasz nálam valami ilyesmi:
OK:státuszkód
Innen az ENTER után a szövegláncban az 1..3. karakter OK:
Csak ezt a karakterláncot tartom meg.
Hátulütő: a OK: után csak 32...120 ASCII kódok jöhetnek, ENTER nem.
Re: Honlap kódból adat kinyerése.
Úgy látszik megoldottam a segítségeddel.
Mivel a fejléc után 2db enter van így a következőképpen oldottam meg az enterek ellenőrzését. (13,10,13,10)
A 24 byte méretű String jelenleg elég.
A jelenlegi feladathoz legalábbis.
Adatokat küldök egy szerverre és a visszatérő adatok tartalmazzák a kimeneteim állapotát. Így egy karakterrel 4 kimenetem állapotát be tudom állítani.
Valószínűleg beteszek még egy azonosítót is hogy tudjam milyen adatokat kapok vissza. De ez már megy ha idáig eljutottam.
Mivel a fejléc után 2db enter van így a következőképpen oldottam meg az enterek ellenőrzését. (13,10,13,10)
Kód: Egész kijelölése
char enter[4]={0,0,0,0};
char elfogadva=0;
void loop()
{
if (client.available())
{
char c = client.read();
Serial.print(c);
if(!elfogadva)
{
enter[0]=enter[1];
enter[1]=enter[2];
enter[2]=enter[3];
enter[3]=c;
if(enter[0]==13 && enter[1]==10 && enter[2]==13 && enter[3]==10)
{
elfogadva=1;
}
}
else
{
if(adat_http.length()<23)
{
adat_http=adat_http+c;
}
}
}
kimenet=adat_http;
if (!client.connected())
{
elfogadva=0;
}
A jelenlegi feladathoz legalábbis.
Adatokat küldök egy szerverre és a visszatérő adatok tartalmazzák a kimeneteim állapotát. Így egy karakterrel 4 kimenetem állapotát be tudom állítani.
Valószínűleg beteszek még egy azonosítót is hogy tudjam milyen adatokat kapok vissza. De ez már megy ha idáig eljutottam.