Witam.
Posiadam urządzenie które co sekunde wysyła na port liczby z przedziału 0-255 i oczekuje polecen 1-8.
Po podłączeniu musze w cmd wpisać “mode COM6: BAUD=2400 PARITY=N data=8 stop=1 xon=off”.
No i wszystko powinno być ładnie, ale niestety mój skrypt się zawiesza i blokuje port, nie wiem czemu, oto kod:
function port($tryb,$p) {
$port='COM6:';
if ($tryb=='r'){
$fp = fopen ($port, "rb+");
if (!$fp)
{
echo "Port zamknięty(IN). ";
file_put_contents('debug1.log',date(r).' '.$port.': nie mozna otworzyc do odczytu'."\r\n",FILE_APPEND);
}
else { $buffer = fgets($fp, 4); fclose ($fp); }
return $buffer;
}
if ($tryb=='w'){
$fp = fopen ($port, "w");
if (!$fp) {
echo "Port zamknięty(OUT). ";
file_put_contents('debug1.log',date(r).' '.$port.': nie mozna otworzyc do zapisu'."\r\n",FILE_APPEND);
} else {
fwrite ($fp, $p );
fclose ($fp);
}
}
}
Za każdym razem po wpisaniu polecenia cmd musze jeszcze uruchamiać putty, dopiero wtedy skrypt działa. Niestety to mija się z celem, ponieważ urządzenie musi być dostępne cały czas tylko z przeglądarki. Przez ten skrypt komunikacja się zawiesza, gdzie robie błąd?
Pozdrawiam