PHP - Leer desde puerto serie

   
Vista:

Leer desde puerto serie

Publicado por Alejandro Sánchez (2 intervenciones) el 10/11/2009 18:09:38
Hola a todos,

Os cuento una duda que tengo en relación a la lectura del puerto serie desde una aplicación PHP.

El caso es que tengo un sensor inalámbrico de temperatura. Este sensor tiene una antena que transmite y recibe datos mediante el protocolo Zigbee hacia otra antena conectada por USB a un servidor Linux (Debian-Voyage).

Debo implementar un conjunto de aplicaciones que, por un lado, transmitan determinados parámetros al sensor remoto, y por otro, recojan los datos que éste envía.

Resumiendo, se trata de programar una aplicación PHP que envíe datos por el puerto USB, y otra que reciba datos por el mismo sitio y los vaya mostrando en pantalla. La primera parte funciona correctamente, pero es en la segunda donde estoy teniendo problemas.

A efectos prácticos, tengo entendido que el puerto USB funciona como un puerto serie...

He utilizado la única librería que parece existir en el mundo para trabajar en PHP con el puerto serie, la que hizo Rémy Sánchez en PHPClasses: http://phpclasses.masbytes.es/browse/package/3679.html

El código para leer el puerto serie y mostrar la lectura en pantalla (en el navegador) es:

<?php

set_time_limit(300);
include "php_serial.class.php";

// Creo una nueva instancia:
$serie = new phpSerial;

//Establecimiento del dispositivo:
$serie->deviceSet("COM1");
$serie->confBaudRate(19); // La comunicación es a 19200 baudios

// Abrir puerto:
$serie->deviceOpen();

// Leo puerto serie:
for ($size=1;$size<=50000;$size++) {
$lectura = $serie->readPort();
if ($lectura != "") {
echo $size." ".$lectura."<br>";
}
}

// Cierro el puerto:
$serie->deviceClose();

?>

Mi duda principal está en la parte "Leo puerto serie", no sé si lo estoy haciendo correctamente. El caso es que sabiendo que la antena remota transmite bien, no recibo absolutamente nada.

¿Alguien puede darme alguna idea para monitorizar un puerto serie desde web por medio de una aplicación PHP?

Gracias de antemano. Saludos,

Alejandro Sánchez
Valencia (España)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer desde puerto serie

Publicado por Diego Romero (1450 intervenciones) el 11/11/2009 03:19:31
No. El puerto USB no funciona como un puerto serie. Lo único que tienen en común es que ambos funcionan en forma serial, pero nada más.

He visto el código de la clase que comentas, usa un exec() para acceder a los puertos (usando stty en Linux y MODE en Windows) así menos que menos sirve para USB.

Tendrás que recurrir a otra forma. Así de pronto se me ocurre que podrías escribir un programa en modo nativo que haga interface con PHP de alguna forma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer desde puerto serie

Publicado por Alejandro Sánchez (2 intervenciones) el 11/11/2009 09:08:47
Gracias por la respuesta...

Es curioso, sin embargo, que sí que estoy pudiendo transmitir con esa clase (se me olvidó mencionar que la modifiqué para que en vez de acceder a ttySx lo hiciera a ttyUSB1, que era lo que necesitaba).

Copio aquí el código que uso para transmitir:

<?php
include "php_serial.class.php";
// Crear nueva instancia
$serie = new phpSerial;
// Establecer dispositivo
$serie->deviceSet("COM1");
$serie->confBaudRate(19);
// Abrir puerto
$serie->deviceOpen();
// Enviar mensaje
$serie->sendmessage("texto");
// Cerrar puerto
$serie->deviceClose();
?>

En todo caso, supongo que no tiene por qué comportarse el puerto de la misma forma al transmitir y al recibir...

Miraré la opción del programa en modo nativo.

Gracias de nuevo, y quedo a la espera de sugerencias...

Saludos,

Alejandro Sánchez
Valencia (España)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer desde puerto serie

Publicado por Fernando (1 intervención) el 20/01/2010 11:45:57
Hola!
Yo estoy intentando comunicarme con un dispositivo RS485 usando un conversor del fabricante FTDI y php
estoy usando la misma clase.

no te entiendo sobre que modificaste la clase, se supone que la misma en funcion del S.O. sabe con que dispositivos debe tratar (COM/ttyS) si usas linux, lo que puedes hacer es un ln -s /dev/ttyUSB"X" /dev/ttyS"91"
con este enlace te "ahorras" el tener que estar modificando tu fuente, ya que siempre la puedes dejar en un puerto determinado por ti.

Yo tengo el problema de que he conectado 2 puertos y lo que escribo en uno no lo recibo en el otro
imagino que es un tema de configuracion de los mismos control de flujo o algo similar.

Tu has tenido algun avance?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer desde puerto serie

Publicado por jonathan romero (1 intervención) el 09/11/2013 06:18:17
hola, me interesa mucho tu proyecto, de hecho estoy intentando hacer algo parecido, localmente ya funciona, pero mi duda es: en tu ejemplo... como sabe la pagina php ya montada en la web a que direccion ip se va conectar para controlar el puerto serial?
ojala pudieras ayudarme con eso, muchas gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer desde puerto serie

Publicado por Jose (1 intervención) el 10/06/2015 17:56:34
Hola Tengo el mismo problema leyendo el puerto y ya alguien tiene la solucion, gustosamente la recibo

Leer Puertos desde PHP
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar