Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   terminal portable PT360 (https://www.clubdelphi.com/foros/showthread.php?t=60633)

robertosc 08-10-2008 16:02:49

terminal portable PT360
 
hola!

tengo una terminal portable donde recopilo los codigos de los productos y esta te genera un archivito de texto con los codigos recopilados como todos lo k han trabajadon con estos aparatos ya deben saber :p

el chiste es que yo uso el PTComm Manager para descargar el archivo de texto a la pc y despues este lo leo, pero lo k necesito es descargar el archivo de texto de la terminal desde delphi (que el usuario no tenga k tener instalado el PTComm en su maquina, que nomas le de clic a un boton y lea la terminal y descargue el archivo), ya estube investigando en el foro y no encontre nada parecido :(,no se si alguien ya haya hecho algo parecido...

gracias de antemano ;)

robertosc 08-10-2008 18:37:29

me instalado los componentes de ApdComPort para tratar de comunicarme con la terminal y parece que si responde xk cuando hago un

Código Delphi [-]
  ApdComPort1.OutPut := 'ATZ'^M;

se prende el recolector si esta apagado :p, pero de ahi ya no se como entrar a la memoria del recolector y como pasar el archivo a la PC :confused:

FGarcia 08-10-2008 19:00:51

Pues...igual, con un comando. Deberas de tener la lista de comandos que soporta tu terminal y desde tu aplicacion transmitirselas al terminal, ya el manejo de archivos es tema de otro hilo. En caso de que no tengas o encuentres los comandos del terminal usa un programa espia del puerto com. (Serial Spy de Innovative te puede servir, tiene un trial por tiempo, tal vez con eso te baste. De todos modos es economico ).

JoseFco 08-10-2008 19:16:57

Cita:

Empezado por robertosc (Mensaje 318919)
hola!

tengo una terminal portable donde recopilo los codigos de los productos y esta te genera un archivito de texto con los codigos recopilados como todos lo k han trabajadon con estos aparatos ya deben saber :p

el chiste es que yo uso el PTComm Manager para descargar el archivo de texto a la pc y despues este lo leo, pero lo k necesito es descargar el archivo de texto de la terminal desde delphi (que el usuario no tenga k tener instalado el PTComm en su maquina, que nomas le de clic a un boton y lea la terminal y descargue el archivo), ya estube investigando en el foro y no encontre nada parecido :(,no se si alguien ya haya hecho algo parecido...

gracias de antemano ;)


Como dice el amigo FGarcia, si no tienes la info de ese terminal. pero si tienes el PTComm y trabaja con el bien, entonces la cosa es emular ese protocolo.;)
Y ese serial Port Spy que te recomienda el amigo es muy bueno.Ya teniendo el protocolo entre el terminal PTComm y el PT360.Puedes crear tu propio terminal usando Delphi.

Un Saludo.

PD:Cuando no podemos copiar, solo nos queda emular.;)

robertosc 08-10-2008 19:44:35

hola [FGarcia] y [JoseFco], muchas gracias por su ayuda

ya baje el programa Innovative Serial Spy que me comentastes y abri el TComm y el PT360 para bajar el archivo .txt y el program me arrogo varios datos...



pero la vdd no tengo idea k hacer con esta informacion :confused:, espero no molestar tanto y que me orienten un poquito

egostar 08-10-2008 19:46:54

Hola

Porque no 'pegas' lo que recibiste para darnos una clara idea de lo que necesitas.

Salud OS

Edito: Me adelante :)

JoseFco 08-10-2008 19:53:32

Cita:

Empezado por egostar (Mensaje 318971)
Hola

Porque no 'pegas' lo que recibiste para darnos una clara idea de lo que necesitas.

Salud OS

Edito: Me adelante :)

Lo que esta en rojo es lo que salio del PC y lo que esta en azul es lo que mando el terminal al PC.

La cosa es que tienes que ver los eventos unos por uno y que teclas tu tocas en el PC y que haces en el terminal.Entonces emular eso hermano.

Si no tienes experiencia en pirateria..." Digo en ingenieria inversa" la cosa no te sera facil amigo.;)

Un Saludo.

