Foros del Web » Programando para Internet » PHP »

Leer datos de puerto serial con PHP.

Estas en el tema de Leer datos de puerto serial con PHP. en el foro de PHP en Foros del Web. Hola, estoy buscando si alguien tiene una manera de leer los datos recibidos en el puerto serial con PHP. La idea es poder enviar y ...
  #1 (permalink)  
Antiguo 25/01/2013, 10:58
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Leer datos de puerto serial con PHP.

Hola, estoy buscando si alguien tiene una manera de leer los datos recibidos en el puerto serial con PHP.

La idea es poder enviar y recibir datos por un puerto serial, por medio de php, así manejo un micro controlador vía internet.

Lo de enviar lo logre gracias a un dll ( php_ser++ ) , pero no puedo leer los datos que me devuelve el micro controlador.

Para que se entienda mas, yo tengo un arduino, la idea es enviarle las instrucciones por el puerto serie ( siempre conectado al servidor ), y que este me devuelva sus estados atraves de el mismo puerto, y que yo pueda leer y mostrar esos estados con php.


Este es el codigo que uso en php ( es solo un ejemplo ) :

Código PHP:
echo("Abriendo Puerto....<br>");
echo 
ser_open("COM3"96008"None""1""None");
echo(
"<br>");
echo 
ser_write("1");
echo(
"<br>");

echo 
ser_read();
echo 
"<br>\r\n";

for (
$i=0$i<10$i++)
{
    
$j ser_readbyte(); 
    echo 
sprintf("%c"$j);
}

echo(
"<br>");
echo 
ser_close(); 
Pero me muestra esto:
Código:
Abriendo Puerto....
0
1


0

Y este es mi codigo en arduino ( no es de mucha importancia pero por si las dudas lo escribo) :
Código:
int led = 13;
int dat = 0;


void setup() {  
Serial.begin(9600);  
  pinMode(led, OUTPUT);     
}



void loop() {
  
  dat = Serial.read();
  if(dat < 1)
  {
    digitalWrite(led, HIGH);
    Serial.print("dsfsdf");
  }
  else
  {
    digitalWrite(led, LOW); 
    Serial.print("dsfsdffgdfhfgjfhj");
  }
 delay(5000);
  
  
}
  #2 (permalink)  
Antiguo 25/01/2013, 11:05
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Leer datos de puerto serial con PHP.

Amigo, lee esto, te puede servir....


http://markmail.org/message/gxpmpuoyxhkmwms6


Saludos
  #3 (permalink)  
Antiguo 25/01/2013, 11:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Leer datos de puerto serial con PHP.

¿Qué se supone que recibas? ¿Podrías colocar un ejemplo de lo que esperas?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 25/01/2013, 11:15
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Leer datos de puerto serial con PHP.

Lo que planeo recibir es una cadena de datos ej 01010101, donde cada 0 o 1 represente a una salida digital de el micro.
  #5 (permalink)  
Antiguo 25/01/2013, 11:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Leer datos de puerto serial con PHP.

Y ¿cual es el error que presenta el código? Es que no das detalles de lo que sucede.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 25/01/2013, 11:20
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Leer datos de puerto serial con PHP.

No lee los datos que me envía el micro.
  #7 (permalink)  
Antiguo 05/03/2013, 09:39
 
Fecha de Ingreso: marzo-2013
Mensajes: 1
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Leer datos de puerto serial con PHP.

php_ser es una libreria de pago, aunque su version trial permite unos cuantos caracteres antes de cerrarse.

Se requiere reiniciar el servidor apache para que retome el trial y asi lee unos 1024 bytes antes de volver a quedar mudo.

Ten en cuenta esto para tus pruebas, ya que puede ser que si reciba lo que el PIC envia, pero la version que tienes no lo muestre.
  #8 (permalink)  
Antiguo 28/05/2014, 15:34
 
Fecha de Ingreso: mayo-2014
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
Respuesta: Leer datos de puerto serial con PHP.

buen día
yo estoy desarrollando un proyecto igual y no he podido realizar una comunicación por medio de bluetooth con el arduino, necesito enviar un comando desde la pag en php y que el arduino lo reciba pero no he podido, no sabes como hacer eso ?

gracias
  #9 (permalink)  
Antiguo 26/08/2014, 04:50
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Leer datos de puerto serial con PHP.

Señores para utilizar la comunicacion serial desde arduino se puede usar la funcion fopen directamente y usar fread o fwrite segun se necesite leer datos o enviar.
Te dejo un ejemplo de codigo, que mira si el arduino esta conectado a un puerto y velocidad especificas.
Código PHP:
Ver original
  1. <?php
  2. //La siguiente linea configura el modo de conexion a el com3 y 9600 baudios
  3. exec("mode COM3 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
  4.  
  5. $fp = @fopen ("COM3", "w");
  6. if (!$fp) {
  7.    $status = "No conectado";
  8. } else {
  9.    $status = "Conectado";
  10. }
  11. echo $status;?>
Si no entendeis la primera linea de codigo aqui teneis una lista de comandos disponibles
Tambien te voy a hacer una aclaracion sobre la comunicacion serial, El puerto serial no manda un string de una sola vez, el puerto serial manda un caracter por cada ciclo de arduino con lo que las frases son enviadas en varios ciclos dependiendo del numero de caracteres.
Para solucionar eso puedes detectar un final de linea y que php lea el puerto hasta que reciba un salto de linea.
Para mas ejemplo:
Cita:
Si queremos enviar "comunicacion con arduino" arduino lo haria de la siguiente forma
ciclo 1 = c
ciclo 2 = o
ciclo 3 = m
ciclo 4 = u
..............
Tambien podrias usar el analogRead y asi ampliar el uso de arduino y mostrar informacion de un rango de 8 o 10 bits dependiendo del puerto que uses para leer, el conversor analogico digital de las salidas analog in son de 8 bits, osea 256 posibles valores y de los puertos PWM el conversor es de 10 bits con lo que retorna valores entre 0 y 1024.
Si tienes alguna duda mandame un mensaje y intento esplicarte un poco como funciona dependiendo del microcontrolador que uses
__________________
http://www.roglastudios.es

Última edición por Dalam; 26/08/2014 a las 05:02

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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 16:01.