X-pordi veebileht
#1
X-port sisaldab muuhulgas veebiserverit. On ka näiteid, kuidas lehte valmis treida ja kuidas klotsi sisse kõrvetada. Aga...kui tahaks dünaamilist lehte, kuidas siis toimida?
Mõte oli varustada akva kontroller X-pordiga ja ta siis loeks üle seriali infot kontrollerist ning kuvaks oma sisemise veebiserveriga.
Paraku Lantronixil selle kohta näidet pole (või ei suuda mina seda leida). Mismoodi seda tavaliselt tehaks? Javaga? Lantronics väidab, et Java klotsi sees ei jookse, CGI-d samuti mitte. Samas kusagil FAQ-is väidetakse, et dünaamilise lehe saab Java abil teha küll!? Saa siis aru...
Kas kellelgi on kogemusi?
Vasta
#2
(05-04-2010, 08:00 AM)felch Kirjutas: X-port sisaldab muuhulgas veebiserverit. On ka näiteid, kuidas lehte valmis treida ja kuidas klotsi sisse kõrvetada. Aga...kui tahaks dünaamilist lehte, kuidas siis toimida?
Mõte oli varustada akva kontroller X-pordiga ja ta siis loeks üle seriali infot kontrollerist ning kuvaks oma sisemise veebiserveriga.
Paraku Lantronixil selle kohta näidet pole (või ei suuda mina seda leida). Mismoodi seda tavaliselt tehaks? Javaga? Lantronics väidab, et Java klotsi sees ei jookse, CGI-d samuti mitte. Samas kusagil FAQ-is väidetakse, et dünaamilise lehe saab Java abil teha küll!? Saa siis aru...
Kas kellelgi on kogemusi?

