Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como leer datos enviados por COM3 ( TurboPower Async Professional.) (https://www.clubdelphi.com/foros/showthread.php?t=93534)

Racso2006 31-10-2018 19:36:33

como leer datos enviados por COM3 ( TurboPower Async Professional.)
 
Buenas tardes.

llevo ya un tiempo investigando pero se me esta complicando mas de lo que pensaba.

simplemente tengo un scaner de DNI que envia los datos leidos por el COM3 y simplemente los tendria que poder leer y hacer lo que quisiera con ellos.

he estado utilizando el TurboPower Async Professional pero no soy capaz de hacerlo funcionar, teoricamente en el ApdComPort1TriggerAvail poniendo el ApdComPort1.GetChar tendria que tener dichos datos pero se que me faltan muchas cosas antes, porque en ningun momento le estoy diciendo en que puerto tiene que buscar y cuando tiene que buscar si se mandan datos.

es la primera vez que hago algo asi y estoy un poco perdido.

muchas gracias de antemano.

Casimiro Notevi 31-10-2018 21:13:20

Ve mirando los enlaces de final de página, abajo del todo, a ver si te sirve alguno.

Racso2006 01-11-2018 15:03:48

antes de postear esto, busque por todo sin exito (incluido esos posts que me indicas)

egostar 01-11-2018 17:45:35

Cita:

Empezado por Racso2006 (Mensaje 529364)
antes de postear esto, busque por todo sin exito (incluido esos posts que me indicas)

Yo he utilizado por muchos años estos componentes sin problema, si no te urge para ahora mismo, llegando a casa por la noche (GMT-6) veo el código y subo un ejemplo de uso.

Saludos

Racso2006 01-11-2018 19:51:46

no me urge mucho.

muchas gracias

egostar 02-11-2018 05:48:19

Lo prometido.

Código Delphi [-]

var
  CRTrig: Word;
  Linea: String;

//Parametros de Comunición [COM1,1200,None,8,1]
procedure TLector.InicializaCOM;
begin
  ApdComPort1.ComNumber := 1;
  ApdComPort1.Baud      := 1200;
  ApdComPort1.DataBits  := 8;
  Case Parity of
     1 : ApdComPort1.Parity := pNone;
     2 : ApdComPort1.Parity := pOdd;
     3 : ApdComPort1.Parity := pEven;
     4 : ApdComPort1.Parity := pMark;
     5 : ApdComPort1.Parity := pSpace;
  end;
  ApdComPort1.StopBits := 1;
  ApdComPort1.Open := True;
  CRTrig := ApdComPort1.AddDataTrigger(#13, False);
end;

procedure TLector.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  I : Word;
begin
  for I := 1 to Count do
    Linea := Linea + ApdComPort1.GetChar;
end;

procedure TLector.ApdComPort1TriggerData(CP: TObject; TriggerHandle: Word);
begin
  if TriggerHandle = CRTrig then 
  begin
    Linea := StringReplace(Linea,#13,'',[rfReplaceAll]);
    Linea := StringReplace(Linea,#10,'',[rfReplaceAll]);
  try
      Memo1.Lines.Add(Linea);
  except
      Memo1.Clear;  
      Memo1.Lines.Add(Linea);
  end;
    Linea := '';
  end;
end;

Espero te ayude.

Saludos

Racso2006 02-11-2018 09:01:58

muchas gracias, mas tarde lo probare y informo del resultado, muchisimas gracias por su ayuda

Racso2006 02-11-2018 09:54:03

buenas, demomento me surge una duda y es sobre el procedure TLector.InicializaCOM
que es el InicializaCOM? un componente del turbo power astyc? seguramente es lo que me faltaba cuando lo intentaba hacer, pero no encuentro nada sobre el InicializaCOMm de donde lo saco?

muchas gracias de nuevo

Bolox 02-11-2018 14:35:27

No tengo ni idea de como va ese componente, pero TLector.InicializaCOM es el procedimiento que crea egostar. No creo que te lo de el componente sino que lo inicia él.

Racso2006 02-11-2018 15:37:19

eso lo he pensado tambien, que sea un procedure que crea el aposta, pero no veo donde llama ese mismo procedure para que se active, por lo que no me cuadra

egostar 02-11-2018 16:12:16

Cita:

Empezado por Racso2006 (Mensaje 529376)
buenas, demomento me surge una duda y es sobre el procedure TLector.InicializaCOM
que es el InicializaCOM? un componente del turbo power astyc? seguramente es lo que me faltaba cuando lo intentaba hacer, pero no encuentro nada sobre el InicializaCOMm de donde lo saco?

muchas gracias de nuevo

Cita:

Empezado por Bolox (Mensaje 529383)
No tengo ni idea de como va ese componente, pero TLector.InicializaCOM es el procedimiento que crea egostar. No creo que te lo de el componente sino que lo inicia él.

Hola

Bueno, no pensé que provocaría confusión el procedimiento InicializaCOM, es un procedimiento que mando llamar (entre otras cosas más) cuando la forma es creada.



Código Delphi [-]
  TLector = class(TForm) 
  //...
  private
    { Private declarations }
    procedure InicializaCOM;
  public
    { Public declarations }
  end;

implementation

procedure TLector.FormCreate(Sender: TObject);
begin
  //..
  Parity := 1;
  InicializaCOM;
  //..
end;

Saludos

Racso2006 02-11-2018 17:00:08

perfecto, muchisimas gracias por su ayuda, hasta el lunes no lo podnre en practica debido a que me he ido de viaje y hoy no tenia dicho scaner de DNIs, pero el lunes lo comprobare sin falta

Racso2006 05-11-2018 17:01:04

buenas tardes egostar, vuelvo a agradecer su ayuda, no obstante ahora que lo he probado me surje un problemilla, y es que con mi programa de lectura abierto ocupo el com3 por lo que el programa del scaner no se puede comunicar con el para mandarle escanear, ya que cuando lo tengo abierta el programa del scaner no me deja conectar al com3.

por lo que necesitaria saber como mandar ordenes a traves del COM3, he buscado mucha info pero hay algo que me lia mucho y es que casi todo lo que encuentro utilizan el comport y no el apdcomport, yo no tengo ningun componente comport por lo que creo que no interpreto bien toda la infomacion que encuentro.

no obstante me podria indicar como poder mandar una orden a traves del com3 y asi despues de dicha orden (que buscare en el manual del scaner) el mismo scaner me enviara los datos y el codigo anterior lo podra recibir (espero :P)

muchas gracias por su ayuda

egostar 05-11-2018 23:34:56

Cita:

Empezado por Racso2006 (Mensaje 529399)
buenas tardes egostar, vuelvo a agradecer su ayuda, no obstante ahora que lo he probado me surje un problemilla, y es que con mi programa de lectura abierto ocupo el com3 por lo que el programa del scaner no se puede comunicar con el para mandarle escanear, ya que cuando lo tengo abierta el programa del scaner no me deja conectar al com3.

por lo que necesitaria saber como mandar ordenes a traves del COM3, he buscado mucha info pero hay algo que me lia mucho y es que casi todo lo que encuentro utilizan el comport y no el apdcomport, yo no tengo ningun componente comport por lo que creo que no interpreto bien toda la infomacion que encuentro.

no obstante me podria indicar como poder mandar una orden a traves del com3 y asi despues de dicha orden (que buscare en el manual del scaner) el mismo scaner me enviara los datos y el codigo anterior lo podra recibir (espero :P)

muchas gracias por su ayuda

Hola

No puedes ejecutar dos aplicaciones leyendo el mismo puerto COM, no se que es lo que intentas hacer, pero si quieres leer con dos aplicaciones un puerto serial lo único que se puede hacer es que una interactua con el dispositivo y la otra esté monitoreando la comunicación entre ambos dispositivos conectados.

Si puedes decirnos que pretendes hacer buscaríamos alguna alternativa.

Saludos

Racso2006 06-11-2018 09:15:11

nono, no pretendo leer con dos aplicaciones el mismo pueto com, era solo un dato, lo unico que neceshito saber es como enviar datos a traves del puerto com, anteriormente de dijiste como recibirlos, y no puedo comprobar si los recibo sin antes enviar la orden de que dicho scaner lea el DNI. por lo que necesito es muy simple yo lo se, pero no tengo narices de encontrar informacion correcta sobre este componente , perdon por molestar tanto.

egostar 06-11-2018 16:49:28

Cita:

Empezado por Racso2006 (Mensaje 529409)
nono, no pretendo leer con dos aplicaciones el mismo pueto com, era solo un dato, lo unico que neceshito saber es como enviar datos a traves del puerto com, anteriormente de dijiste como recibirlos, y no puedo comprobar si los recibo sin antes enviar la orden de que dicho scaner lea el DNI. por lo que necesito es muy simple yo lo se, pero no tengo narices de encontrar informacion correcta sobre este componente , perdon por molestar tanto.

Hola

No tengo a la mano mi maquina para ver el proceso de escritura, pero si no me equivoco puedes utilizar las funciones writeString(), writeChar() e incluso hay otra llamada Output().

Si no logras encontrar la forma de escribir al puerto mas tarde subo un ejemplo que he utilizado para esos menesteres.

Ya sabes (GMT-6) :)

Saludos

Racso2006 06-11-2018 20:50:51

ok, muchas gracias por tu ayuda de nuevo, dentro de 14 horas volvere a probar, que aqui ya es muy tarde y despues de cenar no me pongo a programar, sino no duermo bien xDDD

egostar 07-11-2018 09:17:34

Hola

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ApdComPort1.PutString('Se puede enviar una cadena.'#13);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //SE puede enviar un caracter
  ApdComPort1.PutChar('X');
  ApdComPort1.PutChar(#13);
end;

Saludos

Racso2006 07-11-2018 13:06:58

muchisimas gracias, todo perfecto


La franja horaria es GMT +2. Ahora son las 14:06: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