Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Puerto serie y php (conexion cliente - servidor)

Estas en el tema de Puerto serie y php (conexion cliente - servidor) en el foro de PHP en Foros del Web. Buenos dias a todos: Mi nombre es Inma y soy nueva en el foro. No tengo un trabajo el cual podais seguir, ya que trabajo ...
  #1 (permalink)  
Antiguo 23/07/2014, 03:33
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Pregunta Puerto serie y php (conexion cliente - servidor)

Buenos dias a todos:
Mi nombre es Inma y soy nueva en el foro. No tengo un trabajo el cual podais seguir, ya que trabajo para una empresa privada y todo lo que realizo solo lo hago para la empresa. El poco tiempo libre que me queda es para el hogar y la familia, y sobretodo a mi pequeñin.
Resulta que la aplicacion que estoy realizando esta programado en PHP. Lo tengo alojado en un servidor (WINDOWS SERVER 2008) y los usuarios se conectan al servidor mediante terminal server. Ahora mi problema radica en lo siguiente. Resulta que en uno de los clientes tengo que conectar una bascula por Puerto Serie.
Las pruebas las realice primero conectando la bascula al servidor y no tengo problemas para recibir los datos de pesada por mi codigo PHP y me los muestra sin problemas. El problema radica cuando conecto la bascula al cliente. Cuando realizo la conexion desde el escritorio remoto (El cual tiene mapeado los puertos) no consigo desde el PHP poder realizar conexiones al puerto serie. He probado a recoger datos con otra aplicacion parecida al Hyperterminal y no me da error a la hora de recoger datos, y me los muestras sin problema ya que me redirecciona el puerto COM1 sin problema.
Me he informado en varios foros, manuales, etc. pero no encuentro la forma. En el terminal Server el puerto COM1 de mi cliente seria TS033. Pero ni sustituyendo el nombre tengo forma. He probado con Puertos Series Virtuales, y nada. No se como hacer ya. No se como tendria que llamar al puerto en el PHP para que realice la conexion. Tambien he pensado que a ver si es cosa del servidor el cerrar los puertos. Pero si fuera asi tampoco recibiria nada la otra aplicacion si fuera asi. Llevo mas de una semana liada con esto. He consultado a amigos informaticos y no tienen idea de como solucionar mi problema. Lo unico que me dicen es que es cosa del PHP.
He de decir que he probado con varios codigos para la llamada de los puertos, desde la libreria PHP_SERIAL.CLASS, el PHP_SERIAL_EXTENSION, y todos me funcionan estupendamente de forma local, pero no desde el cliente.

Llamada desde el fopen:
$handle = fopen("COM1", "r+");

Llamada con la libreria PHP_SERIAL.CLASS
$serial->deviceSet("COM1");

Llamada con PHP_SERIAL_EXTENSION:
ser_open("COM1", 9600, 8, "None", "1", "None");

La llamada a COM1 es lo que creo que no me funciona.
Si veis que no me he explicado bien, o algo no entendeis me lo decis.
Muchas gracias de antemano
  #2 (permalink)  
Antiguo 23/07/2014, 04:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Puerto serie y php (conexion cliente - servidor)

Cita:
... los usuarios se conectan al servidor mediante terminal server ...
No conectas por http?

php es un leguaje de servidor, luego no veo claro que pueda conectarse con un puerto del cliente. Fíjate que en cualquiera de las conexiones que has intenado no estas dando la dirección de la maquina cliente que tiene conectada la bascula, así COM1 será forzosamente de la maquina que aloja el servidor no de la maquina cliente.

En una aplicación por http (web) los datos del cliente se deben recoger con javascript por ejemplo y transmitirlos al servidor (con ajax por ejemplo vía post o get) para que php los pueda tratar. La bascula es un periférico más del cliente.

Terminal server es un terreno que no conozco pero en definitiva es un escritorio remoto, por lo que tiene acceso a los periféricos normales, teclado, mose.... pero no se al resto, puedes imprimir a una impresora local por ejemplo, cuando estas conectado por terminal server a la otra maquina o te ves forzada a usar impresoras de red.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 23/07/2014 a las 05:03
  #3 (permalink)  
Antiguo 23/07/2014, 05:04
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Puerto serie y php (conexion cliente - servidor)

Y como tendria que realizar esa llamada?
Si el cliente esta en una red local conectada mediante una LAN, que tendra que poner la direccion ip de la maquina cliente?
Eso lo probe poniendolo en donde pone COM1. Como en las impresoras con ponerle el puerto al que le asigna el servidor al cliente, pues crei que bastaria. En mi caso la COM1 de mi maquina cliente el servidor lo renombra como TS033, crei que con eso bastaba pero por lo que veo no.
La verdad es que estoy un poco perdida en este tema de las conexiones de puerto serie.
Entiendo que la llamada del puerto tendria que realizarla mediante javascritp, no??
Y tendria que utilizar alguna libreria para eso?
  #4 (permalink)  