Java ei ole kindlasti ainuke lahendus, lihtsam on .html faili dünaamiliselt mudida.
Iseasi, kui tahad kaladele chativõimaluse teha Smile
Vasta
#3
Minu arust X-pordi puhul ainukene võimalus: kirjutad pic'i sisse veebiserveri, mis üle järjestikpordi vastab päringutele. Iseenesest üks tuim veebiserver ei ole väga keeruline:
1. Ootad ära, kuni tuleb kaks reavahetust (CR+LF+CR+LF). Päringut pole vaja salvestada.
2. Kirjutad kohustusliku päise:
Kood:
printf("HTTP/1.0 200 OK\r\n");
printf("Content-Type: text/html\r\n"
printf("\r\n");
3. Edasi saadad juba omaloomingut HTML vormingus.
4. Annad X-pordile teada, et ta võiks ühenduse kinni panna. See on oluline! Alternatiivne võimalus on lisada kohustuslikku päisesse rida "Content-Size:". Sel juhul pead ette teadma, mitu baiti sisu tuleb.
Port ei ole muidugi standardne, vaid näiteks 8080. Koduseks kasutamiseks ei ole sellest vahet ja kui läbi ruuteri välja serveerid, siis saad ka porti muuta.

Mitmesugustel põhjustel see ei ole hea lahendus, aga kui xport juba käes, siis miks mitte proovida. Minu arust parima töökindluse/hinna suhtelt on linuxiga starterkit, näiteks SAM9G45 baasil või Olimexi SAM9, aga hetkel nende mängutoomine oleks hea hulk tööd ja raha.
Vasta
#4
Tegelikult ma selle peale ei tulnudki, et võiksin kontrolleri oma prosega veebilehe genereerida. Väga nutikas ja vist mitte eriti keeruline. Nii vist pääseks tõesti X-pordis sobramisest.
Ma lootsin alguses, et ta suudab sed "loomulikust"teha aga vist läksin reklaami õnge - suudabki aga siis peab natuke rohkem asju teadma. DS väidab, et sa suudab serveerida kuni 4 (vist) lehte mahuga a' 64 kB. Ja siis tuuaks näide, kuda saata standardtekst "Hello wörld"... Kõik.
Jääb veel nuputada, kuidas http request kätte saada ja kanal sulgeda. Port on by default lihtsalt RS232 pikendus üle LANi. nii olen teda mitmes kohas pruukinud.

Selgituseks: akva kontrolleri prosel on 1 serial sideks võrguga üle X-pordi. Sedapidi annan käske, muudan registreid ja loen mõõdetavaid suurusi. Tahaksin seda teha üle veebi, sest siis ei peaks masinasse mingit programmi installima.
Ehk siis peab päriv veebileht saatma mingi kindla stringi ja kontroller vastab sellele kindlal viisil. Kas seda kõike annab veebi vormi toppida? Ja veel nii ka, et avalehele navigeerides saadetakse mitu päringut: loeme aktiivsete registrite nimed, parameetrid ja mõõtedata ning tekitame selle baasil akva seisundi avalehe.

Hilisemate siniste tulede rubriiki läheks kaamera (serial) juhtimine.
Kalade chati, msn-i ja meilivahetuse jätame hilisemaks, kui olen nende keele selgeks õppinud...
Vasta
#5
Päringu esimene rida (see, mille kohta ma ennist ütlesin, et seda pole vaja) sisaldab Sulle huvitavat URL-i, näiteks nii:
Kood:
GET /index.html HTTP/1.0

Parameetriga päring näeb välja näiteks nii:
Kood:
GET /index.html?param1=value1&param2=value2&param3=value3 HTTP/1.0

Veebi olen ma spikerdanud Kain Kalju spikri, sest see on nii vana, et mulle ebavajalikke asju seal pole. Sealt pakuvad Sulle huvi ilmselt FORM, INPUT TYPE=TEXT ja INPUT TYPE=SUBMIT.

Suuremat veebisaiti, pilte ja vilesid-kellasid on muidugi raskem pic'i sisse mahutada.

Kui XPort tõesti suudab ka veebilehti serveerida, kas või staatilisi, siis on mõeldav realiseerida kasutajaliides ka Java applet'ite baasil. Java applet jookseb siis kasutaja veebibrauseris, suhtleb pic'iga üle TCP/IP - kuulab, mis pic'il öelda on ja vahest ka käsutab. Hea kui PIC saadaks pidevalt ühesekundilise perioodiga strateegilisi parameetreid; see ei maksa talle midagi, aga applet'it on palju lihtsam kirjutada. Minu arust on alati tülikam kirjutada kahte programmi kui ühega võib hakkama saada. Seda enam, kui nad on erinevates keeltes ja peavad omavahel suhtlema mingi protokolli vahendusel.
(05-04-2010, 11:44 PM)felch Kirjutas: Ehk siis peab päriv veebileht saatma mingi kindla stringi ja kontroller vastab sellele kindlal viisil.
Kui kontroller ise genereerib veebilehe, siis ta sisuliselt vastab iseenedale Smile

Näide vormist, mis küsib temperatuuri:
Kood:
<form action="index.html"  method="get">
<input type="text" name="Temperatuur">
<input type="submit">
</form>
Vasta
#6
Ma ei saanud nüüd aru...
Mismoodi PICi sisse veebiserver? Arvasin, et peaksin ise http päringud kinni püüdma ja siis neile vastama. Mida vastata, on mul registrites olemas küll. Paraku ei saa ma ilmselt X-pordist http-päringut kätte sest ta seda edasi (oma serial porti) ei saada. Ise Phy-d (oli vist säärane nimetus?) ehitada enam ei viitsiks ka.
Seega jääb vaid katsuda X-iga läbi saada.
Ta pidi manuaali järgi tõesti suutma lehte serveerida. Väidetakse isegi et Javat kasutades. Viimane siis ilmselt jookseb kliendi masinas, port vaid serveerib seda.
On nii?
Siis on pahasti, sest pean javat õppima hakkama... Või saab serialiga suhtlemist kuidagi ilma javata teha?
Segase jutu selgituseks: On akva kontroller ,mis kuulab seriali. Sinna on ühendatud X-pordi serial väljund. LANi poolt vaadates saab teha nii, et X ja selle kaudu kontroller oleks nagu kauge PC oma serial port. See aga nõuaks ümbersuunaja installimist (on olemas). Tüütu, eks ju? Kuigi siis saaksin hakkama kasvõi VB-s proge kirjutamisega. Positiivne, sest seda ma oskan. Pascalis saaks ka hakkama.
X suutvat tekitada ka veebilehte, mida näen lihtsalt brauseriga. Ta oma konfilehte ma nii näengi. Ja muudan.
Vaja oleks brauseriga nt. veebilehe nupule "valgustus" vajutades saata päring, mis läbib X-porti, tuleb tema serialist ja jõuab kontrolleri prose seriali. Prose mõtleb ja vastab. See vastus peaks jõudma veebilehele. Võimalik et pisikese töötlusega.
Mismoodi seda kõige otstarbekamalt teha saaks?
Vasta
#7
Küllap tegi segaseks see, et ma alguses kirjutasin veebiserverist PIC'i peal ja siis rääkisin igaks juhuks ka Javast. Selguse mõttes ma järgnevas osas Javast ja Java applet'itest ei räägi.

Olgu xpordi IP-aadress näiteks 192.168.0.5 ja olgu ta seadistatud aktsepteerima kõiki ühendusi pordist 8080 (need suunatakse edasi järjestikpordi peale).

Avad veebibrauseris aadressi "http://192.168.0.5:8080/" Selle peale veebibrauser saadab xporti päringu, mille viimane kohusetundlikult PIC'i järjestikporti edasi toimetab:
Kood:
GET http://192.168.0.5/ HTTP/1.0\r\n
\r\n

PIC'i firmware tuvastab kaks järjestikust reavahetust (CR+LF+CR+LF) ja vastab päringule:
Kood:
HTTP/1.0 200 OK\r\n
Content-Type: text/html\r\n
\r\n
<html><body>\r\n
PIC veebiserver versioon 1.0.<br>\r\n
Päri <a href="index.html?param1=temperatuur">temperatuuri siit</a>.
</body>\r\n

Xport loeb päringu järjestikpordist ja edastab selle veebibrauseri.

PIC'i firmware ütleb xpord'ile, et katkesta TCP/IP ühendus (lükkab vastava modemi otsa maha, RTS vist?). Xport paneb ühenduse veebibrauseriga kinni ja veebibrauser saab sellest aru nii, et veebileht on ilusasti kohale jõudnud.

Kogu asja silumiseks on hea kasutada kas teist järjestikporti PIC'i küljes või siis riistvaralist silurit.

Hetkel vist kõik.
Vasta
#8
Mnjah, nii oleks maru kena küll aga paraku selgub, et X ei taha http - requeste oma seriali saata. Neelab alla ja seedib ise. Häkin veel veidi, ehk õnnestub teda veenda.
Vasta
#9
Kas jutt käib ikka "Local port"-ist, kasutamisjuhendis lehekülg 29, "Figure 4-7. TCP Connection Settings"?

Kas ta üldse saadab midagi seriali edasi? Ühendud näiteks telnetiga konfigureeritud porti (telnet xport-ip port-number) ja klahvivajutused, vähemalt reavahetusega kombineeritult, peavad ikka läbi minema.
Vasta
#10
Jah ikka local pordist räägin. Sinna saab saata datat kui installida com port redirector. Masina port suunatakse X-ile ja edasi saadad kasvõi Nortoni terminaliga sinna kõike mida vaja.
Muul juhul ei õnnestunud local pordist miskit kätte saada. Ka siis kui web server ära keelata (telnetiga valik 6 - security settings).
Vennas kirjutas mulle jupikese java koodi ja see tõesti töötab X-pordis (tegelikult küll PC brauseris, eks ju?). Eks ma pea vist seda versiooni kasutama ja edasi arendama.
Vasta


Alamfoorumi hüpe:


Kasutaja, kes vaatavad seda teemat: 1 külali(st)ne