Foros del Web » Programando para Internet » PHP »

Duda sobre enviar datos en puerto serial con PHP

Estas en el tema de Duda sobre enviar datos en puerto serial con PHP en el foro de PHP en Foros del Web. Muy buenas amigos del foro, está es la primera vez que intento escribir datos en el puerto serial del servidor y tengo una inquietud, aca ...
  #1 (permalink)  
Antiguo 05/06/2012, 09:36
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Duda sobre enviar datos en puerto serial con PHP

Muy buenas amigos del foro, está es la primera vez que intento escribir datos en el puerto serial del servidor y tengo una inquietud, aca remito el script que he realizado y que empece para realizar pruebas. Este me base en algo que encontre en el manual de PHP. Cabe aclarar que el servidor esta en localhost y lo tengo sobre una maquina windows.

Código PHP:
<?php
    
//`mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
    
$fp fopen ("COM1:""w+");//abre el puerto para leer empezar a escribir datos
    
if (!$fp) {
        echo 
"Uh-oh. Puerto no abierto.";
    } else {
//escribe los datos que se desean pasar por el puerto       
        
$string  128;
        
$hexa=dechex($string);//transforma el numero en hexadecimal
        
echo $string."<br />";
        echo 
$hexa."<br />";
        
fputs ($fp$hexa );//escribe en el puerto los datos.    
        
fclose ($fp);
    }
?>
Como pueden ver se abre el puerto para empezar a escribir datos, escribo un numero de prueba, lo convierto a hexadecimal y lo escribo en el puerto de datos. Cuando veo los datos que entran por el puerto realiza bien la conversión (o al menos eso parece porque coloca bien el hexadecimal cuando lo analizo con un programa que revisa los datos que pasan por el COM1) pero si lo conecto a un tablero de pruebas sencillo de leds los datos no se muestran completos, es decir pareciera que se estuvieran perdiendo datos. Ya descarte que fueran los leds porque se han hecho prueba escribiendo datos con otros aplicativos y el tablero funciona bien.

Pido a la gente que tenga conocimientos en el tema me ayude o me de luces sobre que podria estar obviando o si conocen foros donde pueda obtener información adicional. De antemano agradezco a los que puedan echar una mano.
__________________
Blog de humor http://elcuasatar.net63.net/
  #2 (permalink)  
Antiguo 05/06/2012, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda sobre enviar datos en puerto serial con PHP

PHP sobre Windows tiene una librería específicamente para comunicarse con el puerto COM: http://php.net/manual/en/ref.com.php

Igual intenta usar esa en lugar de usar el fopen tal cual.

Saludos.
  #3 (permalink)  
Antiguo 05/06/2012, 10:07
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda sobre enviar datos en puerto serial con PHP

Gracias por tu pronta respuesta GatorV, me pondre a revisar esta opción. Igual he estado revisando la función dechex y en la página dan funciones alternativas. Pongo aca solo una

Código PHP:
 function hexEncode($str=NULL){

                if(
is_null($str)){
                        return 
FALSE;
                }

                
$hexStr "";

                for(
$i=0;isset($str[$i]);$i++){
                        
$char dechex(ord($str[$i]));
                        
$hexStr .= $char;
                }

                return 
"0x".$hexStr;

        } 
Sera posible que el número decimal se transforme bien en hexadecimal pero le falte incluir el 0x para que lo entienda bien y se puedan prender los bombillos? Hoy no puedo hacer las pruebas con el tablero de pruebas porque no lo tengo a mano (pero lo hare mañana) pero se me ocurre que puede ser eso porque en la U yo recuerdo que asi pasaban todos los números hexa en los programas con microcontroladores. Si alguien sabe del tema y me pudiera complementar eso lo agradezco.
__________________
Blog de humor http://elcuasatar.net63.net/
  #4 (permalink)  
Antiguo 06/06/2012, 16:17
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda sobre enviar datos en puerto serial con PHP

Bueno, GatorV. Revise la librería que me recomendaste pero la verdad me fue de poca ayuda, la mayoría de los comandos son obsoletos (no se usan en PHP5) y casi no existe documentación adicional sobre los que si están en uso.

Para lograr la transmisión serial use la clase php_serial.class que ademas tiene la ventaja de poder usarse en windows y en linux. Tal como me lo imaginaba el problema era la manera como se hacia la conversión a hexadecimal de los números. En este post que dejo abajo esta descrito como lo solucione por si es de interés para alguien.

http://www.forosdelweb.com/f18/no-lo...-datos-997318/
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: puerto, serial
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:26.