TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jfmateos2 en 01 de Febrero de 2007, 05:39:57

Título: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 01 de Febrero de 2007, 05:39:57
¿Alguien ha tenido alguna experiencia accediendo mediante PHP/ASP/Perl al puerto serie para comunicarse a través de Internet con algún dispositivo construido con un PIC ?

He visto que existe una librería francesa http://www.phpcs.com/code.aspx?ID=36224 (http://www.phpcs.com/code.aspx?ID=36224), y otra de pago (http://www.easyvitools.com/ (http://www.easyvitools.com/)) (ésta Web ofrece otras herramientas muy interesantes), y quizás también pueda utilizarse directamente la librería dio (http://pecl.php.net/package/dio).

Estoy planeando realizar alguna aplicación sencilla de este tipo, que permita su gestión remota a través de una página Web.

Por ejemplo, hace algún tiempo, vi en la tele un proyecto que permitía a niños ingresados en hospitales de todo el mundo cuidar unas plantas a través de una página web. Pulsando botones podían regarlas, encender una luz, abonarlas, ... y veían los resultados a través de una Web Cam.

Yo lo enfocaría más a temas de domótica.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: RedPic en 01 de Febrero de 2007, 05:53:16
(http://picmania.garcia-cuervo.com/images/Profesional%20-%20iAccess_Control_V1%20-%2009%20-%20Web%20Server.gif)
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 01 de Febrero de 2007, 10:10:23
Muy bueno RedPic. Hacía mucho que no me pasaba por tu Web; está genial.

Los Tibbo también los consideré al principio, pero no sabía que había un modelo que incluía el conector RJ45.

Ahora que lo sé me pondré a investigar de nuevo sobre ellos. Algunas dudas que tenía sobre ellos son (no son para que me las contestes, sino para dejar constancia):

1. ¿Cómo se envía un comando desde una página Web al Tibbo? ¿Imagino que se utilizarán algunos comandos especiales, pero no encuentro cuáles?

2. ¿Podría el Tibbo devolver información a la página Web? Por ejemplo, si pulso un botón en la página Web se enciende un bombilla en el dispositivo PIC conectado al Tibbo, pero si la bombilla está fundida y el dispositivo PIC puede detectarlo ¿es posible devolver esta información a la página Web?

Seguiré informando (preguntando)...
Título: Re: PHP, puerto rs232 y PIC
Publicado por: RedPic en 01 de Febrero de 2007, 10:48:02
Si, a todo. La pagina que estas viendo interactua con el PIC a través del Tibbo EM202. Le mando qué boton he pulsado y la página cambia dependiendo de lo que haga el PIC con la orden que le he enviado. Y todo desde un Navegador de Internet. El PIC-EM202 es realmente lo que dice arriba: Un Web Server.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 01 de Febrero de 2007, 12:23:49
Lo del Tibbo ya lo tengo medio claro; gracias RedPIC (se me han puesto los dientes largos al ver la foto de lo que has recibido hoy).

Siguiendo mi anterior línea de investigación (control directo mediante PHP de la aplicación PIC conectada al puerto serie), he encontrado el siguiente enlace (http://www.epanorama.net/circuits/parallel_output.html#webcontrol), que aunque está referido al puerto paralelo, despeja algunas dudas y me demuestra que es posible la segunda parte de lo que yo quería hacer: AJAX/Macromedia FLASH+PHP+(programita DOS de acceso al puerto)+PIC.

Seguiré informando.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Nocturno en 03 de Febrero de 2007, 08:10:46
Juanfe, podrías considerar acometerlo con un 18F6621 que ya trae ethernet integrado.

Y si quieres parte del trabajo ya hecho, mira qué baratita está esta placa:
http://microcontrollershop.com/product_info.php?products_id=893

(http://microcontrollershop.com/Images/sbc65ecr1.jpg)
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 03 de Febrero de 2007, 16:46:15
Muchas gracias a todos por sus consejos.

Para este proyecto en concreto necesito una solución muy básica (lo del tibbo y la plaquita que me propone Nocturno, me lo guardo para soñar en nuevos proyectos), que incluso un niño sea capaz de armar, y que sea completamente libre (no se puede comprar nada que no sean los componentes electrónicos por separado).




Siguiendo con mis pesquias he acabado en la página de Arduino (http://www.arduino.cc/en/Main/Hardware), que ofrece placas de interfaz serie y usb basadas en ATMEL. Les incluyo el enlace pq me ha parecido de gran interés: te da instrucciones, los archivos Eagle, el firmware, tutoriales para conectar con sensores (http://www.arduino.cc/en/Tutorial/HomePage), e incluso un sencillo programador ATMEL.

(http://arduino.berlios.de/uploads/Main/USB-board-step-6.jpg)
(http://webzone.k3.mah.se/k3dacu/arduino/releases/serial_v2_single_sided/board_withBridges_screen.gif)

Creo que combinando estas placas (o diseñando una yo mismo basada en PIC) con el programilla serproxy, del que también hay información en la página anterior conseguiré comunicame mediante PHP.

Seguiré informando...
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 03 de Febrero de 2007, 17:47:33
Otro conversor ethernet-serial por software que puede ser interesante: SerialServer (http://itp.nyu.edu/~dbo3/SerialServer/SerialServer.html)
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 04 de Febrero de 2007, 16:16:37
¡Prueba superada  :-/!

He logrado acceder remotamente a través de Internet a un ordenador en el que tengo instalado WAMP+serproxy+PHP+DynDNS y al que está conectado en el puerto serie un PIC+LED (mediante un MAX232).

Este primer experimento ha sido muy simple (y más fácil de lo que esperaba). La comunicación es perfectamente bidireccional: pulsas un botón en una página Web y se enciende el LED en el ordenador host, que te devuelve un mensaje indicando que la operación se ha realizado correctamente. Vuelves a pulsar el botón, el LED se apaga y recibes otro mensaje generado por el PIC.

La única limitación que encuentro de momento es que la comunicación, pese a ser bidireccional, debe ser siempre iniciada por el PC (el PIC sólo puede responder cuando se le pregunta previamente); no obstante, esto no me preocupa demasiado, pues podría resolverse instalando un demonio en el ordenador host que estuviera permanentemente escuchando el puerto serie o paliarse aplicando AJAX en el ordenador remoto.

Precisamente empezaré investigando la opción de AJAX.

Lo que más me ha sorprendido de esta solución es que sólo he necesitado 1 PIC, 1 MAX232, 4 condensadores, 1 resistencia y 1 LED.

Seguiré informando...
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Nocturno en 04 de Febrero de 2007, 16:22:16
Lo que más me ha sorprendido de esta solución es que sólo he necesitado 1 PIC, 1 MAX232, 4 condensadores, 1 resistencia y 1 LED.

Seguiré informando...
Se te ha olvidado un componente muy importante: un PC esclavo :D
Título: Re: PHP, puerto rs232 y PIC
Publicado por: vicent en 13 de Febrero de 2008, 11:31:50
Hace un año de esto, pero supongo que aún lo tendrás por ahí.

Me gustaría que colgaras lo que tienes de esto, sobre todo la parte en que php se comunica con el puerto serie.
Tengo en mente hacer como proyecto de final de carrera una casa domótica, controlada por una interfaz web. El caso es que me vendría bien tener algo sobre lo que trabajar en cuanto al tema de comunicación de php con puerto serie, aunque mi idea es conectarlo por el puerto USB, pero si veo que se complica mucho, lo haría por el serie.

El proyecto es para el año que viene, pero me gustaría ir mirando ya cosas, e ir haciendo lo que pueda.

Muchas gracias.
Un saludo. Au.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 13 de Febrero de 2008, 11:59:33
Hola vicent, aquí lo tienes todo www.villatic.org/carpetaJuanfe/PHP_RS232.rar:

Cuando investigué el tema no había ninguna librería gratuita para acceder desde PHP al puerto USB. Si ahora encuentras alguna, no te olvides de comentármelo. Gracias.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: vicent en 13 de Febrero de 2008, 13:49:13
Muchas gracias Juanfe.

Cosas a tener en cuenta:

Yo programo los pics con CCS C, así que el código del pic lo debería de reescribir, pero vamos, me lo esperaba, porque como lo quería hacer con USB, eso lo tenía asumido.
El script en PHP es simple, lo cual me gusta, pero he visto que usas serproxy. Me he descargado una versión para linux, ya que mi servidor funciona con Debian y lo he compilado sin problemas en el de sobremesa, que tiene OpenSuse 10.2. El servidor es un Pentium III a 500 o 600 MHz y creo que 128 MB de Ram, no me acuerdo, porque como va como un tiro, no me preocupo mucho por él, jejejeej.

La idea es recibir peticiones de la red interna a un script PHP (o CGI, pero me gusta más PHP) y que este se comunique con el demonio servidor (como el serproxy), pero debería también programarlo yo, puesto que no creo que pueda utilizar ese software para el PFC, ya que no es software libre, y podría tener problemas con la licencia.

En breve abriré un nuevo tema en proyectos para ir mostrando los avances.
Ya os digo que no tengo prisa, así que haré avances poco a poco, por lo pronto tengo que acabar los exámenes, que me quedan 2 el viernes, :(

Un saludo. Au.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 13 de Febrero de 2008, 14:00:05
Hola vicent, serproxy es freeware y open-source.

Programar un demonio de este tipo para el puerto serie no sería muy complicado, pero hacerlo para el puerto USB... no me atrevo a aventurarme.

Suerte
Título: Re: PHP, puerto rs232 y PIC
Publicado por: vicent en 13 de Febrero de 2008, 14:08:12
Citar
serproxy es freeware y open-source.
De verdad, que estoy un poco espeso, debe ser por los exámenes, porque no es normal lo mío. ¡¡Si lo he compilado!! y no he sido consciente que tenía el código fuente disponible, jajaj.
Efectivamente, mirando la licencia es GPL, supongo que lo podría utilizar en el PFC.

Respecto a lo del puerto USB, si lo configuro para puerto serie virtual, no creo que haya mucha diferencia, ya que según tengo entendido, un puerto USB virtual funciona igual (o prácticamente) que uno serie.

Bueno, no quiero "ensuciarte más el post", a ver si luego tengo un rato y creo un tema con mi idea.

Gracias, una vez más.

Un saludo. Au.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 22 de Febrero de 2008, 12:34:41
hola amigos soy nuevo en el foro y me intereso mucho lo del  Script php que envía un valor a traves de l puerto serial yo quisiera saver si es posible con este programa el ( serproxy ) leer el puerto serial y como seria el script en php.

si alguien podria ayudarme, o darme alguna opinion  lo agradeceria mucho...
 

saludos ...........
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 22 de Febrero de 2008, 13:14:50
Bienvenido armando.

Por supuesto que se pueden recibir datos; sólo tienes que usar fgets en PHP. En el código que publiqué anteriormente hay un ejemplo.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 22 de Febrero de 2008, 16:02:54
ok muchas gracias jfmateos2 lo que pasa es de que estoy haciendo un proyecto  en el cual tengo que capturar el peso de una bascula que esta conectada a un cliente por el puerto serial y en viar el dato una maquina servidor e intentado de mil maneras pero no logro leer el puerto  con php voy a provar con el serproxy supongo que tengo que ejecutarlo en la maquina cliente, y probar el script a ver si logo leer el puerto.

pero de ante mano muchas gracias por el dato..


saludos...............   
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 22 de Febrero de 2008, 16:36:22
Vas por buen camino Armando. El serproxy lo instalas en él PC al que está conectada la báscula, creas en él un servidor Web (por ejemplo con WAMP o LAMP) y alojas en él programita PHP, y desde cualquier otro ordenador de Internet accedes a ese script PHP (para evitar los problemas de las IP dinámicas puedes recurrir a DynDNS).

Ya nos contarás tus éxitos.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 25 de Febrero de 2008, 15:33:53
amigo jfmateos2 e hecho lo que digiste pero a un no e logrado leer el puerto serial y no se si es por que tenga mal el codigo en php o tenga que configurar el serproxy no lo se, el problema es que no me arroja nada solo en una ocasion pero era codigos raros (basura)
que es lo que tengo que modificar al codigo para leer el puerto , por favor lo agradeceria mucho no se que hacer
saludos................
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 26 de Febrero de 2008, 13:32:47
Hola Armando, creo que no entiendo bien tu pregunta; necesitaría que me pusieses el código PHP que estás utilizando.

Ten en cuenta que el serproxy está acompañado de un archivo llamado serproxy.cfg en el que debes configurar la velocidad de la comunicación serie (número de bits de datos, si usa o no bit de parada, ...).

En este mismo archivo se le asigna un número de puerto TCP/IP a cada uno de los puertos COM de tu ordenador. Por ejemplo, el COM1 se vincula al puerto 5531. Éste número de puerto es el que tienes que utilizar al abrir el socket en PHP con la instrucción fsockopen ("localhost", 5331, $errno, $errstr, 10)

No sé cómo ayudarte; necesitaría más información por tu parte.

Por cierto, he modificado el archivo serie.php para que se vea más clara la comunicación entre el PIC y el PC. Vuélvetelo a descargar si quieres.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 27 de Febrero de 2008, 01:21:21
hola amigo antes que nada muchas gracias por responder a misdudas te agradesco mucho ......

mi pregunta es simple yo lo unico que quiero es leer el puerto serie quiero obtener el valor que se encuentra en la bascula.

tengo instalado el serproxy al igual que un servidor donde pongo el codigo en php pero no logro obtener el valor deseado.

lo unico que quiero  es si podrias ponerme el codigo  nadamas para obtener el dato de la bascula...

yo pongo  el codigo a si no se que me falta
 
<?php
// Acceso mediante PHP al puerto serie
$serproxy=true;
if ($serproxy) {
   // Este código debe utilizarse en combinación con serproxy

   $fp = fsockopen ("localhost", 5331, $errno, $errstr, 10);
   if (!$fp) {
       echo "$errstr ($errno)";
   } else {     
       $line="";
          while (!feof($fp))
            {
               $line =  fgets($fp, 4096);
               echo "$line";
             }

       echo "
<form action='serie.php'><input type='submit' value='Update'/></form>";     

       fclose ($fp);
   }
}
?>

bueno espero no dar mucha lata jejeje pero es que no se que hacer
bueno saludo...........
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 27 de Febrero de 2008, 04:44:34
Hola Armando, ¿puedes confirmarme que has seguido estos pasos?

1. Instalar un servidor en tu ordenador local (por ejemplo, WAMP).

2. Almacenar el código PHP en la carpeta www (por ejemplo, c:/wamp/www) de ese servidor, sustituyendo 5331 por el valor correspondiente al puerto COM de tu ordenador al que está conectado la báscula (estos valores se encuentran en el archivo serproxy.cfg).

3. Introducir en el archivo serproxy.cfg los parámetros de comunicación de la báscula (velocidad, número de bits y bits de parada).

4. Ejecutar serproxy.

5. Acceder con tu navegador al archivo serie.php (por ejemplo, http:/localhost/serie.php) y pulsar el botón Update. ¿qué te aparece en pantalla, nada, o valores raros?

6. ¿Tienes más información sobre el método de comunicación de la báscula? Es probable que sea un método bi-direccional, que no devuelva el valor de la pesada a menos que se lo solicitemos. En este caso tendríamos que enviar el comando apropiado desde serie.php a la báscula con fputs y, a continuación, leer la respuesta con fgets (como hago yo en mi código del PIC).
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 27 de Febrero de 2008, 23:21:10
ok amigo
si tengo un servidor en mi maquina local (Apache) y si al maceno el codigo php en la carpeta www, el puerto COM de mi maquina es <<< com1 por lo cual el codigo lo dejo asi 5331 yo pienso que mi error esta en la configuracion del serproxy.cfg en los parametros de comunicacion.
por que cuando ejecuto el el codigo php arroja simbolos raros y creo que es por la configuracion...
eso de que arroje codigos raros me imagino que es por que ya hay una comunicacion con el puerto serial o me equiboco
lo que mencionas del  metodo bi-diriccional la verdad no lose.  Voy a investigar bien la configuracion y seguir intentando
bueno gracias de nuevo
saludos.........
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 28 de Febrero de 2008, 04:36:07
Si aparece algo en pantalla es porque PHP está recibiendo datos, pero ahora habría que saber si esos datos están bien codificados. Ten en cuenta que pueden ser símbolos raros porque la báscula esté transmitiendo un valor numérico y PHP lo está convirtiendo en los caracteres ASCII equivalentes. Por ejemplo, si la báscula transmite 32, PHP mostrará un espacio.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 28 de Febrero de 2008, 12:24:49
exactamente que me aparece es esto brother

À€€à˜þà˜à€€€€€€à€€€€€à˜þà˜à€€€€€€à€€€€€à˜þà˜à€€€€€€à€€€€€à˜þà˜à€€€€€€à€€€€€à˜þà˜à

y cuando aparecen caracteres ASCII que se debe hacer
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 28 de Febrero de 2008, 13:08:46
Hola Armando:

Sustituye la línea

Código: [Seleccionar]
echo "$line";

Por este código para ver los códigos ASCII separados por comas, a ver si tienen algún sentido esos caracteres:
Código: [Seleccionar]
$codigos="";
$longitud=strlen($line);
for($i=0;$i<$longitud;$i++){
    $codigos.=ord(substr($line,$i,1));
    $codigos.=",";
}
echo $codigos;

En cualquier caso, ¿puedes darnos algún tipo de información sobre la báscula (marca, modelo, ...) para ver si encontramos información sobre su protocolo de comunicación?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 28 de Febrero de 2008, 19:07:03
he modificado el codigo y esto es lo que arroja

128,30,128,30,128,30,224,152,30,254,24,224,152,24,224,24,128,30,128,30,128,30,128,30,128,30,128,30,224,24,128,30,128,30,128,30,128,30,128,30,224,152,30,254,24,224,152,24,224,24,128,30,128,30,128,30,128,30,128,30,128,30,224,24,128,30,128,30,128,30,128,30,128,30,224,152,30,254,24,224,152,24,224,24,128,30,128,30,128,30,128,30,128,30,128,30,224,24,128,30,128,30,128,30,128,30,128,30,224,152,30,254,24,224,152,24,224,24,128,30,128,30,128,30,128,30,128,30,128,30,224,24,128,30,128

jaguar
Marca     Metter Toledo
Serie      5173270 - 5lb
Modelo   Jaguar
Nom      201

saludos....
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 29 de Febrero de 2008, 07:48:19
Hola Armando, como no consigas más información sobre el protocolo que usa la báscula estarás perdido... Parece ser que usan un protocolo llamado MTCont, del que no he encontrado ninguna información, espero que tú tengas más suerte.

En caso contario, te tocará hacer ingeniería inversa: conectar la báscula al PC y un programa sniffer del puerto serie e intentar averiguar qué relación existe entre los datos que intercambian el PC y la báscula y la información que se presenta al usuario.

Suerte y saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: MGLSOFT en 29 de Febrero de 2008, 09:29:59
Busca, busca, busca y triunfaras!!!
Para el jaguar Toledo tiene toda una libreria completa para poner en aplicaciones, que hace la comunicacion con un cabezal o toda una red completa.
Incluye funciones de tara, cero, visualizacion en libras o kg, etcetera.
Es gratuita y solo debes buscar para bajartela... :mrgreen: :mrgreen: :mrgreen:
Título: Re: PHP, puerto rs232 y PIC
Publicado por: noname1744 en 02 de Marzo de 2008, 14:06:14
hola quisisera saber como conectar una pagina web con un pic via serial, tienen algu ntutorial para ayudarme por fa
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 02 de Marzo de 2008, 14:25:31
Bienvenido noname. Sólo tienes que descargarte el archivo que se menciona en este mismo hilo. En él encontrarás todo lo necesario con un ejemplo muy sencillo. Y, si después de probarlo te surgen dudas, aquí estaremos para ayudarte...

saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 02 de Marzo de 2008, 18:01:13
Pasos necesarios para probar la comunicación PHP-RS232-PIC:

1. Instalar un servidor en tu ordenador local (por ejemplo, WAMP: http://www.wampserver.com/en/index.php).

2. Almacenar el código serie.php en la carpeta www (por ejemplo, c:/wamp/www) de ese servidor, sustituyendo en la línea 8 el valor 5331 por el correspondiente al puerto COM de tu ordenador al que está conectado el PIC (estos valores se encuentran en el archivo serproxy.cfg).

3. Introducir en el archivo serproxy.cfg los parámetros de comunicación (velocidad, número de bits y bits de parada).

4. Ejecutar serproxy.

5. Acceder con tu navegador al archivo serie.php (por ejemplo, http:/localhost/serie.php) y pulsar el botón Update.

6. Opcionalmente, si tu ordenador tiene dirección IP dinámica y quieres acceder al PIC desde Internet, contratar un nombre de dominio gratuito con DynDNS: http://www.dyndns.com/ (u otro similar).
Título: Re: PHP, puerto rs232 y PIC
Publicado por: noname1744 en 03 de Marzo de 2008, 13:01:49
hola jfmateos... Mi primera duda como bajo el ejemplo que me dices.... Y la duda que tengo con el proyecto es que como haces que mediante codigo php yo pueda leer el pueerto serial... en estos dias baje algo que se llama "serial extension", segus me es como un driver para hacer funcionar el puerto serial mediante php, pero no me funciono... bueno si me puedes aclarar la duda e lo agradeceria....
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 03 de Marzo de 2008, 16:01:31
Hola noname:

El ejemplo te lo bajas haciendo clic aquí http://www.villatic.org/carpetaJuanfe/PHP_RS232.rar y al descomprimir este archivo te encontrarás todo lo necesario.

Yo utilizo un programa llamado serproxy en lugar de usar el "serial extension", pues esta extensión no estaba demasiada depurada cuando estuve investigando este asunto.

El programa serproxy actúa como intermediario entre el puerto RS232 y PHP, convirtiendo éste en un socket, que puedes abrir directamente desde PHP con fsockopen, y en el que puedes leer y escribir con las funciones habituales, como fgets y fputs.

Échale un ojo al código de serie.php y si tienes alguna duda, ya sabes dónde consultar.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: noname1744 en 03 de Marzo de 2008, 17:14:24
oye gracias ya lo baje... ahora lo voy a usar a ver que tal cualquier duda... vuelvo a preguntar bye
Título: Re: PHP, puerto rs232 y PIC
Publicado por: noname1744 en 04 de Marzo de 2008, 11:43:25
hola como estas otra pregunta en este paso que me dijiste

Introducir en el archivo serproxy.cfg los parámetros de comunicación (velocidad, número de bits y bits de parada).

como hago si tengo un COM 5.... como se que numero poner, lo que pasa es que no pude abrir ese archivo por que mi compu no reconoce ese .cfg, con que programa debo abrirlo.... y otra pregunta la pantalla negra que sale al ejecutar serproxy, lego que se hace conexion se cierra, o esta permanece... abierta... Disculpa la molestia.......
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 04 de Marzo de 2008, 12:11:28
Hola noname:

El contenido del archivo serproxy.cfg es el siguiente:

Código: [Seleccionar]
# Config file for serproxy
# See serproxy's README file for documentation

# Transform newlines coming from the serial port into nils
# true (e.g. if using Flash) or false
newlines_to_nils=false

# Comm ports used
comm_ports=1,2,3,4

# Default settings
comm_baud=2400
comm_databits=8
comm_stopbits=1
comm_parity=none

# Idle time out in seconds
timeout=300

# Port 1 settings (ttyS0)
net_port1=5331

# Port 2 settings (ttyS1)
net_port2=5332

# Port 3 settings (ttyS2)
net_port3=5333

# Port 4 settings (ttyS3)
net_port4=5334

y puedes abrirlo/modificarlo con cualquier editor de textos, como Bloc de notas, aúnque yo te recomiendo Scite(http://users.hfx.eastlink.ca/~gisdev/scite-1.75-setup-1.exe) que es gratuito y más apropiado para modificar código fuente.

Sólo tienes que añadir el puerto 5 en la línea 9 y añadir una entrada nueva para este puerto al final del archivo; te quedaría así:

Código: [Seleccionar]
# Config file for serproxy
# See serproxy's README file for documentation

# Transform newlines coming from the serial port into nils
# true (e.g. if using Flash) or false
newlines_to_nils=false

# Comm ports used
comm_ports=1,2,3,4,5

# Default settings
comm_baud=2400
comm_databits=8
comm_stopbits=1
comm_parity=none

# Idle time out in seconds
timeout=300

# Port 1 settings (ttyS0)
net_port1=5331

# Port 2 settings (ttyS1)
net_port2=5332

# Port 3 settings (ttyS2)
net_port3=5333

# Port 4 settings (ttyS3)
net_port4=5334

# Port 5 settings (ttyS4)
net_port4=5335

La pantalla negra debe permanecer abierta durante todo el intercambio de datos con el PIC, pues es precisamente la encargada de actuar como intermediaria entre el PIC y PHP.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: noname1744 en 04 de Marzo de 2008, 12:16:57
ok gracias es que como toy usando usb, pero como com virtual ese com 5 esel que me parece, gracias estamos en contacto para decirte si me funciono todo...
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Pedro Pan en 17 de Marzo de 2008, 14:02:00
hola jfmateos2 pues yo hice una aplicacion de controlar un motor desde un navegador web y lo hice en php y en linux pero se puede aplicar para windows por si te interesa creo que lo tengo por aqui. Desde un navegador web manejas el motor con cambio de giro y velocidad, ademas en una base de datos te llevaba la bitacora de los cambios con la hora y dia


(http://i45.servimg.com/u/f45/11/35/12/25/th/instan10.png) (http://www.servimg.com/image_preview.php?i=45&u=11351225)

(http://i45.servimg.com/u/f45/11/35/12/25/th/instan10.jpg) (http://www.servimg.com/image_preview.php?i=46&u=11351225)
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 19 de Marzo de 2008, 13:56:11
Hola Pedro, buen trabajo. Estaría bien si pudieras poner el código, porque lo has hecho usando php_serial ¿verdad? y no el serproxy que usé yo.

Cuando yo investigué este asunto el php_serial estaba en pañales y por eso no lo usé; pero veo por tus éxitos que debe haber mejorado mucho (habrá que tenerlo en cuenta).
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Pedro Pan en 19 de Marzo de 2008, 14:04:43
hola jfmateos si yo use una clase en php la cual es como una funcion y si use php_serial yo al principio no encontraba mucha informacion acerca de este tema y mucho menos para linux con gusto subo el codigo para que lo analises y ves si puedes aplicarlo o alguien mas
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Pedro Pan en 21 de Marzo de 2008, 13:04:52
Bueno aqui subo la informacion que prometi el php_serial lo baje de la pagina php classes la clase la hizo el amigo Remy Sanchez la cual la modifique un poco para mi cometido les dejo el link para descargarla PHP_SERIALPHP_SERIAL (http://www.phpclasses.org/browse/package/3679.html) ademas les dejo un pequeño informe del funcionamiento del proyecto en pdf y los codigos que use. Necesitas tener instalado el programa llamado SETSERIAL el cual te sirve para monitorear el puerto serial

Esta es la clase la cual debe estar en la misma carpeta del proyecto para que la llames desde tu codigo principal

Código: [Seleccionar]
<?php

class phpSerial
{
var $_device null;
var $_dHandle null;
var $_buffer "";

/**
 * @var bool
 */
var $autoflush true;

/**
 * 
 *
 * regresa bool
 */
function phpSerial ()
{
setlocale(LC_ALL"en_US");

$sysname php_uname();

if (substr($sysname05) === "Linux")
{
$version exec("setserial -V 2>&1");
if (substr($version019) === "setserial version 2")
{
register_shutdown_function(array($this"freeDevice"));
return true;
}
else 
{
trigger_error("Invalido (!= 2) Puerto Serial no encontrado "E_USER_ERROR);
exit();
return false;
}
}
else 
{
trigger_error("Host OS no es Linux, no se puede correr la aplicacion."E_USER_ERROR);
exit();
return false;
}
}

/**
 * @param string $device /dev/ttyS0
 * @regresa bool
 */
function setDevice ($device)
{
$test exec("setserial " $device " 2>&1");

// if (substr($test, 0, strlen($device)+1) === $device . ",")

if (substr($test010) === "/dev/ttyS0")
{
$this->_device $device;
$this->_dHandle fopen($this->_device"wb");
return true;
}
else 
{
trigger_error("Puerto Especificado No Valido"E_USER_WARNING);
return false;
}
}

/**
 * Cierra el archivo
 *
 * regresa bool
 */
function freeDevice ()
{
if ($this->_device !== null)
{
if (fclose ($this->_dHandle))
{
$this->_dHandle null;
$this->_device null;
return true;
}
}

return false;
}

/**
 * Sets a setserial parametro (cf man setserial)
 *
 * @param string $param nombre parametro
 * @param string $arg valor del parametro
 * @regresa bool
 */
function setParam ($param$arg "")
{
if ($this->_device === null)
{
trigger_error("Dispositivo tiene que ser especificado"E_USER_WARNING);
return false;
}

$return exec ("setserial " $this->_device " " $param " " $arg " 2>&1");

if ($return{0} === "I")
{
trigger_error("setserial: Bandera Invalida"E_USER_WARNING);
return false;
}
elseif ($return{0} === "/")
{
trigger_error("setserial: Error del archivo dispositivo"E_USER_WARNING);
return false;
}
else 
{
return true;
}
}

/**
 * esta funcion envia el mensaje al puerto
 *
 * string $str string de lo que se quiera enviar al puerto
 */
function sendMessage ($str)
{
$this->_buffer .= $str;

if ($this->autoflush === true$this->flush();
}

/**
 * @return bool
 */
function flush ()
{
if ($this->_device === null)
{
trigger_error("Dispositivo no fue Especificado"E_USER_WARNING);
return false;
}

if (fwrite($this->_dHandle$this->_buffer) !== false)
{
$this->_buffer "";
return true;
}
else 
{
$this->_buffer "";
trigger_error("Error al enviar Mensaje"E_USER_WARNING);
return false;
}
}
}

?>


Este codigo es el de la pagina principal donde estaba el control del motor

Código: [Seleccionar]
<HTML>
<HEAD>
<TITLE>INTRODUCCION A LA PROGRAMACION DE COMPUTADORAS 769</TITLE>
</HEAD>
<BODY>

<table cellpadding="2" cellspacing="2" border="2" align="right" valign="middle" bgcolor="#3A699C" width="100%" frame="border">
<TD ALIGN="center" >CONTROL DE MOTOR STEPPER POR EL PUERTO SERIAL</TD>
</table>
<BR>
<BR>

<!-- este es el primer bloque de la pagina control de direccion -->
<table cellpadding="2" cellspacing="2" border="2" align="center" valign="middle" bgcolor="#3A699C" width="100%">

<TR>
    <TD COLSPAN="2" ALIGN="center" >INGENIERIA EN ELECTRONICA</TD>
</TR>

<TR>

 
<TD> <img src="/stepper.jpg" height="250" width="250" alt="motor"; ALIGN="center"/> </TD>

</TR>               
</table>
<BR>

<!-- este es el segundo bloque de la pagina control de velocidad -->
<table cellpadding="2" cellspacing="2" border="2" align="center" valign="middle" bgcolor="#3A699C" width="100%">

<TR>
<TD COLSPAN="2" ALIGN="center" >CONTROLES DEL MOTOR</TD>
</TR>

<TR>
<TD> 
<BR>
<FORM METHOD="post" ACTION="mis_datos.php">

<blockquote>
<p>Derecha<input type="radio" value="derecha" checked name="direccion"></p>
<p>Izquierda<input type="radio" name="direccion" value="izquierda"></p>
</blockquote>

</TD>


<TD>

<blockquote>
<p>Baja<input type="radio" value="baja" checked name="velocidad"></p>
<p>Media<input type="radio" name="velocidad" value="media"></p>
<p>Alta<input type="radio" name="velocidad"  value="alta" ></p>
</blockquote>

<p><input type="submit" value="Enviar datos" name= "enviar"> </P>

</FORM>
   </TD>

</TR>
</TABLE>
<br>

</BODY>

<HTML>

Y este ultimo es en donde enviaba los datos a la base de datos y los desplegaba en pantalla

Código: [Seleccionar]
<html>
<head>
   <title>Movimiento de Motor</title>
</head>
<body>

 

<?PHP;

require_once "serial.class.php";
// se crea el objeto
$serial = new phpSerial();

// puerto serial
$serial->setDevice("/dev/ttyS0");


//conectamos con el servidor
$record = date("d/m/y H:i:s");
$link = mysql_connect("localhost", "root", "");
 
//echo $velocidad;
//echo $direccion;

// comprobamos que hemos estabecido conexión en el servidor
if ($link == 0)
{
echo "<h2 align='center'>ERROR1: No se puede conectar al servidor</h2>";
exit;
}
else
{
//echo "<h2 align='center'>Se logro la conexion</h2>";

}


// realizamos la conexion con la base de datos control
$conexion = mysql_select_db("control", $link);

if ($conexion == 0)
{
echo "<h2 align='center'>ERROR2: No existe la base de datos</h2>";
mysql_create_db("control", $link);
}
else
{
//echo "<h2 align='center'>base de datos conectada</h2>";
}


if($direccion == "derecha")
{
echo "Envio mover a Derecha";
if($velocidad == "baja")
{
echo "Velocidad de Motor Baja";
$enviar = "3";
}

if($velocidad == "media")
{
echo "Velocidad de Motor Media";
$enviar = "2";
}

if($velocidad == "alta")
{
echo "Velocidad de Motor Alta";
$enviar = "1";
}

// el mensaje a enviar
$serial->sendMessage($enviar);

$enviar = "A";
// el mensaje a enviar

$serial->sendMessage($enviar);

$sql = "INSERT INTO registros (direccion, hora, velocidad)";

$sql .= "VALUES ('$direccion', '$record', '$velocidad')";

$result = mysql_query($sql);

}

if($direccion == "izquierda")
{
  echo "Envio mover a Izquierda";
if($velocidad == "baja")
{
echo "Velocidad de Motor Baja";
$enviar = "3";
}

if($velocidad == "media")
{
echo "Velocidad de Motor Media";
$enviar = "2";
}

if($velocidad == "alta")
{
echo "Velocidad de Motor Alta";
$enviar = "1";
}

// el mensaje a enviar
  $serial->sendMessage($enviar);  
 
  $enviar = "B";
 
  // el mensaje a enviar
  $serial->sendMessage($enviar);
 
  $sql = "INSERT INTO registros (direccion, hora, velocidad)";

  $sql .= "VALUES ('$direccion', '$record', '$velocidad')";

  $result = mysql_query($sql);  
 
}


?>

<!-- <BODY background="/usac.jpg" bgproperties="fixed"> -->
 
<table cellpadding="2" cellspacing="2" border="2" align="center" valign="middle" bgcolor="#3A699C" width="100%" frame="box">
<tr>
<td ALIGN="center"> <font size="3">CONTROL DE MOTOR STEPPER POR EL PUERTO SERIAL</font></td>

</tr>
<BR>
<BR>

<tr>
<td>

<?php

$result mysql_query("SELECT id, hora, velocidad, direccion FROM registros"$link);

if ($row mysql_fetch_array($result)){

echo "<table border = '1'> \n";

echo "<tr> \n";

echo "<td><b>id</b></td> \n";

echo "<td><b>hora</b></td> \n";

echo "<td><b>velocidad</b></td> \n";

echo "<td><b>direccion</b></td> \n";

echo "</tr> \n";

do {

echo "<tr> \n";

echo "<td>".$row["id"]."</td> \n";

echo "<td>".$row["hora"]."</td>\n";

echo "<td>".$row["velocidad"]."</td>\n";

echo "<td>".$row["direccion"]."</td>\n";
echo "</tr> \n";

} while ($row mysql_fetch_array($result));


echo "</table>";  


} else {

echo "¡ La base de datos está vacia !";

}

?>

<a href='portada.php'>VOLVER AL FORMULARIO</a>
</td>
<td>
<img src="/usac.jpg" height="350" width="350" alt="USAC" />

</td>
</tr>

</table>
</body>
</html>

Utilize Kubuntu y Xampp ademas para la parte de programacion utilize el bluefish el cual es un compilador de diseño web
Saludos y suerte en todo

AQUI LES DEJO EL INFORME (http://www.4shared.com/file/41471423/4efce5bc/informe2.html)

Título: Re: PHP, puerto rs232 y PIC
Publicado por: Geo en 14 de Abril de 2008, 00:54:34
Qué tal amigos, yo hice algo similar, pero para la parte de la comunicación de la página con el puerto aproveché el uso de una base de datos, de la siguiente forma:

Página web PHP/ASP <--> PC como Servidor web (Apache/IIS) y servidor de base de datos (MySQL) <--> Aplicación de comunicación con el puerto (USB/RS-232/...)

Mediante la página web se envían los comandos, los cuales se almacenan en la base de datos. La aplicación que se comunica con el puerto monitorea el estado de la base de datos cada X tiempo, si hay cambios actualiza envíandolos a través del puerto.

Para quien busque hacer un proyecto parecido, creo que esta es una buena alternativa :).

Saludos.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Pedro Pan en 14 de Abril de 2008, 01:02:48
hola geo interesante tu proyecto, manejastes el puerto usb desde php o fue el serial?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 15 de Abril de 2008, 15:33:14
hola amigos

despues de un tiempo haciendo pruebas para obtener el dato de la bascula lo e logrado
un amigo me paso una aplicacion en  vb y funciono obtuve el dato de la bascula solo configure los parámetros de comunicación (velocidad, número de bits y bits de parada).

pero la realidad de las cosas lo quiero hacer con php y no e podido

bueno seguire intentado y aver que pasa saludos atodos......
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Geo en 16 de Abril de 2008, 13:14:27
hola geo interesante tu proyecto, manejastes el puerto usb desde php o fue el serial?
Utilicé USB. No directamente con PHP, cuando inicié el proyecto busqué un poco de información sobre cómo manejar este puerto con PHP, ASP o algún otro lenguaje para aplicaciones web (mi primer alternativa era CGI), sin embargo, decidí aprovechar el uso de la PC y utilizar la base de datos como enlace, una solución que me pareció bastante adecuada, de esta forma se puede manejar cualquier puerto, ya que son dos aplicaciones diferentes comunicándose gracias a la base de datos :).

Lo he probado de dos formas:
ASP en un servidor IIS <-> Base de datos Access <-> Aplicación en Visual Basic <-> Puerto USB <-> PIC 18f2550
PHP en un servidor Apache <-> Base de datos MySQL <-> Aplicación en C++ <-> PUerto USB <-> PIC 18f2550

Cualquier comentario, con gusto :). Disculpa no haber contestado antes pero se me pierden los hilos :P, aunque entro a menudo lo hago por un breve momento :).
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 18 de Abril de 2008, 11:35:14
hola amigos

Tengo una duda respecto al serproxy y no se si me puedan ayudar.

a se dias ejecute el serproxy con la configuracion adecuada y me conecte localmente a ese servidor con telnet de la siguiente manera

telnet 127.0.0.1 5031                 y logre leer el dato de la bascula  obtuve por fin el dato de la bascula correcto

eso quiere decir que si hay una comunicacion con la bascula y el serproxy ono.....?

en la pantalla del telnet me aparecia el dato real pero por que con php no logro obtener el dato.

bueno si tienen alguna idea o respuesta  se los agradecere mucho
 saludos ....
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 18 de Abril de 2008, 11:57:27
TEndríamos que ver tu código php para poder ayudarte
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 23 de Abril de 2008, 10:18:19
hola amigos
por aka mi codigo

<?
        $serproxy = 1;
        if($serproxy)
          {
            $fp = fsockopen ("127.0.0.1", 5331, $errno, $errstr, 10);
         
            if(!$fp)
              {
                echo"$errstr ($errno)";
              }
                else
                 {                           
                    $string = "0";       
                    fputs ($fp, $string);
                    $line = "";
                    $line = trim(fgets($fp));
                    echo"$line";
     
                    echo "<center><form action = 'serie.php'><input type = 'submit' value = 'Update'</form>";

                    fclose ($fp);
                 }
              }
?>


si en algo pueden ayudarme lo agradecere mucho...
saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 23 de Abril de 2008, 10:36:37
Hola armando, de momento veo que te falta el cierre del input />

¿Te aparece algo en pantalla cuando accedes a este script php con el navegador? Esto podría ayudarnos a detectar dónde está el problema.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 23 de Abril de 2008, 16:34:11
con el codigo php no aparece nada, con telnet si me arroja valor real


lo que veo es de que no pasa de a qui      $line = trim(fgets($fp));
cuando va a leer lo que hay en el puerto  tarda un tiempo  despues manda un error
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 23 de Abril de 2008, 17:38:42
Pon un par de traces y anula el envío de datos dejando sólo la recepción, como los que te indico para que sepamos exactamente hasta dónde llega

if(!$fp)
              {
                echo "Fallo en la conexión";
                echo"$errstr ($errno)";

              }
                else
                 {                           
                   // $string = "0";       
                   // fputs ($fp, $string);
                    $line = "";
                    echo "Antes de recibir
";
                    $line = trim(fgets($fp));
                    echo"$line";
                    echo "Después de recibir
";
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 24 de Abril de 2008, 14:04:21
hola jfmateos2
muchas gracias por responderme


 he probrado lo que me sujeriste y la verdad paso lo mismo
tarda una eternidad y despues a rroja este mensaje

Antes de recibir
Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\serie\serie4.php on line 20



el error esta aqui en $line = trim(fgets($fp));   he probado de nuevo con telnet y va de maravilla
no se si exista otro comando para poder leer lo que hay en puerto

saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 24 de Abril de 2008, 15:57:38
Hola armando, cuando conectac por telnet, ¿escribes algún comando en la consola? o ¿directamente te aparece la respuesta de la báscula sin que tú la solicites?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 25 de Abril de 2008, 17:37:07
hola amigo

las respuestas de la bascula aparecen directamente yo no pongo ningun comando
Título: Re: PHP, puerto rs232 y PIC
Publicado por: MGLSOFT en 25 de Abril de 2008, 22:18:24
Esa bascula envia el dato de peso cada X tiempo, sin que nadie lo solicite?? :shock:
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 26 de Abril de 2008, 05:25:48
Hola Armando, imagino que la báscula tiene implementado un servidor Telnet que devuelve la última pesada cuando se establece conexión.

Para comunicarte con ella mediante PHP existen script como éste http://www.geckotribe.com/php-telnet/ , capaces de establecer una comunicación telnet desde php.

Prueba y nos cuentas. Debería funcionar.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 26 de Abril de 2008, 13:31:46
hola amigos a la mejor no me explique bien ...
lo que hago es lanzar primero el servidor serproxy  despues  me conecto con telnet dela siguiente manera        telnet 127.0.0.1 5331      y en la ventana de telnet aparece el dato de la bascula
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 26 de Abril de 2008, 13:57:36
Yo te había entendido eso precisamente Armando.

La báscula sólo responde una vez ¿verdad? aunque luego realices otra pesada. ¿o responde automáticamente cada vez que haces una pesada?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Armando R. A en 26 de Abril de 2008, 14:07:10
si automaticamente cada vez que realizo una pesada, esta mandando en dato cada sierto tiempo
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 26 de Abril de 2008, 14:12:28
Entonces prueba con el script de telnet que te indiqué antes, debe funcionarte.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: daaran en 29 de Abril de 2009, 09:54:48
buenas, espero que alguien me pueda aclarar un par de cosas.
lo que estoy tratando de hacer es conectar:

pic (que no es arduino) -> max232 -> puerto serie -> php ->flash

instale el serproxy , todo bien, pero ando un poco perdido con lo de el cierre del mensaje con el caracter 0 al final. ¿porque ponen en ascii el 13 y el 10?
desde mi pic a cada linea tengo que cerra con uno de estos caracteres?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 29 de Abril de 2009, 11:00:58
Los caracteres 13 y 10 son simplemente para provocar un salto de línea. No son imprescindibles.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: ingcontrol en 21 de Abril de 2010, 09:31:25
Hola

quisiera saber si me pueden ayudar para activar el serproxy en fedora linux
ya que revise casi todo el tema y no veo como ejecutarlo en linux

de antemano un cordial saludo
Título: Re: PHP, puerto rs232 y PIC
Publicado por: Pedro Pan en 21 de Abril de 2010, 13:25:55
Porque no usas la libreria PHP Serial funciona bien en linux
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 22 de Abril de 2010, 01:47:06
Quizás esto te ayude ingcontrol: http://ubuntuforums.org/showthread.php?t=1370007
Título: Re: PHP, puerto rs232 y PIC
Publicado por: ingcontrol en 23 de Abril de 2010, 00:57:09
ok gracias ya lo hice y funciono en mi pc de escritorio ahora tengo problema en mi laptop por que no tiene puerto serial
ahora modifique el serproxy.cfg y agregue el serial via usb asi

# port 5 settings (ttyUSB0)
net_port5=5335

y el serie.php  le cambio el valor 5331 por 5335 y al verlo en explorador me aparece el warning : fsockopen() function.fsockopen unable to connect to
localhost:5335()conexion rehusada
conexion rehusada (111)

alguien me puede decir que ocurre?? o en que falle??

saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 23 de Abril de 2010, 01:39:30
Pero ¿qué tienes conectado a ese puerto USB? Yo lo he probado con este adaptador basado en el  FT232 y me funciona correctamente (http://www.todopic.com.ar/foros/index.php?topic=27755.0)?
Título: Re: PHP, puerto rs232 y PIC
Publicado por: ingcontrol en 23 de Abril de 2010, 22:22:43
hola estoy usando un conversor de puerto serie a usb un cable de la compañia manhatan
pero al modificar el serproxy.cfg y tratar de verlo en el serie.php
me sale el error mencionado necesito saber que numero de puerto darle o que tengo que modificar para recibir los datos ? del microcontrolador
el nombre del puerto es ttyUSB0

saludos
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 24 de Abril de 2010, 10:30:59
Creo que esto puede ayudarte ingcontrol: https://lists.ubuntu.com/archives/ubuntu-users/2007-November/128442.html
Título: Re: PHP, puerto rs232 y PIC
Publicado por: variaj en 23 de Abril de 2011, 14:32:20
Hola yo tambien tengo un problema asi, hice un sensor de temperatura con el pic18f4550 y si me envia los datos por usb al conectarlo ala PC me lo reconoce como un COM2 ya hice los pasos que dijeron, pero no me envia nada, y pues quisiera ver si es por la configuracion de la velocidad porque yo la tengo a 9600 debido a que en la hypérterminal si me recibe los datos de esa manera pero requiero hacerlo en una pagina web
el codigo que estoy usando es este:
<?php
$serproxy=true;
if ($serproxy) {

   $fp = fsockopen ("localhost", 5332, $errno, $errstr, 10);
   if (!$fp) {
       echo "$errstr ($errno)";
   } else {           
       $line="";       
       $line = trim(fgets($fp));
       echo "<table border='1'><tr><td>RESPUESTA Del TermometroUSB</td></tr>";
       echo "<tr><td>$line</td><td>Conectado</td></tr></table>";
       fclose ($fp);
   }
}
?>

y en el serproxi.cfg

# Default settings
comm_baud=9600-------->solo cambie esto
comm_databits=8
comm_stopbits=1
comm_parity=none

Deberia estar ya conectado pero no lo hace que estara pasando??????????????
Título: Re: PHP, puerto rs232 y PIC
Publicado por: geex en 09 de Noviembre de 2013, 02:06:05
hola, excelente post
yo estoy trabajando con algo similar, un proyecto de clase que trata justo de eso: encender leds por internet
buscando como lograr la comunicación llegue a este post, de manera local ya funciona, con un servidor wamp
pero lo que quiero es ponerlo en un servidor en internet; me descargue el serproxy y configure el .cfg asi:

commports=1,2

comm_baud=9600
comm_databits=8
comm_stopbits=1
comm_parity=none

timeout=300

net_port1=5331
net_port2=5332

pero a la hora de abrir el serproxy.exe me pidió permisos el firewall y acepte las conexiones, pero solo da un pantallazo y se cierra.
Ojala pudieran ayudarme para lograr configurar mi pequeño sistema, no se si entendí bien pero se supone que el archivo serproxy.exe debe quedarse abierto en la computadora donde esta conectado el dispositivo serial, luego en la pagina php se debe cambiar el localhost por la ip de la computadora verdad?
ojala alguien pueda ayudarme un poco les estaré muy agradecido.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 09 de Noviembre de 2013, 05:46:15
Sí, el serproxy te pedirá permisos de firewall pero luego debería quedarse abierta su pantalla negra y en ella se irían mostrando las conexiones.

Quizás puedas probar con otro ordenador.
Título: Re: PHP, puerto rs232 y PIC
Publicado por: geex en 10 de Noviembre de 2013, 03:19:04
a ok muchas gracias :) lo probare

y una ultima molestia, lo que estoy haciendo es enviar caracteres al puerto serial, de esta manera:

<Form Name ="form1" Method ="POST" ACTION = "serie.php">

<table width="300" border="1" align="center" bordercolor="#F0F0F0">
  <tr>
    <td><span class="Estilo10">Portb4</span></td>
    <td><input type = "Submit" name = "dato" value = "Portb 4 on" /></td>
    <td><input type = "Submit" name = "dato" value = "Portb 4 off" /></td>
  </tr>
</table>

<?php
$datos=$_POST;
$dato = $datos['dato'];
// Acceso mediante PHP al puerto serie
$serproxy=true;
if ($serproxy) {
   // Este código debe utilizarse en combinación con serproxy
   // (http://www.lspace.nildram.co.uk/freeware.html)   
   $fp = fsockopen ("localhost", 5331, $errno, $errstr, 10);
   if (!$fp) {
       echo "$errstr ($errno)";
   } else { 
                  
        if ($dato=="Portb 4 on") {
         echo "Led puerto b4 encendido" ;
         fputs($fp, chr(97));
      }
      if ($dato=="Portb 4 off") {
         echo "Led puerto b4 apagado" ;
         fputs($fp, chr(98));
      }        

    fclose ($fp);
   }
}
?>


lo que se supone estoy haciendo es enviar una 'a' o una 'b'
solo que no lo envía o no se que es lo que estoy haciendo mal, ojala pudieran checar mi código y corregirme
Muchas gracias

Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 10 de Noviembre de 2013, 11:12:42
Por qué no miras si las variables de error (errno y errstr) te dan alguna pista (echo $errno;)
http://php.net/manual/es/function.fsockopen.php
Título: Re: PHP, puerto rs232 y PIC
Publicado por: geex en 10 de Noviembre de 2013, 13:54:55
ya logre hacerlo localmete, lo que estaba mal era el archivo cfg, pero ya que lo subo al servidor no funciona, hay que abrir algun puerto del router en especifico? como le hago para que si funcione a traves de internet, estoy usando un servidor gratuito (http://miarroba.es/) tendra algo que ver?
ojala pudiesen ayudarme. Muchas gracias
Título: Re: PHP, puerto rs232 y PIC
Publicado por: geex en 11 de Noviembre de 2013, 00:13:38
hay alguna manera de comprobar que el puerto serial de la computadora esta recibiendo información desde la pagina? o de internet... no se como decirlo
Título: Re: PHP, puerto rs232 y PIC
Publicado por: jfmateos2 en 11 de Noviembre de 2013, 02:51:05
Creo que lo que quieres hacer es imposible... ten en cuenta que el serproxy y tu dispositivo deben estar en el ordenador en el que reside la página PHP... si ahora esa página está en miarroba tendrías que ir a los servidores de miarroba e instalar allí el serproxy y conectar en su puerto rs232 tu dispositivo PIC, lo cual es imposible.