Serial port (RS232) kezelése PHP-ban
Serial porton történő kommunikációra (input/output) tud-e valaki megoldást PHP-ban?
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
Nem.
Tudtommal Windows alatt abszolut nem tudod kezelni, hacsak nem speckó DLLeket használsz. Linux alatt azt tudom elképzelni, hogy vagy rendszerhívásként kinyomsz valamilyen értéket a serial portra vagy írsz egy extensiont hozzá.
A PHP nem arra lett kitalálva, hogy platformfüggő dolgokat csinálj.
UPDATE: most találtam meg egy-két megoldást rá. http://www.google.co.hu/search?q=php+serial+port
És ez egész használhatónak tűnik: http://www.lspace.nildram.co.uk/freeware.html
De hogy mire kell, azt Te tudod, szal gyk. nem nagyon fogsz találni pontosan a Te problémádra szabott megoldást. Szerintem, készülj fel egy hatalmas adag szívásra.
after 3 years
Nekem ez tűnik(!) szimpatikusnak:
http://www.phpclasses.org/browse/download/1/file/17926/name/php_serial.class.php
http://www.phpclasses.org/browse/download/1/file/17927/name/example.php
Esetleg ez: http://www.easyvitools.com/
Valaki használta-e már ezeket, vagy hasonlót?
Tapasztalat?
Más megoldások?
Problémák
Lényeg a lényeg, erre nincs generikus megoldás. Azért nincs, mert a PHP lekérdezésenként fut, a soros kommunikáció pedig folyamatos. Sajnos azt sem tudod megcsinálni, hogy írsz (vagy keresel) olyan daemont, ami a háttérben megtartja a kapcsolatot. Teljesen másképp kell ugyanis kezelni pl. egy kártyaolvasót, mint egy faxmodemet.
Ennek fényében szerintem, jobban jársz, ha leírod azt a feladatot, amire megoldás kellene, valószínűleg sokkal inkább tud valaki segíteni.
feladat megfogalmazás
Az egyik rész.
Területileg szétszórt, vonalkóddal azonosított mérőórák adatait kell(ene) begyüjteni, webes felületet is megjeleníteni/kezelni képes adatgyűjtők segítségével.
Az adatgyűjtőkbe (ipari PDA) be van építve a vonalkód olvasó.
Lehetséges-e a fent említett alkalmazásokkal- vagy mással-, az adatgyűjtők COM portját 10-15mp-re megnyitni, file-ként olvasni róluk adatot, majd bezárni a file-t/portot. A leolvasott adatot továbbítani SQL/php felé?
A másik rész.
Ez, igazából szerver oldali ügy, hiszen a vonalkóddal azonosított, leolvasott input mennyiségétől függően sms értesítést kell(ene) küldeni az illetékes elvtársnak.
Erre milllljó egy megoldás van, szerintem nem lesz nehéz megoldani.
Ám az előbbire egyet sem találtam (még).
Szerinted, miért nem alkalmasak a megnevezett alkalmazások, akár a vonalkód olvasásra, akár az sms küldésre? Miből látszik, hogy onlyLinux a cuccos? Nem portolhatóak?
Köszönöm a figyelmed!
:)
Soros
A fenti cuccok közül a PHPClasses osztály azért Linuxos, mert gyakorlatilag Linuxos parancsokat futtat a háttérben. A másikat nem tudom. Egy biztos, erre a PHP nem túl alkalmas eszköz és csak szívás lesz belőle, ha így csinálod meg. Inkább keress valakit, aki látott már a célplatformon futó alkalmazást.
Ja és kérdés: ugye ennek a szuperszoftvernek nem PDAn kell futnia? Mert akkor viszont még egy nagyságrenddel viccesebb az alkalmazás.
érdekes lesz ez....!
Én az gondolom, hogy mivel gyárilag benne van az adatgyűjtőben a vonalkódolvasó, ezért annak már van ilyen démona(?). Ha ez igaz, akkor azt könnyű(?) lesz munkára bírnom. (Optimista az, aki tudatlan! :)
CLI
???
Túúúúúúdom! Gúúúúúgli a barátom!
:)))
Üzembiztonságnak nem üzembiztonság, hanem csak adatgyűjtésről van szó. A vonalkód olvasás meg azért kell(ene), mert egyrészt, a "PDA" kijelzőjén nem férne el a rengeteg hivatkozás (ilyen gépház, olyan akna, emilyen vezeték, amolyan órája), másrészt, az ötlettel és a fejlesztéssel amúgy is ellenkező beosztottak (nem jutott eszükbe, féltékenyek a saját, látszólagos ismeretanyagukra, félnek attól, hogy a online adatgyűjtés elárulja, hogy épp hol tartanak (vagy nem tartanak) a munkájukban; szóval, a szokásos, kisszerű emberek) számára kényelmetlen lenne a bonyolult menürendszer használata. Ezért gondoltam arra, hogy ahol éppen leolvas, ott csak rá kell "lőnie" a vonalkódra és a kód egyértelműen azonosítja a mérőórát. A kód alapján megjelenik a "PDA"-n az adekvát input mező (spórolás a képernyővel) és csak az a dóga a delikvencsnek, hogy bepötyögi a leolvasott adatot.
Ennyi.
:)
Mit értesz az alatt, hogy "nem PDA-n kell futnia"?
Reményeim, elképzeléseim szerint (asszem, jól látszik, hogy nem vagyok programozó :) adott egy weblap, ami megjeleníthető PDA-n is. A weblap adatokat dolgoz fel. (még) Nem látom, hogy mitől lenne érdekesebb az az eset, hogy ez a weblap nem PC-n, hanem PDA-n jelenik meg, kér be adatokat és küldi el egy központi gépnek, szervernek.
Asszem, nem a php lesz a megoldás kulcsa.. Illetve az, csak előtte HTML+JS fogja kezelni a helyzeteket és rejtett/megjelenített mezőkön keresztül adom át a szerver felé az adatokat.
Bár lehet, hogy most ORBITÁLIS hülyeséget írtam! Amíg nincs a kezemben az eszköz, addig nem tudom, hogy milyen módon fogom tudni birizgálni. (Értsd, munkára fogni.) Az eszköz neve M3, a Vonalkód Rendszerháznál, akcijósan negyed milla az ára...
Köszönöm az eddigi felvilágosítást!
:))
PHP
Én inkább valami Java Application / Applet-ben gondolkodnék. Azzal kényelmesebb hozzáférni a soros porthoz, nagyobb a valószínűsége, hogy minden PDA-n futni fog, és egyébként is mindent könnyebb megoldani szerintem vele, mint ha ezt PHP-val szeretnéd megoldani.
Sziasztok! :)
Az ajánlott állományok között valóban van olyan, jelesül a "php_serial.class.php", amely kifejezetten *nix környezetre van kitalálva, írja is benne, hogy a portRead fv még nincs implementálva windows-ra.
Aber!
Az oldalon található index.php önállóan is csinált valamit. De mit?
Bluetooth-on csatlakoztatott mobilomat találta meg.
Ugye, a háttérben apache szaladgál. A PC-m értelmezhető(???) önálló, független eszköznek a szervertől függetlenül, és a csatlakoztatott mobil, pedig távoli eszközként definiálódik. Nyilván, ehhez a csatlakozáshoz a bluetooth, illetve a BluSoleil kellett, amit az általatok javasolt kisalkalmazásnak kéne helyettesítenie(???).
Mindenképp szóljatok, ha rossz a logikám!!!
:)
Szóval, szerintem, a példámban az történik, hogy egy weblap, ami történetesen php, kezdeményez egy kérést, aminek eredményeképp a php elkezd kommunikálni a BlueSoleilen keresztül a soros porti eszközzel.
Megnyitja, kiolvas belőle egy adatot - hogy miért pont a típust, arról fogalmam sincs (szerintem, akár az IMEI-t is visszaadhatta volna...) és le is zárja.
Mint a php_serial_log.txt is mutatja.
Pontosan erre van szükségem, és mivel a vonalkód olvasó egy céleszköz, nem is tud mást csinálni, mint vonalkódot olvasni, tehát gólvonalon vagyok, ha meg tudom szólítani...
Gyönge elmémmel azt gondolnám, hogyha megnyitja, akkor használja is, bár, nem föltétlenül- és mivel mást úgyse tud, ezért elkezd olvasni. Visszaad egy adatsort, amit php-vel elkapok, oszt GÓÓÓÓÓÓÓL!
Vagy nem?
:)
Nem ennyire egyszerű
Leegyszerűsítve a problémát: a PDA nem fogja Neked alapból a PC és a vonalkód olvasó között oda-vissza továbbítani az adatot, mert a programja nincs erre fölkészítve.
.net
Köszönöm!
:)
Kénytelen leszek abba is belekóstolni!
:(
A Visual Studio 2005-öt tudom elérni. A Wiki azt írja, hogy az megfelelő lesz a CF-hez is.
De nem akartam még egy nyelvbe belekontárkodni!
:(
Remélem, eccerű lesz és nem kell belemélyedni a nyelv szépségeibe!
:)
Még egyszer, köszönöm mindenkinek!
:)))
Ha kész és működik, közzé teszem!
:)))
aet
aztatat monják, ..
Legalábbis egy bizonyos PDA esetében, mert egy JS űrlap input mezejéhez egy onkeypressed eseménnyel hozzá lehet fűzni a vonalkód olvasót, igy nincs szükség egyéb daemon futtatására..
A key -ezen az eszközön- egyénileg definiálható. Akár az 'A' gombra vagy a 'ctrl-A'-ra vagy bármire megoldható!
:))
Nem értem
én sem értem, de azt mongya a rádijó,
Ha ez igaz, legalábbis a viszonteladó programozója szerint az, akkor csak meg kell határozni a PDA set-jében/registry-jében AZT a billentyűt, oszt gól.
Amikor a felhasnyaló megnyomja AZT a bizonyos gombot, akkor elindul a vonalkód olvasás, és az adat az input mezőben landol. (Talán nem reklám, mivel az ipari PDA-k hasonló árban vannak: M3 SKY-ról van szó.)
Egy szépséghiba van- bár ez engem nem zavar-, hogy jelszavak esetében gondoskodni kell az elrejtésről. Állítólag vannak olyan helyek, ahol a vonalkód jelszavat tárol (azonosításra használják a vonalkódot), így a beolvasás során megjelenik a kijelzőn az olvasható jelszó.
:))))
Megmenekültem egy újabb nyelv szépségeitől, Ti pedig a hülye kérdéseimtől!!!
:))))
Nem győzött meg...
...
Udv
Sanyi
Technológia kiválasztása
Ahogy Proclub is írta az egyetlen eset az lenne, ha a PHP értelmezőt a PDA-ra telepíted ez viszont az ágyúval verébre tipikus esete. Flash alapú technológia még az Apollo, amivel kliens oldalon futó, a rendszerhez hozzáférő alkalmazásokat készíthetsz. Én nem igazán ismerem a lehetőségeit, de nem hiszem, hogy alacsony szintű feladatra (hardwarekezelés) találták volna ki.
Itt http://www.vonalkod.hu/termekek/adatgyujtok_pda_k/m3_mobile/ az áll, hogy "Windows CE vagy Windows Mobile operációs rendszer".
Amit én járható útnak tarok az, hogy a .Net Compact Framework segítségével egy barátságos neyelvben (C#, VB, Delphi) készítesz egy minimális programot, ami egy nagy gombból áll, aminek megnyomására a vonalkódolvasót bekapcsolod, leolvasod az értéket, majd megnyitod a böngészőt egy beparaméterezett URL-lel, pl:
http://valami.hu/privat/form.php?barcode=123456789
Erre a szerver legenerálj a formot (ami egy hidden mezőben tárolja a kapott kódot), a form kitöltése után meg a PHP mindent lekezel és visszajön egy JS ami bezárja a böngésző ablakot.
Applet
Igaz...
De igen, ez is egy irány amiben lehet próbálkozni, de nem tűnik igazán járt útnak.
COM1, /dev/ttyS1
Így el tudsz érni akár egy műholdvevő beltéri egységet vagy egy modemet. Ha valami nagyon speciális kontrol kell, pl ha a port lábait nem rendeltetésszerűen használod, akkor nemhinném.
B
Bufferelt kimenet...
Utánanézek
B