Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Capturar datos por el puerto serie

Hola, tengo un captador unitech ht 630, me han pedido que realice una aplicacion que capture los datos que hay dentro de el.

Yo desde el captador le obligo a mandar los datos, y desde delphi los tengo que capturar.

Me baje un componente gratis que se llama "TQCCom32" y con este lo consigo capturar.

Como no me aclaro mucho tengo un timer que va llamando al metodo read, y aqui cojo los datos.

Lo que pasa es que no se como decirle que ya ha terminado de capturar los datos. Si alguien sabe como utilizar este componente , o sabe de otro que capture los datos por el puerto serie, se lo agradeceria enormemente.

Gracias, un saludo.
Responder Con Cita
  #2  
Antiguo 04-12-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Hola!

Creo que independientemente del componente que uses los lectores opticos tienen una trama definida inclusive algunos colocan un * al iniciar y al terminar la cadena leida. Aqui seria necesario darle una leida la manual del lector. Por otro lado algunos componentes para lectura por el puerto serie ya traen un metodo para leer codigos de barra. No conosco el componente que mencionas, yo uso CPortLib de Djan Cernilla en sourceforge lo encuentras.

No dejes de informar como resolviste o las dudas que sigan existiendo.
Responder Con Cita
  #3  
Antiguo 04-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por mierda Ver Mensaje
Hola, tengo un captador unitech ht 630, me han pedido que realice una aplicacion que capture los datos que hay dentro de el.

Yo desde el captador le obligo a mandar los datos, y desde delphi los tengo que capturar.

Me baje un componente gratis que se llama "TQCCom32" y con este lo consigo capturar.

Como no me aclaro mucho tengo un timer que va llamando al metodo read, y aqui cojo los datos.

Lo que pasa es que no se como decirle que ya ha terminado de capturar los datos. Si alguien sabe como utilizar este componente , o sabe de otro que capture los datos por el puerto serie, se lo agradeceria enormemente.

Gracias, un saludo.
Yo uso el APro y me resulta muy facil y muy bueno para las comunicaciones seriales.

Para saber que ya se terminó de recibir los datos normalmente se usan caracteres de control, depende del protocolo que tenga ese equipo que tienes.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 04-12-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Me puedes decir que ejemplo ....

Me puedes decir que ejmeplo de los que trae deberia mirar para capturar los datos y ponerlos en un memo??

Un saludo. Gracias.
Responder Con Cita
  #5  
Antiguo 04-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por mierda Ver Mensaje
Me puedes decir que ejmeplo de los que trae deberia mirar para capturar los datos y ponerlos en un memo??

Un saludo. Gracias.
Bueno, ejemplo como tal no creo que haya, pero has esto,

Necesitamos saber que caracter hay al final de la cadena que vas a recibir, yo imagino que debe ser un #13 o un #10 (ENTER) puede que sean los dos. Esto yo lo obtengo creando un archivo desde hiperterminal y después "mirando" los caracteres desde delphi con un "barrido" de los caracteres del archivo.

Código Delphi [-]
while not eof(Archivo) do begin
   Read(Archivo,Caracter);
   Memo1.Lines.Add(IntoStr(Ord(Caracter))+' '+Caracter); //Por ejemplo para el ASCII del caracter recibido
end;

Cuando determines que caracter es el fin de la cadena puedes hacer esto.

Pega en tu forma

1 ApdComPort
1 ApdDataPacket
1 Memo

Configuras los parametros de comunicacion del ApdComPort para que coincidan con tu equipo

Configuras las propiedades del ApdDataPacket

EndCond = [ecString]
EndString = Caracter que tienes, por ejemplo si es un 13, pon #13
StartCond = scAnyData

Luego en el evento OnStringPacket colocas esto

Código Delphi [-]
procedure TForm1.ApdDataPacket1StringPacket(Sender: TObject; Data: String);
begin
  Memo1.Lines.Add(Data);
end;

Intentalo y nos comentas.

Salud OS

PD. Puede ser que tambien tenga un Inicio de paquete o que tenga una longitud definida, vamos por partes, incluso si puedes pegar aqui el archivo que obtengas con hiperterminal podremos avanzar mas rapido.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 05-12-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Probando

