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; var HexBufOut:buffer;
type
TForm1 = class(TForm)
SaveDialog1: TSaveDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
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'; end;
procedure TForm1.Button1Click(Sender: TObject);
var Fname,line:string;
Fp : textfile;
ErrorCode,StartAddr,ByteCnt:integer;
A_Line,EOF_HEX:string;
begin
StartAddr:=$0000; ByteCnt:=16; 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);
Rewrite(Fp);
A_Line:=writeline(StartAddr,ByteCnt,$00,HexBufOut);
EOF_HEX:=':00'+'0000'+'01'+'FF'; 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.