Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 24
AGAG4 Va por buen camino
Te soy sincero no se que sea el PBX, pero te paso los 2 archivos que recibí del conmutador....
Estos los recibí del componente ApdComPort en el evento OnTriggerAvail.

Dentro de dicho evento tengo el siguiente código:
Cita:
//Con Sleep
....
var
i : integer;
c : Char ;
Lista : TStringList;
begin

for i := 1 to Count do
begin
c:= ApdComPort1.GetChar;
cadena := cadena + c;
end;

Sleep(2000);
try
Lista := TStringList.Create;
if FileExists('C:\TELConSleep.TXT') then
Lista.LoadFromFile('C:\TELConSleep.TXT');

//Agregamos Línea
Lista.Add(Cadena);

Lista.SaveToFile('C:\TELConSleep.TXT');
finally
Cadena:='';
Lista.Free;
end;
end;
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King

Última edición por AGAG4 fecha: 27-11-2008 a las 01:26:16.
Responder Con Cita
  #2  
Antiguo 07-06-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por AGAG4
Te soy sincero no se que sea el PBX, pero te paso los 2 archivos que recibí del conmutador....
Estos los recibí del componente ApdComPort en el evento OnTriggerAvail.
Haber amigo Alfredo, trata con esto.

EndCondition = [ecString]
EndString = #13#10 que se verá así: ^M^J
StartCond = scString
StartString = C

En el evento OnStringPacket pon esto:

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

Con eso creo que debe funcionar correctamente.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 07-06-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 24
AGAG4 Va por buen camino
Gracias EgoStar, voy hacer pruebas, que tengas buen día.!!!!
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #4  
Antiguo 08-06-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile Viendo el código...

¡Hola a todos!

Alfredo:

Le eché un vistazo al código fuente del componente. Veo que es en el método mensaje TAdCustomTerminal.ApwTermStuff donde se hace el guardado al archivo:
Código Delphi [-]
procedure TAdCustomTerminal.ApwTermStuff(var Msg : TMessage);
var
  DataLen  : integer;
  DataPtr  : pointer;
  PaintRgn : HRGN;
begin
  {this message is sent by the tmTriggerAvail, and the WriteChar/
   WriteString methods; note that if there are two or more
   APW_TERMSTUFF messages in the message queue, the first one to be
   accepted will clear the byte queue, so the others need to take
   account of the fact that there may be no data}

  DataLen := TaaByteQueue(FByteQueue).Count;
  if (DataLen > 0) then begin
    DataPtr := TaaByteQueue(FByteQueue).Peek(DataLen);

    {if we are capturing, save the data to file}
    if (Capture = cmOn) then begin
      if (FCaptureStream <> nil) then
        FCaptureStream.Write(DataPtr^, DataLen);
    end;
...
FCaptureStream.Write(DataPtr^, DataLen);


Al observar este código, lo primero que se me ocurrió fue que podría crearse un componente derivado TAGAGAdTerminal, agregando un evento OnCapture (que sinceramente extraño que no venga ya incluido). Esto con el objetivo de acceder al campo FByteQueue o al campo FCaptureStream, pero desgraciadamente tanto uno como el otro están declarados en la sección privada de la clase TAdCustomTerminal (hace tiempo que evito usar secciones Private; suele resultar algo desalentador a otros programadores bibliotecarios cuando desean crear clases derivadas).

Aún así, la solución es viable. Podrías derivar una nueva clase de componente, redefiniendo el método mensaje ApwTermStuff, pero tendrías que agregarla en la misma unidad (ADTrmEmu.pas) para acceder "decentemente" al campo privado FByteQueue.

Una solución más fácil es modificar directamente el código de ese método y leer la variable DataPtr para el propósito buscado.

TAdCustomTerminal.ApwTermStuff ofrece una ventana a la solución, pero es muy probable que, examinando el código con mayor detalle, encontremos alternativas. ¿Cómo ven la situación? ¿Por dónde nos vamos?

