我想从串口接收一个大概为500kb左右的rar文件,串口控件用的是SPCOMM,因为数据量比较大,之前只接收过小数据量。问题:
1、怎么接收数据?是保存在内存块中然后一次性写文件还是读多少写多少??
2、我想模拟发送这个文件,发送端也是用SPCOMM,该怎么发送这个文件?
3、如果文件是图片该怎么接收??请各位大侠给点意见,最好是源码,急啊!!!!拜托各位了

解决方案 »

  1.   

    分段,一次spcomm好像只能接收2048个字节,其他的我也不清楚,没做过传送文件的
      

  2.   

    试试使用流吧,以前看到用MSComm用内存流的形式发送图片的例子,图片大的也有500K了吧~
      

  3.   

    Spcomm串口控件的例程           //串口初始化           procedure TForm1.BitBtn3Click(Sender: TObject);
                begin
                   comm1.startcomm;
                end;
                  //关闭串口
                procedure TForm1.BitBtn4Click(Sender: TObject);
                begin
                   comm1.StopComm;
                end;
                //发送数据
                procedure TForm1.BitBtn1Click(Sender: TObject);{var str:string;
                    ch1:char;
                begin
                comm1.WriteCommData(ch,1);
                end.
                //接收数据
                procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
                  BufferLength: Word);
                type   ss=array[1..500]of char ;
                var    str1:^ss;
                       i:integer;
                       s:array[0..15] of char ;
                       n:integer;
                begin
                       str1:=Buffer;
                     //s[]=('0','1','2','3'...'E')
                       for i:=0 to 9 do
                       s[i]:=chr(48+i);
                       for i:=10 to 15 do
                       s[i]:=chr(55+i);
                       for i:=1 to bufferlength do
                       begin
                       n:=ord(str1^[i]);
                       listbox1.Items.add(
                                 inttostr(listbox1.Items.Count+1)
                                 +' - '+s[n div 16]+s[n mod 16]);
                       end;
                       listbox1.Refresh;
                      if listbox1.Items.count > strtoint(form2.edit1.text)
                      then listbox1.Items.Clear;
                end;
      

  4.   

    没有人用SPCOMM传过文件吗???