Hardhead írta:
Hali!
Hasonlóra készülök csak én soros porton szeretnék kommunikálni, PHP-vel meg mással is. Szerintem a a feladat megoldható 2 lépésben.
Attól, hogy valami rendszerezköz még hozzáférhető. Ha Te vagy a root, vagy ismered akkor nincs gond
.
Én azt tervezem, hogy írok egy "demont" ami megnyitja a soros portot és figyel egy adott porton.
Mivel a PHP ismeri a socket kezelést így ezen a porton leresztűl adhatok utasításokat amit a demon felismer.
Egyszerűbb esetben csak továbbítja oda/vissza a byteokat. Így az eredeti problémát (portkezelés) egy PHP-ból megoldható
problémára (socket kezeés) vezettük vissza ami már megoldható.
A fentiek feltételeznek némi C ill. hálózati ismereteket, de ezekről bőven találni a neten infót.
Üdv.:
Pet
Elnézést, akkor pontosítok: kizárólag
fsockopen() hasznélatával nem lehetséges PHP-n keresztűl elérni a gép LPT/soros (sörös
) portját. Ehhez szükséges egy program (jó legyen demon - már megint windows-os fejjel gondolkodtam), ami fogadja a szerver (engedélyezett) portjára az adatokat.
A másik megoldás az
fopen() használatával történik.
Előző hozzászólásomban azt a logikát követtem, hogy:
1. Az fsockopenn-nel Internet vagy Unix domain socket nyitható
2. Az fsockopen-nel nem nyitható meg a gép LPT portja
3. Szükséges egy program mely a PHP és az LPT port között közvetít.
4. Ahhoz hogy elérd az LPT portot rendszergazdai jogok kellenek (Kedves Izolcsi - ezúton kérek elnézést hogy nem feltételeztem rólad hogy neked van ilyen, vagy ismered a rendszergazdát)
Summa, summárum: egyről beszélünk, csak én a kicsit körülményesebb módot választottam (meg Windows-os fejjel gondolkodtam-amiért külön elnézést...).
Némi adalék a témához:
Az
fopen() ide vonatkozó szakasza
Kód:
jared at dctkc dot com
22-Apr-2002 10:33
<?php
// HOW TO USE PHP TO WRITE TO YOUR SERIAL PORT: TWO METHODS
$serproxy=true;
if ($serproxy) {
// Use this code in conjunction with SERPROXY.EXE
// (http://www.lspace.nildram.co.uk/freeware.html)
// which converts a Serial stream to a TCP/IP stream
$fp = fsockopen ("localhost", 5331, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)";
} else {
$e = chr(27);
$string = $e . "A" . $e . "H300";
$string .= $e . "V100" . $e . "XL1SATO";
$string .= $e . "Q1" . $e . "Z";
echo $string;
fputs ($fp, $string );
fclose ($fp);
}
} elseif ($com1) {
// Use this code to write directly to the COM1 serial port
// First, you want to set the mode of the port. You need to set
// it only once; it will remain the same until you reboot.
// Note: the backticks on the following line will execute the
// DOS 'mode' command from within PHP
`mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
$fp = fopen ("COM1:", "w+");
if (!$fp) {
echo "Uh-oh. Port not opened.";
} else {
$e = chr(27);
$string = $e . "A" . $e . "H300";
$string .= $e . "V100" . $e . "XL1SATO";
$string .= $e . "Q1" . $e . "Z";
echo $string;
fputs ($fp, $string );
fclose ($fp);
}
}
?>
(Forrás:
http://hu2.php.net/fopen)
http://www.jawed.com/camera/ - Internetről mozgatható webkamera. A gép soros portját használja!
További minden jót!
PS: Méghogy gyökér (root) lennék? Kikérem magamnak!