Pristup na seriovy port z PHP
Pavel Kutina
hw na prelude.cz
Pondělí Prosinec 30 17:42:43 CET 2013
Zdravim,
mam tu takove jedno skoro OT - potrebuju z PHP komunikovat s moduly na
seriovem portu (seriovy port na serveru, server Apache 2.2 bezici lokalne na
WinXP) a mam takovy drobny problem.
Pouzivam php_dio a ten nejjednodussi zpusob komunikace:
exec('mode COM2: baud=9600 data=8 stop=1 parity=n');
$fd1 = dio_open('COM2:', O_RDWR | O_NOCTTY | O_NONBLOCK);
if(!$fd1)
{ die("Chyba pri otevirani COM2"); }
Nasledne pak komunikuju pres dio_read($fd1) a dio_write($fd1) atd.
Vlastni komunikace je bezproblemova, problem mam s pristupem k tomu portu
pri spusteni serveru. Pokud restartuju PC, spustim webserver (jako servis s
pravy lokalniho uzivatele, ktery ma admin prava - ja vim, ze to je
bezpecnostni hruza, ale v tomhle pripade to nevadi, PC je v podstate
izolovane) a v browseru otevru skript, ktery vyse uvedenym zpusobem saha na
seriovy port, tak mi to vyhodi chybu o zamitnuti pristupu na port:
Warning: dio_open() [function.dio-open]: cannot open file COM2: with flags 2
and permissions 0: Permission denied in C:\www\vhosts\localhost\test.php on
line 5
a nasled¨ne vyhnije na die: Chyba pri otevirani COM2
Pokud ale pred tim startem webserveru (resp. pred spustenim tohoto skriptu)
ten konkretni port otevru nejakym terminalem rucne (pouzivam teraterm, staci
opravdu jen otevrit a zavrit spojeni), skript se spusti a bezi, jako by se
nechumelilo, pricemz vesele komunikuje.
Nejde o to, ze se to otevre az napodruhe, ono se to bez toho rucniho
"prostouchnuti" jinak nepodari vubec, ani po X pokusech (kde X je vetsi, nez
jakekoliv rozumne cislo :)
Zvlastni je, ze mi to dela na jednou ze dvou PC - na obou WinXP Pro, na obou
stejne karty s porty, stejna instalace onoho lokalniho Apache s PHP
(konfiguraky i vsechny knihovny prekopirovane z jednoho na druhe, abych
vyloucil nejaky preklep). Doma mi to ve stejne konfoguraci bez problemu
chodi i s Win7 64bit. Netusite, kde by mohl byt zadrhel?
Priznam se, ze me to malicko irituje. Docela dost malicko :)
Pavel Kutina
Další informace o konferenci Hw-list