PDA

View Full Version : [PHP] scrivere e leggere da porta seriale RS232


napass
04-04-2008, 18:34
ciao a tutti, se dovessi dire (sicuramente....) alcune cavolate nell'esposizione della domanda perfavore non linciatemi! :D

ma passiamo al problema vero e proprio.

ho un pc linux in rete locale che mi fa da webserver con apache 2 e php installato e funzionante ed ha una comune porta seriale RS232.

sempre nella stessa rete con qualsiasi altro pc, vorrei poter scrivere e leggere sulla seriale del server tramite un'applicazione php.

ad esempio:

se premo il bottone A scrivo "00010010"
se premo il bottone B scrivo "11100101"

il mio problema è effettivamente se è possibile realizzare questo sistema.

vi ringrazio anticipatamente! ;)

ciao ciao :)

ilsensine
04-04-2008, 18:52
Dovresti poter leggere/scrivere ttyS* come qualsiasi file. setserial può esserti utile per configurare la porta (velocità, ecc.)

napass
04-04-2008, 21:19
Dovresti poter leggere/scrivere ttyS* come qualsiasi file. setserial può esserti utile per configurare la porta (velocità, ecc.)

ok magari domani pomeriggio inizio a fare qualche prova...:)

grazie per l'informazione! ;)

ciao ciao

cionci
05-04-2008, 09:07
Dovresti poter leggere/scrivere ttyS* come qualsiasi file. setserial può esserti utile per configurare la porta (velocità, ecc.)
Io credo che servano un bel po' di autorizzazioni per farlo...

ilsensine
05-04-2008, 09:23
Io credo che servano un bel po' di autorizzazioni per farlo...
dovrebbe essere suficiente aggiungere l'utente www-data al gruppo che può scrivere su ttyS*

vizzz
05-04-2008, 11:11
Io credo che servano un bel po' di autorizzazioni per farlo...

e safe-mode disabilitato :)

napass
05-04-2008, 17:23
ma c'è qualche funzione (uso gentoo... mi riferisco alle USE flag) in particolare da abilitare in apache2 o php per poter usare la porta seriale? :)

ilsensine
05-04-2008, 20:30
Una volta sistemati i diritti di accesso, puoi accederci come un file normale.

C'è anche chi ha fatto delle classi apposite, v. ad es. qui:
http://www.communitymx.com/content/article.cfm?cid=8658A

napass
06-04-2008, 08:34
si avevo già visto quelle classi infatti stavo utilizzando proprio quelle... :)

cmq ora funziona tutto.

in linux occorre aggiungere l'utente apache al gruppo uucp che è appunto il gruppo proprietario della porta seriale.

per ora ho provato in rete locale e tutto va alla grande.. :)

il passo successivo sarà creare una pagina di login in cui in base all'utente si attribuiscano vari permessi di lettura, scrittura e lettura/scrittura sulla seriale.

ma questo verrà dopo.. :D

grazie a tutti quelli che hanno contribuito e che mi hanno dato una mano! ;) :)

buona domenica! :cool:

ciao ciao

napass
06-05-2008, 16:16
ragazzi c'è un problemino di cui non mi ero accorto... ovvero : riesco a scrivere sulla seriale ma non riesco a leggere.

qualcuno saprebbe darmi una mano?

sto utilizzando le classi phpserial descritte qualche post fa...

grazie! :)

napass
07-05-2008, 19:11
per rendere più chiara la cosa...

per scrivere sulla seriale utilizzo questo metodo e tutto funziona alla grande:


<?php
$filename = "/dev/ttyS0";
$fd = fopen($filename, "r+");

fwrite ($fd, "stringa da scrivere");

fclose($fd);
?>



per leggere invece sto provando in questo modo ma senza alcun risultato:


<?php
$filename = "/dev/ttyS0";
$fd = fopen($filename, "r");

$contents = fread ($fd, 1);
echo $contents;

fclose($fd);
?>


ho delle classi in java per la lettura/scrittura su seriale e quelle funzionano perfettamente quindi penso che il problema non sia della porta.

qualche idea in merito?

grazie a tutti.

ciao ciao ;)

vizzz
07-05-2008, 19:25
io proverei a debuggare un poco il codice:

<?php
$filename = "/dev/ttyS0";
$fd = fopen($filename, "r");

$contents = fread ($fd, 1);
if ($contents != FALSE)
echo $contents;
else
echo "errore lettura";
fclose($fd);
?>

napass
31-05-2008, 14:09
ho risolto...

praticamente non riuscivo a leggere perchè non inviavo il carattere 13 equivalente all'invio e che quindi poneva fine alla lettura...

grazie a tutti per l'aiuto! :D