Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

capturar datos puerto serie (Com1) y enviar a otra aplicacio

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: capturar datos puerto serie (Com1) y enviar a otra aplicacio Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Checa dentro del foro, existe una funcion, para enviar y recibir puertos, echa en asm, y funciona bien...

saludos
asi mismo prueba leyendo esta pagina
http://www.traverse.com/people/poinsett/bcbcomm.html#INTRO
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Bueno, la anterior no es VM_CLOSE, sino VM_KEYDOWN, ha sido por estar intentando hacer pruebas sin exito.

Sad
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

de paso te mando la pagina de donde lo saque
http://www.pconline.com.cn/pcedu/empolder/gj/cb/0206/65594.html
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: puedes probar otra cosa Responder citando

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
Mensaje    Asunto: Responder citando

Prueba con hacer alguna aplicacion tu, he intenta, mandarle los teclado...

saludos, si encuentro algo mas te lo paso...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.