我现在要将一个3万多字节的数据,每次发送256个字节到串口,怎么实现拆分数据啊

解决方案 »

  1.   

    大致如此,没有测试:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      FileBuf:TFileStream;
      DataBuf:TStream;
      i,k:integer;
    begin
      FileBuf:=TFileStream.Create('d:\EXample.TXT',0);
      DataBuf:=TStream.Create;
      k:=FileBuf.Size DIV 256;
      For i:=0 to k do
        begin
        FileBuf.Seek(K*256,soFromBeginning);
        FileBuf.Read(DataBuf,256);
        Comm1.WriteCommData(Pchar(DataBuf),256);
        end;
     FileBuf.Free;
     DataBuf.Free;
    end;
      

  2.   

    有一个笔误:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      FileBuf:TFileStream;
      DataBuf:TStream;
      i,k:integer;
    begin
      FileBuf:=TFileStream.Create('d:\EXample.TXT',0);
      DataBuf:=TStream.Create;
      k:=FileBuf.Size DIV 256;
      For i:=0 to k do
        begin
        FileBuf.Seek(i*256,soFromBeginning);
        FileBuf.Read(DataBuf,256);
        Comm1.WriteCommData(Pchar(DataBuf),256);
        end;
     FileBuf.Free;
     DataBuf.Free;
    end;
      

  3.   

    对  chenylin(陈SIR)  的代码优化
    var
      FileBuf:TFileStream;
      s:string;
      L:Integer;
    begin
      FileBuf:=TFileStream.Create('d:\EXample.TXT',fmOpenRead or fmShareDenyNone);
      try
        SetLength(s,256);
        repeat
          L:=FileBuf.Read(s[1],256);
          if L>0 then
            //发送s,长度L
            ;
        until L=0;
      finally
        FileBuf.Free;
      end;