Un abrazo terminal.

Al González.
Responder Con Cita
  #5  
Antiguo 08-06-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por Al González
Al observar este código, lo primero que se me ocurrió fue que podría crearse un componente derivado TAGAGAdTerminal, agregando un evento OnCapture (que sinceramente extraño que no venga ya incluido). Esto con el objetivo de acceder al campo FByteQueue o al campo FCaptureStream, pero desgraciadamente tanto uno como el otro están declarados en la sección privada de la clase TAdCustomTerminal (hace tiempo que evito usar secciones Private; suele resultar algo desalentador a otros programadores bibliotecarios cuando desean crear clases derivadas).

Aún así, la solución es viable. Podrías derivar una nueva clase de componente, redefiniendo el método mensaje ApwTermStuff, pero tendrías que agregarla en la misma unidad (ADTrmEmu.pas) para acceder "decentemente" al campo privado FByteQueue.

Una solución más fácil es modificar directamente el código de ese método y leer la variable DataPtr para el propósito buscado.

TAdCustomTerminal.ApwTermStuff ofrece una ventana a la solución, pero es muy probable que, examinando el código con mayor detalle, encontremos alternativas. ¿Cómo ven la situación? ¿Por dónde nos vamos?

Un abrazo terminal.

Al González.
Bueno, bueno, como que eso escapa a mi conocimiento, pero se me ha ocurrido que eso me resolvería un problema que traigo rezagado y que no le he metido mano por falta de elementos.

Gracias por el dato Alberto.

Salud OS recordatorios....
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 08-06-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 24
AGAG4 Va por buen camino
Gracias EgoStar eso era lo que me faltaba en el apdDataPacket, configurar el caracter de inicio, ya puedo cachar la llamada, el unico y pequeño inconveniente que no veo problema es que me pone 1 renglon en blanco después de la llamada, pero eso se puede arreglar.

Gracias Al por el Tip, es muy bueno ....

Que tengan buen día....
__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King
Responder Con Cita
  #7  
Antiguo 08-06-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

Que bueno que lograste solucionarlo.

Cita:
Empezado por AGAG4
...Gracias Al por el Tip, es muy bueno...
De nada, pero para la otra contesta el teléfono y cacha mi llamada. No te olvides de los cuates.

Un abrazo con salto
de línea.

Al González.

Última edición por Al González fecha: 14-09-2007 a las 07:40:04.
Responder Con Cita
  #8  
Antiguo 08-06-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Me da mucho gusto que te haya servido, ahora viene lo bueno, tienes que tomar en cuenta muchas cosas, por ejemplo:

Listado de claves lada para identificar el destino de la llamada
Horarios de la llamada para saber si es con tarifa plena o reducida,
Si vas a considerar multi carriers (proveedores de LD o Local),
Tarifas de LD, celular 044, local, celular nacional 045,
Como vas a reportar la información, por extension, departamento, troncal,

en fin, no es poca cosa hacer un tarificador.

Te deseo suerte.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 14-06-2007
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 24
AGAG4 Va por buen camino
Ahora el problema que tengo es que me encontre con otro Conmutador, este no me arroja ningun caracter de inicio , al principio me arroja la fecha (06/14/07) de la llamada, ahora en la propiedad StartString del apdDataPacked se lo quito pero ya no entra al evento OnStringPacket.

Sinceramente que raro que me pida caracteres este componente, porque ya habia visto un programa ( Hecho en Delphi ) usandose, similar al que estoy desarrollando, pero este programa en cualquier lugar donde lo instalas te funcionaba, lo unico que le configurabas era la velocidad,bit datos,bit parada, puerto, paridad y es todo y rápido recibia la llamada y te lo guardaba en un archivo de texto, por eso se me hace raro que en estos componentes le tenga que decir, este es el caracter de inicio y este el final, siendo que me voy a trompezar en estos casos de que el conmutador no te arroje el caracter de inicio ó final.

