| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Esteban Cdt

Registrado: 26 May 2003Mensajes: 22
|
Publicado: Mar 12 Jul, 2005 1:25 pm Asunto: Mensajes Windows al recibir del puerto serie |
|
|
Hola!
¿Alguien sabe qué mensaje(s) de Windows o C++ Builder sirven para detectar si se ha recibido algo por el puerto serie?
Gracias por adelantado. |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Mar 12 Jul, 2005 11:26 pm Asunto: |
|
|
Porque no utilizas componentes que realizan este trabajo y te generan un evento cuando tienes datos en el puerto serie. _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
Esteban Cdt

Registrado: 26 May 2003Mensajes: 22
|
Publicado: Mie 13 Jul, 2005 8:55 am Asunto: |
|
|
Hasta ahora utilizaba el componente VaComm que encontré en Internet y que iba bien, pero en algunos ordenadores nuevos me da error algunas veces al cerrar el puerto, no sé si debido al Windows XP o algún tipo de configuración del ordenador.
Encontré una versión nueva de dicho componente, pero al iniciar cualquier aplicación en la que lo utilizaba, aparecía un mensaje de "Evaluation version" o algo así.
Entonces decidí intentar crear mi propio componente, puesto que ya habá hecho hace tiempo un módulo para manejar el puerto, y lo único que me faltaba era controlar el evento al recibir datos.
En un primer momento lo hize con hilos, siguiendo algún ejemplo de este foro, pero ya se sabe que los hilos son una fuente de problemas y cuando empecé a encontrarme con ellos pensé en hacerlo con mensajes, y aquí me encuentro en estos momentos.
Si alguien sabe de algun componente que valga la pena también se lo agradeceré, pero ya que he llegado hastá aquí me gustaría terminar el mío propio, así que cualquier ayuda me sería de gran utilidad.
Gracias y perdonad por todo el rollo que os he soltado (Crandel, eso pasa por haber preguntado )
Un saludo. |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Mie 13 Jul, 2005 6:11 pm Asunto: |
|
|
yo siempre utilice los componentes AsyncFree http://sourceforge.net/projects/asyncfree, funcionan muy bien pero estan en delphi, podrias probar compilarlos en CBuilder (nunca probe).
Vienen con el código fuente, asi que de última tambien podes mirar el código para dessarrollar los tuyos.
Con respecto a los hilos, realmente creo que debe estar dentro de un hilo, he progrado varias veces adquisición de datos desde puertos o placas adquisidoras y realmente es el mejor resultado que da.
Una ves que obtenes datos, generas un evento para que el usuario lo capture y listo.
Espero que te de una idea y suerte. _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
Esteban Cdt

Registrado: 26 May 2003Mensajes: 22
|
Publicado: Lun 18 Jul, 2005 2:13 pm Asunto: |
|
|
Bueno, pues al final conseguí que funcionara con hilos, aunque se me presentó el siguiente problema: si en el evento que se ejecuta cuando se reciben datos (es decir, el que ejecuta el hilo) mostraba un formulario, éste debía quedar de alguna manera vinculado al hilo, pues cuando destruía el formulario con delete se me paraba para siempre la ejecución en dicha instrucción. No entiendo muy bien por qué se producía esto, pero conseguí solucionarlo si en lugar de que el hilo llamara directamente a la función del evento, mandara un mensaje a un módulo auxiliar, que era el que llamaba entonces a la función. Al final la cosa quedó un poco complicada, pero bueno, el caso es que resultó.
Un saludo. |
|
| Volver arriba |
|
 |
Crandel Lt


Registrado: 31 May 2005Mensajes: 94Ubicación: Argentina
|
Publicado: Lun 18 Jul, 2005 10:52 pm Asunto: |
|
|
| Esteban escribió: | | si en el evento que se ejecuta cuando se reciben datos (es decir, el que ejecuta el hilo) mostraba un formulario, éste debía quedar de alguna manera vinculado al hilo, pues cuando destruía el formulario con delete se me paraba para siempre la ejecución en dicha instrucción. |
No creo que sea una práctica muy correcta mostrar un formulario durante la ejecución de un hilo, aunque se puede hacer, lo que te recomendaria es que tus componentes no muestren nada visual.
Simplemente se generen eventos cuando tengan datos disponibles o ante determinados sucesos. _________________ Crandel
"hay 10 tipos de personas, las que ven en binario y las que no"
Angel Zeitoune - Artículo: Generación de eventos en C++Builder |
|
| Volver arriba |
|
 |
Esteban Cdt

Registrado: 26 May 2003Mensajes: 22
|
Publicado: Mar 19 Jul, 2005 8:16 am Asunto: |
|
|
No, el formulario no se muestra. Es sólo un "soporte" para captar mensajes, pues según un ejemplo que encontré en un libro se necesita un formulario auxiliar para que un componente reciba mensajes.
Sin embargo, cuando se compila el componente y se usa en el entorno de desarrollo de C++Builder, el usuario no ve nada de eso. |
|
| Volver arriba |
|
 |
Esteban Cdt

Registrado: 26 May 2003Mensajes: 22
|
Publicado: Mar 19 Jul, 2005 8:26 am Asunto: |
|
|
| Ah! y el formulario que digo que se muestra -quizá no me expliqué bien- lo hago una vez que ya estoy usando el componente en una aplicación independiente, en el evento OnDataRec, que así es como llamo al evento que se produce cuando se recibe algún dato por el puerto. |
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Mar 19 Jul, 2005 4:30 pm Asunto: |
|
|
Realmente nonecesitas ningún formulario para captar un evento. Lo unico que es indispensable, es que se asigne a un método de una clase.
Es solo una opinión, abria que ver en realidad un poco mas tu diseño |
|
| Volver arriba |
|
 |
|