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 22-08-2008
happy-word happy-word is offline
Registrado
 
Registrado: ago 2008
Posts: 2
Poder: 0
happy-word Va por buen camino
Exclamation ayuda codigo para leer el puerto com1

hola soy nuevo en el foro y tengo un problema con este codigo..

intento leer el puerto com1 desde delphi, tengo una central telefonica y nesecito leer el registro de llamadas, esto se hace atravez de un aparato llamado msdr6 el cual envia las llamadas parametrisadas al puerto y despues de ahy solo tengo que leer el puerto y recoger las llamas...


EL PROBLEMA ES: Que habeces las llamadas no llegan completas o llegan con caracteres de mas o suprime algunos...
no se si es porque estoy haciendo algo mal o me faltan comados....


esto mismo que hago desde delphi lo hace un programita que trae windows llamado hyperterminal que se encuentra en el menu de accesorios -- comunicacion. y este programa lo lee bien si suprimir caracteres ni nada... osea que ewl problema es de la aplicacion en delphi..

YAhora ustedes diran, por que no usas el hyperterminal.?.. RESPUESTA: porque el hypertelminal no me crea un archivo de texto automatico sino que ahy que detenerlo y crearlo manual.. y con el programa que cree en delphi puede automaticamente insertar los registros leidos a una base de datos oracle...



Código:
procedure TForm1.Timer1Timer(Sender: TObject);

var
 Lectura: string;
  dwValor: DWORD;
  Sta: COMSTAT;
  dd: Integer;
  erro: string;
  bResult: Boolean;
  cad: string;

 begin



 if (ClearCommError(Puerto, dwValor, @Sta)) then
  begin
     // Mientras haya algo en el buffer de entrada...
    while (0 < Sta.cbInQue) do
    begin
      // Redimensionar la variable de lectura
      SetLength(Lectura, (Sta.cbInQue + 1));
      // Leer del puerto
      bResult := ReadFile(Puerto,
                          PChar(Lectura)^,
                          Sta.cbInQue,
                          dwValor,
                          nil);

      cad:= cad + (lectura);
        if (bResult) then
      begin

        // Aquí se almacenaría lo leído
          MCaptura.Text :=MCaptura.Text + cad;


        // Comprobar si hay algo más para leer
       // y, si es así, continuar en el bucle
        ClearCommError(Puerto, dwValor, @Sta);
      end
      else
      begin
        // Esto es un error de lectura.
        // IMPORTANTE: si se produce un error nos
        // quedamos en un bucle sinfín si no se hace:
        Sta.cbInQue := 0;
        MessageDlg('Error de lectura',mtError,mbOKCancel,0);
        // También vale un 'break' o 'exit'
      end;
    end;
  end;
end;



Código:
procedure TForm1.FormCreate(Sender: TObject);
begin

Puerto:=FileOpen('COM1' ,fmOpenRead);//Abre el puerto
Mode.BaudRate := 9600;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;
SetCommState(Puerto, Mode); //Ajusta los parámetros

 Timer1.Enabled:=true;
