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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Recibir data por el serial port.

Hola amigos.

Estoy tratando de recibir una cadena de data (4096 bytes de data por el serial port.) La tendre que alojar temporalmente en un buffer imagino y despues usando un procedimiento modificado como este:
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type buffer=array of byte;  //assign as Dynamic array
var HexBufOut:buffer;
type
  TForm1 = class(TForm)
    SaveDialog1: TSaveDialog;
    Button1: TButton;
  procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
 function writeline(ADDR,RECLEN,RECTYPE:integer;
            var buf:buffer):string;
 var i:integer;
CHKSUM:byte;
begin
CHKSUM:=0;
result:=':'+inttohex(RECLEN,2)+   inttohex(ADDR,4)+inttohex(RECTYPE,2);
CHKSUM:=RECLEN+lo(ADDR)+hi(ADDR);
for i:=0 to RECLEN-1 do begin
result:=result+inttohex(buf[ADDR+i],2);
 CHKSUM:=CHKSUM+buf[ADDR+i];
end;
result:=result+inttohex(256-CHKSUM,2);
end;
function write_eof:string;
begin
result:=':00'+'0000'+'01'+'FF';  // :00000001FF
end;
 

procedure TForm1.Button1Click(Sender: TObject);
 var Fname,line:string;
 Fp : textfile;
 ErrorCode,StartAddr,ByteCnt:integer;
  A_Line,EOF_HEX:string;
begin
  StartAddr:=$0000;  // start address
  ByteCnt:=16;    // 16 bytes
  SetLength(HexBufOut,ByteCnt);
  HexBufOut[0]:=$00;
  HexBufOut[1]:=$12;
  HexBufOut[2]:=$00;
  HexBufOut[3]:=$72;
  HexBufOut[4]:=$12;
  HexBufOut[5]:=$00;
  HexBufOut[6]:=$7E;
  HexBufOut[7]:=$B4;
  HexBufOut[8]:=$80;
  HexBufOut[9]:=$04;
  HexBufOut[10]:=$80;
  HexBufOut[11]:=$34;
  HexBufOut[12]:=$80;
  HexBufOut[13]:=$F6;
  HexBufOut[14]:=$75;
  HexBufOut[15]:=$A0;
Fname:='C:\Documents and Settings\XP\My Documents\test1.hex';
AssignFile(Fp,Fname); { File selected in dialog }
 Rewrite(Fp);
// write 16 bytes in HexBuf
 A_Line:=writeline(StartAddr,ByteCnt,$00,HexBufOut);
   EOF_HEX:=':00'+'0000'+'01'+'FF';// write end of HEX file
     writeln(Fp,A_Line);
   writeln(Fp,EOF_HEX);
 closefile(Fp);
end;

end.

Guardarla en un fichero dentro de la PC.(en formato intel hex)
Este codigo que mostre esta trabajando y crea bien el intelhex.
Esta data que llegara desde el serial port, es leida de un chip y mandada al serial port por utro chip master(esta parte esta funcionando bien,la puedo ver en un monitor.)

Me hace falta una orientacion para poder alojarla en un buffer y posteriormente guardarla en un fichero.

Un Saludo.
Responder Con Cita
 



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
Serial Port JoseFco Varios 46 22-03-2008 02:38:49
Missing data provider or data packet mcalmanovici Providers 1 11-09-2007 05:55:15
Serial Port desde Delphi MaMu API de Windows 2 19-06-2007 01:14:53
Como recibir datos en un puerto serial JULIPO PHP 1 17-06-2006 20:54:36
Como se usa el Componente Serial Port en C# (VS2005)? z-7 .NET 0 16-12-2005 05:02:05


La franja horaria es GMT +2. Ahora son las 04:43:15.


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