odesilani dat
283 příspěvků · strana 2 z 12
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
peta: Měl by sis to přečíst znovu, pak bys zjistil, že tu kecáme o něčem úplně jiném. Ano. Ze začátku jsme na to také naletěli, ale pak to pochopili. Tak snad to pochopíš i ty. Pokud to chápu, tak problém bude zřejmě v HTTP požadavku. Chtělo by to získat aspoň ten dotaz, který se snaží poslat na server. Klient vrací 302 na adresu, která evidentně existuje. Což v případě WZ může znamenat pouze dvě věci. Buď špatná cesta nebo neúplný HTTP požadavek. Jak jsem již vysvětlovat, zde na WZ se uplatňuje virtualhost, takže je potřeba, aby v dotazu byla hlavička Host: hrdlickovi.wz.cz, jinak se to neodešle na správné místo. Cesta /3w/wz.cz/h/hrdlickovi je tzv absolutní cesta z pohledu serveru. Má smysl pouze při manipulaci v serveru. Ze strany klienta tento nemá žádný efekt. Si to představ stejně jako c:\windows. Je to jen cesta ve tvém počítači. Kdokoli z venku tuto cestu nevidí.
-
Je mi divné, že na jiný server to jde a sem ne. A přitom v programu vlastně změním jen IP adresu na server kde mám stránky tj. 88.86.113.152 a cestu k ménu souboru php tj. hrdlickovi.wz.cz/data.php co myslíš tou hlavičkou? Host:
-
Princip fungování webu. Zadáš adresu http://hrdlickovi.wz.cz/data.php. Jelikož komunikace mezi počítači probíhá pouze formou IP adresy, tak je hrdlickovi.wz.cz přeloženo jako 88.86.113.152 a takto se to pak posílá na server. Prohlížeč to přeloží a pošle jako http://88.86.113.152/data.php. No a když zkusíš tuto adresu s IP, tak zjistíš v čem je zakopaný pes. Aby to fungovalo správně, tak je potřeba do hlavičky přidat záznam, že se jedná o doménu hrdlickovi.wz.cz. A to se provádí právě zápisem HTTP hlavičky Host: hrdlickovi.wz.cz. Takže ve tvém případě je potřeba zjistit, jak do http_get vložit buď doménu nebo aspoň tu hlavičku Host. Jen tak ze zvědavosti, pokud používáš stejný kód, máš správně i příkaz dns_resolv()?
-
tak jsem na to asi přišel, něco mi to již posílá. Chybělo slovo "localhost" To "Tomik" doky za nakopnuti http_get(88,86,113,152,'localhost.hrdlickovi.wz.cz','/data.php?teplota=22', ;
-
Ještě jedna věc, Dá se vyčíst ze souboru.txt určitý počet znaků? třeba od 5 znaku do 10... znám jen <?php $filename = FOpen ("teploty.txt","r"); $txt = FGetC($filename); echo $txt; FClose($filex); ?> což vypíše první znak pak FGetC který sice vypíše určitý počet znaků který si zadám ale od začátku, ne třeba od 20 znaku
-
tohle mi jde :-) <?php $filename = FOpen ("teploty.txt","r"); fseek($filename,19); $txt = FGetS($filename,5); echo $txt; FClose($filex); ?>
-
Koukám, že v tom souboru máš teploty oddělené středníky. To se dobře zpracovává například funkcí split() nebo strtok(). Záleží na tom, jestli ty hodnoty potřebuješ naráz nebo v cyklu. Doporučuji každou hodnotu opatřit číslem senzoru a časovým razítkem. Každý záznam ukončit novým řádkem. Pak se to zpracovává poměrně lehce a vůbec se nemusíš trápit s funkcí fseek(). Asi takto: s1;20111010204500;46.31 s1;20111010204600;13.31 s1;20111010204700;54.68 Čte se to pak opět funkcí fgets(), ale mnohem jednodušeji bez fseek(). Ještě jednodušší je to s databází, protože ta si časové razítko umí vygenerovat sama.
-
čas a datum zaznamenávám také. Jen nezobrazuji. spíše bych potřeboval, jak ukládat hotnoty do jednotlivých řádků a ne vše na jeden.
-
A to je takový problém při ukládání řádku přidat na konec "\n"?
-
bohužel je ($raw_udaje["T01"]/100) . ";" . ($raw_udaje["T02"]/100) . ";" . ($raw_udaje["T03"]/100) . ";" . ($raw_udaje["T04"]/100) . ";" . ($raw_udaje["T05"]/100) . ";" . ($raw_udaje["T06"]/100) . ";" . ($raw_udaje["T07"]/100) . ";" . ($raw_udaje["T08"]/100) . ";" . ($raw_udaje["T09"]/100) . ";" . ($raw_udaje["T10"]/100) . ";" . ($raw_udaje["T11"]/100) . ";" . ($raw_udaje["T12"]/100) . ";" . ($raw_udaje["T13"]/100) . ";" . ($raw_udaje["T14"]/100) . ";" . ($raw_udaje["T15"]/100) . ";" . ($raw_udaje["T16"]/100) . ";" ."\n"; $handle = fopen("teploty.txt", "w+"); $načteno = fread($handle, 70); fwrite($handle,$text); fclose($handle); }; zkoušel jsem to "\n" pasovat všude ale nic.
-
fwrite($handle,$text."\n");
-
bohužel stále nic :-( zkouším vše možné i kamaráda googla.
-
Moment, to v PHP na WZ musí fungovat. Běžně to používám. Ještě můžeš zkusit DOSovský formát. Poslyš, proč tak podivně pracuješ s tím souborem, když to jde mnohem jednodušeji? $handle = fopen("teploty.txt", "a"); fwrite($handle,$text."\r\n"); fclose($handle); Podívej se pořádně. Mezi $text a "\r\n" není čárka, ale tečka.
-
PHP neumím, jedu podle knížek a netu "pokus-omyl"
-
Neumíš PHP a snažíš se dělat vychytávky, kterým se i já vyhýbám kvůli možným kolizím v kritické sekci? To není dobrý nápad. Vyzkoušej ten příklad, který jsem poslal v předchozím příspěvku. Samozřejmě je to kód, který přijde na server.
-
vše co zatím chci, je posílat data z mého zařízení do souboru.txt a z něj vyčítat na webové stránky. Později grafy.
-
toto muj PHP <?php // $raw_udaje["T01"] = htmlspecialchars($_GET['T01'], ENT_QUOTES, "UTF-8"); $raw_udaje["T02"] = htmlspecialchars($_GET['T02'], ENT_QUOTES, "UTF-8"); $raw_udaje["T03"] = htmlspecialchars($_GET['T03'], ENT_QUOTES, "UTF-8"); $raw_udaje["T04"] = htmlspecialchars($_GET['T04'], ENT_QUOTES, "UTF-8"); $raw_udaje["T05"] = htmlspecialchars($_GET['T05'], ENT_QUOTES, "UTF-8"); $raw_udaje["T06"] = htmlspecialchars($_GET['T06'], ENT_QUOTES, "UTF-8"); $raw_udaje["T07"] = htmlspecialchars($_GET['T07'], ENT_QUOTES, "UTF-8"); $raw_udaje["T08"] = htmlspecialchars($_GET['T08'], ENT_QUOTES, "UTF-8"); $raw_udaje["T09"] = htmlspecialchars($_GET['T09'], ENT_QUOTES, "UTF-8"); $raw_udaje["T10"] = htmlspecialchars($_GET['T10'], ENT_QUOTES, "UTF-8"); $raw_udaje["T11"] = htmlspecialchars($_GET['T11'], ENT_QUOTES, "UTF-8"); $raw_udaje["T12"] = htmlspecialchars($_GET['T12'], ENT_QUOTES, "UTF-8"); $raw_udaje["T13"] = htmlspecialchars($_GET['T13'], ENT_QUOTES, "UTF-8"); $raw_udaje["T14"] = htmlspecialchars($_GET['T14'], ENT_QUOTES, "UTF-8"); $raw_udaje["T15"] = htmlspecialchars($_GET['T15'], ENT_QUOTES, "UTF-8"); $raw_udaje["T16"] = htmlspecialchars($_GET['T16'], ENT_QUOTES, "UTF-8"); if ($raw_udaje["T01"]) { $plny_cas = date("j.n.Y H:i:s"); $text= //$plny_cas . ";" . ($raw_udaje["T01"]/100) . ";" . ($raw_udaje["T02"]/100) . ";" . ($raw_udaje["T03"]/100) . ";" . ($raw_udaje["T04"]/100) . ";" . ($raw_udaje["T05"]/100) . ";" . ($raw_udaje["T06"]/100) . ";" . ($raw_udaje["T07"]/100) . ";" . ($raw_udaje["T08"]/100) . ";" . ($raw_udaje["T09"]/100) . ";" . ($raw_udaje["T10"]/100) . ";" . ($raw_udaje["T11"]/100) . ";" . ($raw_udaje["T12"]/100) . ";" . ($raw_udaje["T13"]/100) . ";" . ($raw_udaje["T14"]/100) . ";" . ($raw_udaje["T15"]/100) . ";" . ($raw_udaje["T16"]/100) . ";" . "\n"; $handle = fopen("teploty.txt", "a"); fwrite($handle,$text."\r\n"); fclose($handle); }; ?>
-
a stále vše vedle sebe
-
No vida, už to vypadá mnohem lépe. Jen ($raw_udaje["T16"]/100) . ";" ."\n"; uprav raději zpátky na ($raw_udaje["T16"]/100) . ";"; ať to nezlobí. Máš tam teď za sebou LF, CR, LF a za to by tě programy, které budou dělat analýzu dat, neměly rády. Normálně stačí jen LF ("\n"), ale pokud to chceš prohlížet i ve Windows, je vhodnější CR LF.
-
stale jsem na jednom radku
-
Nevím, čím to čteš, ale nyní je to perfektní: 46.87;15.62;52.5;19;21.87;15.25;167772.16;0;0;0;0;0;0;0;0;0; 46.31;15.68;52.31;18.93;21.81;15.31;167772.16;0;0;0;0;0;0;0;0;0; 46.18;15.68;52.18;19;21.81;15.25;167772.16;0;0;0;0;0;0;0;0;0; 46;15.68;52.18;19;21.81;15.31;167772.16;0;0;0;0;0;0;0;0;0;
-
I hexdump mi říká, že to teď nemá chybu: 000007b0 3b 30 3b 30 3b 30 3b 0d 0a 34 35 2e 37 35 3b 31 |;0;0;0;..45.75;1| 000007c0 35 2e 36 32 3b 35 32 2e 30 36 3b 31 39 3b 32 31 |5.62;52.06;19;21| 000007d0 2e 38 31 3b 31 35 2e 33 31 3b 31 36 37 37 37 32 |.81;15.31;167772| 000007e0 2e 31 36 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b |.16;0;0;0;0;0;0;| 000007f0 30 3b 30 3b 30 3b 0d 0a 34 35 2e 35 36 3b 31 35 |0;0;0;..45.56;15| 00000800 2e 36 32 3b 35 32 3b 31 39 3b 32 31 2e 38 31 3b |.62;52;19;21.81;| 00000810 31 35 2e 32 35 3b 31 36 37 37 37 32 2e 31 36 3b |15.25;167772.16;| 00000820 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b |0;0;0;0;0;0;0;0;| 00000830 30 3b 0d 0a 34 35 2e 34 33 3b 31 35 2e 36 32 3b |0;..45.43;15.62;| 00000840 35 31 2e 39 33 3b 31 39 3b 32 31 2e 37 35 3b 31 |51.93;19;21.75;1| 00000850 35 2e 32 35 3b 31 36 37 37 37 32 2e 31 36 3b 30 |5.25;167772.16;0| 00000860 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 3b 30 |;0;0;0;0;0;0;0;0| 00000870 3b 0d 0a |;..| 00000873
-
Mohu měřit 16 teplot. ale stále na jednom řádku. Všimni si, že hodnoty nemají stále stejně znaků. 46 a pak 46.18. Tím pádem to nemuhu vyčítat z řádku jak jsem chtěl. Rozhodí se mi pak včechny další udaje
-
Tak si přečti jeden řádek a použij funkci $array=split(';',trim($line)); Výsledek se uloží do pole.
-
Napsal jsem přečti a ne zapisuj. Když chceš analyzovat zapsaná data, tak do nich nesmíš psát.