end;
Código:
procedure TForm1.Timer2Timer(Sender: TObject);
var
llamada: string;
begin
if(MCaptura.Text<>'') then
  begin


 timer1.Enabled:=false;
 FileClose(puerto);
 SQLQuery1.SQL.Clear;
 SQLQuery1.Close;
 SQLQuery1.SQL.Add('insert into datos_central(cadena) values('''+mcaptura.Text+''')');
 SQLQuery1.ExecSQL;
 SQLQuery1.SQL.Clear;
 SQLQuery1.SQL.Add('commit');
 SQLQuery1.ExecSQL;
 MCaptura.Text:='';

 Puerto:=FileOpen('COM1' ,fmOpenRead);//Abre el puerto
Mode.BaudRate := 9600;
Mode.ByteSize := 8;
Mode.Parity := NOPARITY;
Mode.StopBits := ONESTOPBIT;
SetCommState(Puerto, Mode); //Ajusta los parámetros


 timer1.Enabled:=true;
  end;
end;

este es el archivo capturado por el hyperterminal..
Código:
--------   10/16/07   08:19:14   LINE = 0032   STN = 247     
00:00:00   INCOMING CALL    RINGING 0:03
00:00:42   HOLD
00:00:46   TRANSFERRED

--------   10/16/07   08:20:00   LINE = 0032   STN = 221     
00:00:00   FROM TRANSFER
00:00:00   UNHOLD
00:00:06   HOLD
00:00:18   TRANSFERRED

--------   10/16/07   08:20:18   LINE = 0032   STN = 234     
00:00:00   FROM TRANSFER
00:00:00   UNHOLD
00:04:07   CALL RELEASED

--------   10/16/07   08:23:29   LINE = 0031   STN = 247     
00:00:00   INCOMING CALL    RINGING 0:03
00:00:21   HOLD
00:00:29   TRANSFERRED

--------   10/16/07   08:23:58   LINE = 0031   STN = 230     
00:00:00   FROM TRANSFER
00:00:00   UNHOLD
00:00:59   CALL RELEASED

--------   10/16/07   08:20:34   LINE = 0051   STN = 249     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8095912498
00:05:30   CALL RELEASED

--------   10/16/07   08:28:07   LINE = 0050   STN = 234     
00:00:00   OUTGOING CALL
00:00:03   CALL RELEASED

--------   10/16/07   08:28:14   LINE = 0050   STN = 234     
00:00:00   OUTGOING CALL
           RESTRICTION PASSWORD  00
           DIGITS DIALED    8099107862
00:00:12   CALL RELEASED

--------   10/16/07   08:27:28   LINE = 0051   STN = 296     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8095644392
00:00:55   CALL RELEASED

--------   10/16/07   08:27:55   LINE = 0031   STN = 279     
00:00:00   INCOMING CALL    RINGING 0:03
00:00:23   HOLD
00:00:48   UNHOLD
00:01:01   CALL RELEASED

--------   10/16/07   08:28:50   LINE = 0051   STN = 296     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8095343394
00:00:40   CALL RELEASED

--------   10/16/07   08:23:57   LINE = 0001   STN = 279     
00:00:00   INCOMING CALL    RINGING 0:03
00:00:19   HOLD
00:00:25   TRANSFERRED

un ejemplo de como esta recopilando la informacion del puerto con el programa en delphi..
Código:
L?&OT?
IU?U5UE???u--------   08/22/08   10:06:29   LINE = 0019   STN = 245     
00:00:00   OUTGOING CALL
           DIGITS DIALED    809542
00:00:02   CALL RELEASED

--------   08/22/08   10:06:33   LINE = 0021   STN = 245     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8097845
00:00:03   CALL RELEASED


--------   08/22/08   10:06:39   LINE = 0019   STN = 245     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8097845
00:00:02   CALL RELEASED
A
--------   08/22/08   10:07:28   LINE = 0021   STN = 245     
00:00:00 --------   08/22/08   10:07:28   LINE = 0021   STN = 245     
00:00:00 NG CALL
           DIGITS DIALED    8095461
00:00:03   CALL RELEASED
--------   08/22/08   10:d2   LINE = 0021   STN = 245     
00:00:00   OUTGOING CALL
           DIGITS DIALED    8095
00:00:02   CALL RELEASED

Última edición por happy-word fecha: 22-08-2008 a las 17:57:18.
Responder Con Cita
  #2  
Antiguo 22-08-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola, bienvenido al foro,

Y.... ¿Cual es tu problema?

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
Leer codigo de barras y peso a travez de un puerto serie Wolfyx Conexión con bases de datos 4 04-12-2006 05:23:32
Necesito ayuda para imprimir por COM1... AFilth Impresión 3 11-02-2006 12:22:49
Envio de datos al puerto serie COM1 Niko Varios 5 15-03-2005 18:38:21
Anviar Archivos por puerto COM1... Sinaloense API de Windows 1 14-01-2005 19:52:10
Parámetros puerto COM1 Tecnic2 OOP 0 05-11-2004 18:33:00


La franja horaria es GMT +2. Ahora son las 17:58:07.


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