PD:Trata de poner todo el protocolo a ver si te podemos ayudar un poco mas.

robertosc 08-10-2008 20:03:09

1 Archivos Adjunto(s)
Cita:

Empezado por JoseFco (Mensaje 318975)
Lo que esta en rojo es lo que salio del PC y lo que esta en azul es lo que mando el terminal al PC.

La cosa es que tienes que ver los eventos unos por uno y que teclas tu tocas en el PC y que haces en el terminal.Entonces emular eso hermano.

Si no tienes experiencia en pirateria..." Digo en ingenieria inversa" la cosa no te sera facil amigo.;)

Un Saludo.

PD:Trata de poner todo el protocolo a ver si te podemos ayudar un poco mas.

ah ok, si pues la vdd no tengo experiencia en ingenieria inversa :p, :(

pero bueno, aki esta el archivo log con todo :o

JoseFco 08-10-2008 20:15:16

Cita:

Empezado por robertosc (Mensaje 318980)
ah ok, si pues la vdd no tengo experiencia en ingenieria inversa :p, :(

pero bueno, aki esta el archivo log con todo :o

Cuando llegue a la casa te contestare con mas tetalles el asunto, pero ya con eso tienes para ir trabajando.

Ya sabemos que la comunicasion es a 19.200 que el protocolo es None- 8- 1

que el terminal comiensa mandando 12 bytes de data(un comando) FF FF FF E0 E0 E0 E0 E0 E0 F0 07 C1

entonces espera recibir del terminal 5 bytes ( 02 07 41 3F 03 )


Luego te termino de decir completo lo que esta en ese file. Recuerda lo rojo es lo que la PC le dice al terminal y lo azul lo que el terminal le contesta a la PC.

Un Saludo.

robertosc 08-10-2008 20:54:35

Cita:

Empezado por JoseFco (Mensaje 318984)
Cuando llegue a la casa te contestare con mas tetalles el asunto, pero ya con eso tienes para ir trabajando.

Ya sabemos que la comunicasion es a 19.200 que el protocolo es None- 8- 1

que el terminal comiensa mandando 12 bytes de data(un comando) FF FF FF E0 E0 E0 E0 E0 E0 F0 07 C1

entonces espera recibir del terminal 5 bytes ( 02 07 41 3F 03 )


Luego te termino de decir completo lo que esta en ese file. Recuerda lo rojo es lo que la PC le dice al terminal y lo azul lo que el terminal le contesta a la PC.

Un Saludo.

muchisimas gracias por tu ayuda:D, si ya voy entendiendo, pero entonces en delphi utilizariamos los compontesde tpapropara mandar esos comandos a la terminal? y se enviarian asi? en forma Hexadecimal.

egostar 08-10-2008 21:04:00

Cita:

Empezado por robertosc (Mensaje 318993)
muchisimas gracias por tu ayuda:D, si ya voy entendiendo, pero entonces en delphi utilizariamos los compontesde tpapropara mandar esos comandos a la terminal? y se enviarian asi? en forma Hexadecimal.

Hola

Podrías hacerlo de esta forma:

Código Delphi [-]
  ApdComport1.PutString(Char($FF)+Char($FF)+Char($FF)+Char($E0)+Char($E0)+
                        Char($E0)+Char($E0)+Char($E0)+Char($E0)+Char($F0)+
                        Char($07)+Char($C1));

Salud OS

JoseFco 08-10-2008 21:39:18

Cita:

Empezado por robertosc (Mensaje 318993)
muchisimas gracias por tu ayuda:D, si ya voy entendiendo, pero entonces en delphi utilizariamos los compontesde tpapropara mandar esos comandos a la terminal? y se enviarian asi? en forma Hexadecimal.

Bueno con ese componente no mandar ni medio bit al serial port.Pero el Maestro egostar esta muy bien documentado con el Apro y te podra dar una manito con eso.
De todas formas tu tienes el Serial Spy y cada vez que pruebes el codigo que estas generando pues estaras mirando lo que sale.;) La cosa es emular exactamente ese protocolo.Tu estas mirando lo que sale en el software del PC y a donde va la informacion.Entonces esa es la idea, ir haciendo lo mismo que hace el software ese, pero en uno creado por ti en Delphi.
Ya tienes que el PC le manda 12 bytes al portatil y espera 5 bytes de respuesta, compara y entonces envia (la PC) 6 bytes 02 1B 44 42 42 C1 y espera recivir 8 bytes que le envia el portatil 02 1B 44 31 2E 45 58 45 despues de esto existe una pequeña demora y es cuando el portatil manda una cadena de 32 bytes.
.....
y asi hasta el final.(fijate bien y emula exactamente lo que sucede entre la PC y el Portatil.)

Seria bueno poder ver una captura de la pantalla del PC.
¿Ademas que tipo de informacion es la que ese terminal estara enviando?


Un Saludo.

robertosc 09-10-2008 15:38:01

Cita:

Empezado por JoseFco (Mensaje 319012)
¿Ademas que tipo de informacion es la que ese terminal estara enviando?

hola, pues ahora si ya entendi a lo que te referias con emular :p, le mande los parametros a la terminal asi como me comento [egostar] y por medio del evento OnTriggerAvail si me respondio la terminal exactamente igual :D

la terminal lo que envia es un un archivo te texto y ya logre que me lo enviará, aunque esta mesclado con otros caracteres que tengo que ver la forma de limpiarla, lo que me envia es esto:

Cita:

Y1,1.00,1.00\?\Š2,2.00,2.00\?\Š3,3.00,3.00\?\Š4,4.00,4.00\?\Š5,5.00,5.00\?\Š6,6.00,6.00\?\Š7,7.00,7. 00\?\Š8,8.00,8.00\?\Š9,9.00,9.00\?\Š10,GOY1.00,1.00\?\Š11,1.00,1.00\?\Š12,1.00,1.00\?\Š13,1.00,1.00\ ?\ŠDDZGG
que tengo que convertir a esto:
Cita:

1,1.00,1.00
2,2.00,2.00
3,3.00,3.00
4,4.00,4.00
5,5.00,5.00
6,6.00,6.00
7,7.00,7.00
8,8.00,8.00
9,9.00,9.00
10,1.00,1.00
11,1.00,1.00
12,1.00,1.00
13,1.00,1.00
a lo que veo, esta cadena
Cita:

\?\Š
si es regular entre cada registro, asi que no habria problema para cambiar de registro, lo que no es regular con dos caracteres que pone 10,GOY1.00,1.00 en determinadas posiciones de la cadena y entre mas grande esta la cadena, las va poniendo mas seguido :(

pero pues ya estoy mejor que como empece :D, gracias por su ayuda!

egostar 09-10-2008 16:07:11

Hola

Los caracteres "raros" que ves son caracteres de control,

Cita:

02 Start of Text
1B Escape
03 End Of Text
Tus cadenas recibidas tienen este formato

Cita:

02 IB [Cadena de Datos] 03
Y lo que tú deseas es solo la [Cadena de Datos]

Hay varias formas de lograr lo que quieres.

1. Usar un ApdDataPacket configurando las propiedades
  • EndCond = [ecString]
  • EndString = #3
  • StartString = #2#27
  • IncludeStrings = False
  • StartCond = scString

En el evento OnStringPacket solo debes de mostrar el dato recibido, por ejemplo en un TMemo

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

2. Con la forma como estas recibiendo los datos eliminas el inicio de la cadena (02 y 1B) y reemplazando el (03) por #13

Código Delphi [-]
   Cadena := StringReplace(Cadena, #02#27,'',[rfReplaceAll]);
   Cadena := StringReplace(Cadena, #03,#13,[rfReplaceAll]);
   Memo1.Lines.Add(Cadena);

Trata con cualquiera de las dos opciones y nos comentas.

Salud OS

robertosc 09-10-2008 17:16:06

ya lo resolvi de la segunda forma que mensionastes :D, utilizando la funcion StringReplace

Código Delphi [-]
cadena := StringReplace(cadena,'\?\Š',#13#10,[rfReplaceAll]);


gracias nuevamente ;)


La franja horaria es GMT +2. Ahora son las 21:04:33.

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