Hola, ya estoy probando como me has dicho ... pero aun no he obtenido ningun resultado, con el hyperterminal me sale esto


Inicio,9.00
3063194183062,1,21/01/2006 01:49:32
3063194183062,1,21/01/2006 01:49:33
3063194183062,1,21/01/2006 01:49:33
3063194183062,1,21/01/2006 01:49:34
Inicio,10.00
Inicio,11.00
Inicio,12.00
nicio,12.00


Sigo probando, gracias.
Responder Con Cita
  #7  
Antiguo 05-12-2007
mierda mierda is offline
Miembro
 
Registrado: may 2006
Posts: 129
Poder: 18
mierda Va por buen camino
Ya lo he conseguido ... pero no me sale bien

Hola, ya he conseguido captar los datos y volcarlos en un memo, pero me sale un caracter como un palo | pero en negrita al principio de cada linea:


Inicio,20.00
2572181205010,1,21/01/2006 04:43:28
3501167465024,1,21/01/2006 04:43:33
2002991133017,1,21/01/2006 04:43:35
002991133017,1,21/01/2006 04:43:35

Aunq si lo copio me sale bien ...

y si lo capto en un terminal de los atpro me sale asi:

0.00io,2Inicio,20.00
2572181205010,1,21/01/2006 04:43
:28 2572181205010,1,21/01/2006 04:43:28
3501167465024,1,21/01/2006 04:43
:33 3501167465024,1,21/01/2006 04:43:33
2002991133017,1,21/01/2006 04:43
:35 2002991133017,1,21/01/2006 04:43:35
Inicio,2
1.00 Inicio,21.00
nicio,21.
00 nicio,21.00

Última edición por mierda fecha: 05-12-2007 a las 11:32:54. Razón: Pongo los datos que me sale en el terminal
Responder Con Cita
  #8  
Antiguo 05-12-2007
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Nunca he usado lo Apro por holgazan, me la llevo bien con ComPort, pero es posible que ese "palo" (|) sea un codigo de control (ascii 0..31) para indicar el inico de transmision. El Hyperterminal te los muestra pero si quieres verlos por ejemplo en un edit de delphi no se ven. Si quieres saber que codigo es necesitarias hacer una conversion a hexadecimal. Otra cosa que puedes hacer es capturar los datos con el programa de terminal que anexo que ya te hace la conversion a hexadecimal y a Ascii (los caracteres de control en ascii los muestra como un .)

Última edición por FGarcia fecha: 23-05-2008 a las 22:17:22.
Responder Con Cita
  #9  
Antiguo 05-12-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por mierda Ver Mensaje
Hola, ya estoy probando como me has dicho ... pero aun no he obtenido ningun resultado, con el hyperterminal me sale esto


Inicio,9.00
3063194183062,1,21/01/2006 01:49:32
3063194183062,1,21/01/2006 01:49:33
3063194183062,1,21/01/2006 01:49:33
3063194183062,1,21/01/2006 01:49:34
Inicio,10.00
Inicio,11.00
Inicio,12.00
nicio,12.00


Sigo probando, gracias.
Bueno, asi es difícil encontrar el problema, porque no adjuntas el archivo de texto que te deja hiperterminal (o el programa que amablemente FGarcia adjuntó) y yo te ayudo a conocer los caracteres de control que tienen los paquetes de datos.

Nota: Lo mas seguro es que sean los caracteres correspondientes al ENTER. #13#10 ó #10#13

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar/Enviar datos al puerto usb pborges36 Varios 0 19-02-2007 21:34:13
Usb en puerto serie :p D-MO Humor 10 30-06-2006 06:16:45
¿Se puede capturar los datos de un puerto serie de otra aplicación? NPIdea Varios 2 06-06-2006 13:45:19
Envio de datos al puerto serie COM1 Niko Varios 5 15-03-2005 18:38:21
Puerto serie y tcp mercurio Varios 3 28-10-2003 01:21:59


La franja horaria es GMT +2. Ahora son las 10:20:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi