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. |
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. |
Cita:
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 |
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. |
Cita:
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.
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
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. |
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. |
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 |
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 .)
|
Cita:
Nota: Lo mas seguro es que sean los caracteres correspondientes al ENTER. #13#10 ó #10#13 Salud OS |
La franja horaria es GMT +2. Ahora son las 01:03:18. |
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