 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Mie 19 May, 2004 9:18 am Asunto: capturar datos puerto serie (Com1) y enviar a otra aplicacio |
|
|
wenas, bueno haber como me explico, necesito alguna sugerencia de como empezar con esto.
lo que tengo que hacer es capturar la informacion que se recibe por el puerto com, en el cual esta conectado un lector de tarjetas y la informacion recibida tras hacer unas modificaciones con ella, tengo que enviarla a otra aplicación, creo que esto ultimo se hacia con SendMessage o algo parecido.
La verdad es que toy muy perdido en esto.
Gracias de antemano, y saludos. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
|
| Volver arriba |
|
 |
Invitado
|
Publicado: Jue 20 May, 2004 7:33 am Asunto: |
|
|
Gracias por la respuesta, lo de leer el puerto serie ya esta y funciona correctamente, ya tengo exas las modificaciones que tenia que hacer y ahora lo que necesito es mandar esta informacion a otra aplicación. como si se estubiera escribiendo con el teclado, es decir solo tengo que mandarle una cadena de caracteres, pero el problema es que no se como mandarlo, estoy probando con la funcion SendMessage, pero no consigo que haga nada.
Como puedo simular la introducion de esta cadena como si fuera tecleado directamente en esta otra aplicacion?.
Gracias de nuevo.
Salu2. |
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Jue 20 May, 2004 7:56 am Asunto: |
|
|
Bueno, encontre en el foro el siguiente codigo, escrito por _viktor :
| Cita: | Hola.. con esta linea envio la teclar Enter, indicandolo con WM_KEYDOWN, a la ventana anclada al handle hw...
Código:
HANDLE hw=FindWindow(NULL,"Titulo de la ventana");
if(hw)
PostMessage(hw,WM_KEYDOWN,VK_RETURN,NULL);
Espero te sirva..
Saludos!
_________________ |
Se supone que esto me tiene que mandar la tecla ENTER a la aplicación, pero el problema es que no me manda nada.
Encuentra bien la ventana peor no coge la pulsación.
Salu2. |
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Jue 20 May, 2004 8:03 am Asunto: |
|
|
Mas datos ...
Si utilizo el codigo :
| Cita: | HANDLE hw=FindWindow(NULL,"<< PROGRAMA >>");
if(hw)
if (SendMessage(hw,WM_KEYDOWN,VK_RETURN,NULL))
ShowMessage("ENVIADO");
else
ShowMessage("NO ENVIADO");
else
ShowMessage("Error"); |
Esto me devuelve "NO ENVIADO".
sin embargo :
| Cita: | HANDLE hw=FindWindow(NULL,"<< PROGRAMA >>");
if(hw)
if (PostMessage(hw,WM_KEYDOWN,VK_RETURN,NULL))
ShowMessage("ENVIADO");
else
ShowMessage("NO ENVIADO");
else
ShowMessage("Error"); |
Esto me devuelve enviado, pero no hace nada la aplicación.
Alguien sabe a que puede ser debido esto.
Ultima edición por Manolo(er_lolo) el Jue 20 May, 2004 9:02 am, editado 1 vez |
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Jue 20 May, 2004 8:05 am Asunto: |
|
|
Bueno, la anterior no es VM_CLOSE, sino VM_KEYDOWN, ha sido por estar intentando hacer pruebas sin exito.
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 20 May, 2004 8:30 am Asunto: |
|
|
Utiliza el parametro HWND_BROADCAST en la llamada a PostMessage, te permite crear una conexion con la ventana a la cual le envias el Mensaje.., pero si lo que realmente quieres, es que lo que se escriba en una apliacion, se muestre en la otra
ejemplo
tu aplicacion la otra aplicacion
h o l a -> h o l a
puede que necesites activar en la otra aplicacion, la propiedad KeyPress=true , deja verifico que te mando un ejemplo... _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 20 May, 2004 8:46 am Asunto: |
|
|
Mira acabo de probar este codigo, con la calculadora de windows
| Código: |
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
// HANDLE hw=FindWindow(NULL,programa);
HANDLE hw=FindWindow(NULL,"calculadora");
if(hw)
PostMessage(hw, WM_CHAR, Key, 0);
// PostMessage(hw,WM_KEYDOWN,Key,NULL);
} |
si te das cuenta, en la parte donde dice programa, es el nombre que aparece en la barra de Titulo... espero que sea eso. lo que necesites _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Jue 20 May, 2004 8:56 am Asunto: |
|
|
En primer lugar gracias por tu respuesta.
Es casi lo que necesito hacer, pero con el programa que lo estoy intentando no funciona, con la calculadora de windows si.
No se si el problema puede estar en que la aplicación a la cual se lo estoy mandando no aparece en la barra de tareas, pero en el administrador de tareas si, y la ventana si la encuentra, pero a la hora de pasarle cualquier cosa no lo hace.
No se si tendra algo que ver, pero esta aplicacion creo que esta echa con visual.
Salu2. |
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Jue 20 May, 2004 9:01 am Asunto: |
|
|
Nada, en una aplicacion echa por mi, esto tampoco funciona, en la aplicacion, llamada claves tengo el siguiente codigo en KeyPress :
| Cita: | if (Key >='0' && Key <= '9')
{
Clave+=Key;
}
MuestraClave(this); |
y al poner el codigo :
| Cita: | // HANDLE hw=FindWindow(NULL,programa);
HANDLE hw=FindWindow(NULL,"claves");
if(hw)
PostMessage(hw, WM_CHAR, Key, 0);
// PostMessage(hw,WM_KEYDOWN,Key,NULL); |
en otra aplicación esta tampoco hace nada. |
|
| Volver arriba |
|
 |
dcelso_ Invitado
|
Publicado: Jue 20 May, 2004 6:41 pm Asunto: puedes probar otra cosa |
|
|
kizás si haces un hook para capturar los datos del com, ahí los modificas y los vuelves a soltar a windows como si nunca los hubieras tocado, la otra aplicación crea que vienen del com.
Es solo una idea, yo se poco de hooks.
A ver si con esto alguien te postea una posible solucion que funcione. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 20 May, 2004 8:17 pm Asunto: |
|
|
Prueba con hacer alguna aplicacion tu, he intenta, mandarle los teclado...
saludos, si encuentro algo mas te lo paso... _________________
 |
|
| Volver arriba |
|
 |
Manolo(er_lolo) Capt


Registrado: 28 Jul 2003Mensajes: 172Ubicación: Salamanca
|
Publicado: Vie 21 May, 2004 7:21 am Asunto: |
|
|
Lo unico que se me ocurre es intentar cambiar el foco a la otra aplicacion e ir mandandole la informacion con el hook del teclado.
No se si se podra hacer esto, y de poderse alguien sabe como puede hacerse?, no he trabajado nunca con hook.
De todas formas gracias por vuestras respuestas. |
|
| Volver arriba |
|
 |
ikis Master


Registrado: 28 Dic 2002Mensajes: 703Ubicación: Madrid, España
|
Publicado: Dom 23 May, 2004 2:33 am Asunto: |
|
|
Otra opción , en www.sysinternals.com tienes un monitor del puerto serie, con sus fuentes en VC++
¿nada mal no?
atte _________________ Adrián
http://adrian.org.ar |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|