__________________
"Hemos aprendido a volar como los Pájaros, y a nadar como los Peces, y todavía No aprendemos a vivir como Hermanos". Martin Luther King

Última edición por AGAG4 fecha: 14-06-2007 a las 16:31:10.
Responder Con Cita
  #10  
Antiguo 14-06-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por AGAG4
Ahora el problema que tengo es que me encontre con otro Conmutador, este no me arroja ningun caracter de inicio , al principio me arroja la fecha (06/14/07) de la llamada, ahora en la propiedad StartString del apdDataPacked se lo quito pero ya no entra al evento OnStringPacket.

Sinceramente que raro que me pida caracteres este componente, porque ya habia visto un programa ( Hecho en Delphi ) usandose, similar al que estoy desarrollando, pero este programa en cualquier lugar donde lo instalas te funcionaba, lo unico que le configurabas era la velocidad,bit datos,bit parada, puerto, paridad y es todo y rápido recibia la llamada y te lo guardaba en un archivo de texto, por eso se me hace raro que en estos componentes le tenga que decir, este es el caracter de inicio y este el final, siendo que me voy a trompezar en estos casos de que el conmutador no te arroje el caracter de inicio ó final.

Hola Alfredo

Para esos casos entonces debes utilizar lo que ya te habia comentado en otra de las respuestas

EndCondition = [ecString]

EndString = #13#10 (^M^J)

StartCond = scAnyData

StartString = vacio

Y ya que veo que estas desarrollando un sistema para que se conecte a cualquier conmutador, te encontrarás casos mucho más complejos.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 14-06-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por AGAG4
Sinceramente que raro que me pida caracteres este componente, porque ya habia visto un programa ( Hecho en Delphi ) usandose, similar al que estoy desarrollando, pero este programa en cualquier lugar donde lo instalas te funcionaba, lo unico que le configurabas era la velocidad,bit datos,bit parada, puerto, paridad y es todo y rápido recibia la llamada y te lo guardaba en un archivo de texto, por eso se me hace raro que en estos componentes le tenga que decir, este es el caracter de inicio y este el final, siendo que me voy a trompezar en estos casos de que el conmutador no te arroje el caracter de inicio ó final.

Pues yo si le veo ventajas y muchas, te explico, cuando estas leyendo un puerto serial sin este componente tienes que leer caracter por caracter y 'manualmente' debes hacer lo mismo ya que debes conocer donde comienza y donde termina un paquete de datos (que es precisamente lo que hace este componente), así que te evita por un lado estar pendiente de cachar los caracteres y por otro la definición de tu paquete de forma manual.

Pues nada, a mi me ha dado muy buenos resultados.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 14-09-2007
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 531
Poder: 24
IVAND Va por buen camino
Yo capturo los datos tal como dice egoestar , pero el componente de monitoreo del componente async pro , me mueestra los datos que entra al sistema pero estos solo me trasmite a mi sistema (memo) solo 6 o maximo nueve veces luego deja de enviar el dato al memo , pero repito el componente de monitoreo sigue capturando el dato , ademas si me pueden guiar el dato de envia en espacio de 2 lineas

Gracias por su interes
__________________
IVAND
Responder Con Cita
  #13  
Antiguo 14-09-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola IVAND, puedes colocar el código que estas usando para la captura de los datos?, así te podremos ayudar mejor.

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
utilizacion codigos de barras en Dephi 5 prof xavier Varios 2 18-06-2006 14:12:47
Sobre Delphi 2005 Prof joanajj Varios 7 02-12-2004 00:27:55
instalar ms sql server en windows 2000 prof. Juan Carlo MS SQL Server 4 16-07-2004 14:58:00
Driver de Impresión de Async Pro guillotmarc Varios 0 16-01-2004 21:01:04
QuickReport 3.6.2 Prof - PDF Jose Manuel Impresión 1 29-10-2003 19:00:58


La franja horaria es GMT +2. Ahora son las 02:52:18.


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