[LUGargano] apache2 +PHP 5 + porta seriale RS232

Matteo Fasanella mfasanella@web-consult.it
Ven 9 Maggio 2008 16:39:23 CEST


Marco Baldinetti ha scritto:
> Matteo Fasanella ha scritto:
>   
>> Marco Baldinetti ha scritto:
>>   
>>     
>>> Matteo Fasanella ha scritto:
>>>   
>>>     
>>>       
>>>> Marco Baldinetti ha scritto:
>>>>   
>>>>     
>>>>       
>>>>         
>>>>> Matteo Fasanella ha scritto:
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>>>> Marco Baldinetti ha scritto:
>>>>>>   
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>>>> ciao a tutti,
>>>>>>>
>>>>>>> ho installato sulla mia gentoo un web server con apache2 e php.
>>>>>>>
>>>>>>> Il mio scopo è quello di poter effettuare operazioni di input/output 
>>>>>>> sulla porta seriale del web server tramite il browser di un qualsiasi 
>>>>>>> client della mia rete lan.
>>>>>>>
>>>>>>> per scrivere utilizzo il seguente metodo e tutto funziona alla grande:
>>>>>>>
>>>>>>> <?php
>>>>>>>     $filename = "/dev/ttyS0";
>>>>>>>     $fd = fopen($filename, "r+");
>>>>>>>     
>>>>>>>     fwrite ($fd, "stringa da scrivere");
>>>>>>>     
>>>>>>>     fclose($fd);
>>>>>>> ?>
>>>>>>>
>>>>>>> il problema risiede nella lettura, che con il seguente metodo non riesco 
>>>>>>> ad eseguire:
>>>>>>>
>>>>>>> <?php
>>>>>>>     $filename = "/dev/ttyS0";
>>>>>>>     $fd = fopen($filename, "r");
>>>>>>>    
>>>>>>>     $contents = fread ($fd, 1);
>>>>>>>     echo $contents;
>>>>>>>    
>>>>>>>     fclose($fd);
>>>>>>> ?>
>>>>>>>
>>>>>>>
>>>>>>> qualcuno ha qualche idea a riguardo??
>>>>>>>   
>>>>>>>     
>>>>>>>       
>>>>>>>         
>>>>>>>           
>>>>>>>             
>>>>>>>               
>>>>>> Semplicemente lettura e scrittura non sono sincronizzate...
>>>>>> ...ovvero _quando scrivi_, non c'e` nessuno dall'altra parte in 
>>>>>> ascolto...  :-)
>>>>>>
>>>>>>
>>>>>>           Matteo
>>>>>>
>>>>>>   
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>>>> grazie!!!
>>>>>>>
>>>>>>> ciao ciao :-)
>>>>>>>
>>>>>>> Marco
>>>>>>>
>>>>>>>   
>>>>>>>     
>>>>>>>       
>>>>>>>         
>>>>>>>           
>>>>>>>             
>>>>>>>               
>>>>>>   
>>>>>>     
>>>>>>       
>>>>>>         
>>>>>>           
>>>>>>             
>>>>> ci avevo pensato ma pensavo che una volta che trasmettevo i dati 
>>>>> andassero in un buffer che poi lo si svuotava in lettura...
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>> il device si puo` bufferizzare per una questione di performance... ma 
>>>> prima devi inizializzare il device e cmq non ha molto senso essendo una 
>>>> porta _seriale_.... :-)
>>>>
>>>>   
>>>>     
>>>>       
>>>>         
>>>>>  magari 
>>>>> domani faccio un po' di prove...
>>>>>
>>>>> grazie!  :-)
>>>>>
>>>>> p.s. tutto bene da quelle parti? se tutto va come previsto dovrei 
>>>>> salirci a settembre/ottobre per frequentare ingegneria 
>>>>> dell'automazione... :-)
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>> Vieni a fare ingegneria qui a Bologna ?
>>>>
>>>> Complimenti per l'ottima scelta! :-)
>>>>
>>>> ...buoni docenti e bella citta`.... :-)
>>>>
>>>>
>>>>           Matteo
>>>>
>>>>   
>>>>     
>>>>       
>>>>         
>>>>> ciao ciao
>>>>>
>>>>> Marco
>>>>>   
>>>>>     
>>>>>       
>>>>>         
>>>>>           
>>>>   
>>>>     
>>>>       
>>>>         
>>> e per risolvere la questione del sincronismo come si potrebbe fare?
>>>
>>> avevo pensato di leggere di continuo la porta ed aspettare che arrivi 
>>> qualcosa ma la funzione fread non termina se appunto non legge niente e 
>>> nonostante i dati arrivino, non riesce a leggere niente.
>>>
>>> non ne sto venendo a capo... qualche idea in merito?
>>>   
>>>     
>>>       
>> forse non ho ben capito come hai implementato il tutto, ma mi pare di 
>> capire che la parte in ascolto tu non la metti proprio in esecuzione... 
>> o sbaglio ?
>>
>>   
>>     
>>> x matteo: si vengo a Bologna a fare ingegneria! :-)
>>>   
>>>     
>>>       
>> Ancora complimenti per l'ottima scelta! :-)
>>
>>              Matteo
>>
>>   
>>     
>>> ciao ciao
>>>
>>> Marco
>>>
>>>
>>>   
>>>     
>>>       
>>   
>>     
> la parte in ascolto (che ho postato qualche email fa) la mando in 
> esecuzione ma è come se andasse in loop non terminando mai, nonostante 
> sulla seriale siano presenti dati.
>   
il codice che avevi postato e` questo:

<?php
     $filename = "/dev/ttyS0";
     $fd = fopen($filename, "r");
    
     $contents = fread ($fd, 1);
     echo $contents;
    
     fclose($fd);
?>

ma non hai scritto _come_ lo mandi in esecuzione...  come fai ?

...cmq una volta in esecuzione, fa una sola lettura ed esce...  dovresti 
looparlo sulla lettura...

             Matteo

> p.s. ci vediamo a Bologna! :-)
>
> ciao ciao
>
> Marco
>   



Maggiori informazioni sulla lista LUGargano