Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 2 visitas.| 3408647 Visitas (desde Dic. 2011), hoy: 286 Visitas 692 Pag. Vistas , ultimos 36 dias: 10096 Visitas. 43825 Pag. Vistas. Tu IP: 3.128.79.88
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Envíar datos por puerto serie con PHP

Los requerimientos necesarios son los siguientes:

  • Tener un servidor web instalado (Apache, lighttpd, uhttpd, etc).
  • Tener PHP configurado en el servidor web.
  • Tener el comando “exec”, para ello dentro del fichero php.ini cambiar:
    • disable_functions no tiene que contener la función exec
    • safe_mode tiene que estar a off

Si el servidor web esta en linux (u otro entorno unix), se puede utilizar lo siguiente (salvando la salida, puede ser /dev/tty0, por ejemplo):


<?php
//Es importante filtrar lo que recibimos para que no nos ejecuten comandos
$datos= escapeshellcmd($_REQUEST["datos"]);

//Enviamos por puerto serie los datos
exec ("echo ".$datos." > /dev/ttyUSB0");
?>
<pre>

Si por el contrario, utiliza windows, el código a utilizar es (sustituyendo COM1 por el puerto a utilizar):


<?php
 // La siguiente línea ejecutará una orden en DOS. Esto solo debe ejecutarse una vez.
 // Las comillas hacen que lo ejecute Windows directamente
 `mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;

 //Abrimos el puerto com1
 $fp = fopen ("COM1:", "w+");
 if (!$fp) {
 echo "Error al abrir COM1.";
 } else {
 $datos= escapeshellcmd($_REQUEST["datos"]);
 fputs ($fp, $datos );
 fclose ($fp);
 }
?>

Actualización. Código PHP + HTML

Viendo que resulta un poco confuso escribir únicamente el código php, a continuación escribo como sería un ejemplo completo para PHP en Linux. El ejemplo lo llamaré “serial.php” y se llamará a si mismo:


<?php
//Es importante filtrar lo que recibimos para que no nos ejecuten comandos
$datos= escapeshellcmd($_REQUEST["datos"]);

//Enviamos por puerto serie los datos
exec ("echo ".$datos." > /dev/ttyUSB0");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
<html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Conexión por puerto serie</title>
</head>
<body>
 <form method="get" action="serial.php">
   <button type="submit" name="datos" value="C00">Enviar comando C00</button>
   <br />
   <button type="submit" name="datos" value="C01">Enviar comando C01</button>
 </form>
</body>
</html>

Fuente: http://www.craswer.net/2011/05/enviar-datos-por-puerto-serie-con-php/

Escribe un comentario

Tu comentario