Antiguo 23/07/2014, 05:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Puerto serie y php (conexion cliente - servidor)

No lo se. No lo he usado, solo aplico la logica que se usa en una aplicación web, lo del cliente se debe tratar con leguaje cliente y transmitirlo al servidor para php lo trate.

Si el servidor renombra los puertos de los clientes de forma univoca y los puede ver deberías poder conectar, pero php esta diseñado al menos originalmente pera ser usado en internet por lo que no se si tendrá previsto ver los puertos de los clientes....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 23/07/2014, 05:48
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Puerto serie y php (conexion cliente - servidor)

Muchas gracias por responder. Seguire investigando con lo que me comentas. Mirando hace un rato, vi algo sobre que los puertos TS hay veces que el cortafuegos los bloquea. Tambien mirare por ahi a ver que tal. Si encuentro la solucion la pondre. Que por cierto, ojala la encuentre.
  #6 (permalink)  
Antiguo 25/07/2014, 01:24
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Puerto serie y php (conexion cliente - servidor)

Buenos dias a todos. Deciros que aun no termine de darle solucion a mi problema. Como he visto que en Internet hay mucho tema en Visual Basic con conexiones a Puerto Serial, pues he optado a realizar una pequeña aplicacion en Visual Basic el cual al ser ejecutado, realice la peticion a la bascula, y guarde en un archivo txt el dato de pesada. Luego con el PHP realizo la lectura del archivo txt con el dato introducido.
Ahora mi guerra es realizar esa aplicacion en Visual Basic, el cual hace añossss que no toco, y ya casi ni me acuerdo como se realizaba. Llevo desde el miercoles por la tarde intentando hacer esto y aun no he conseguido nada. Bueno si, que no me de errores al ejecutar la aplicacion, pero aun no me muestra nada. Quiero empezar con que me muestre algo en una ventana antes de guardarlo en el txt, pero aun no consigo nada.
A ver si tengo mas suerte hoy. Si lo termino ya os ire diciendo.
Saludos
  #7 (permalink)  
Antiguo 28/07/2014, 01:32
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Puerto serie y php (conexion cliente - servidor)

Buenos dias a todos.
Comunicaros que consegui realizar mi pequeña aplicacion en Visual Basic. Me crea el archivo txt con lo que entra por el puerto y luego lo leo con el PHP. Pero sigo teniendo el mismo problema. El tema de los puertos del cliente no tengo nada que hacer. Por mucho que las llamo desde distinta manera no tengo forma.
En Visual Basic, la llamada al puerto seria asi
com1 = My.Computer.Ports.OpenSerialPort("COM1")
Pero viene ser lo mismo. Imagino que habria que llamar al puerto de otra forma, pero no tengo ni idea de como mas. He estado buscando informacion al respecto y no encuentro nada con el tema cliente / servidor en Terminal Server. Se que a lo mejor ya este tema tendria que plantearlo en la zona de Visual Basic, pero me suena a mi que es mas bien una cuestion de redireccionamiento de puerto mas que del lenguaje. ya no se como darle solucion.
A ver si alguien tiene conocimientos de esto y me pudiera dar una orientacion de como realizarlo.
Muchas gracias
  #8 (permalink)  
Antiguo 31/07/2014, 01:53
 
Fecha de Ingreso: julio-2014
Mensajes: 6
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Puerto serie y php (conexion cliente - servidor)

Buenos dias a todos. Comunicaros que ya solucione mi problema, por fin.
Realice la aplicacion en Visual Basic para poder realizar las comunicaciones con la bascula. Las comunicaciones tuve que realizarlas con Visual Basic 6.0 con el componente Microsoft comm control 6. Ya que con el Serial no me sirvio para comunicaciones en remoto.
Una vez realizada la aplicacion tenia el siguiente problema. Cuando ejecutaba desde el cliente no habia problema si arranca el ejecutable fuera del PHP, me reconocia el puerto y me mostraba los datos de bascula, pero si lo hacia desde el PHP no me mandaba datos de bascula.
El problema era que si lo ejecutaba desde el PHP me lo ejecutaba de forma local, como si estuviera abriendo desde el mismo servidor, y no desde el cliente, con lo que no me mapeaba el puerto COM.
Solucion que le di a esto. Modifique la aplicacion que realice en Visual Basic para que siempre este ejecutandose como un demonio y siempre este cada segundo metiendo datos actualizados de la bascula.
Esto lo realice gracias a la ayuda de un amigo de un compañero. La verdad que le estoy muy agradecida por la ayuda.
Esto os lo escribo por si os encontrais con el mismo problema que yo algun dia.
Saludos

Etiquetas: cliente, conexion, puerto, serie, usuarios
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 11:14.