FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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 |
|
|
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 |
|