H
happytimes_dsq
Unregistered / Unconfirmed
GUEST, unregistred user!
通过spcom串口收数据!
1.假设对方无限发送数据.
2.我想通过edit的输入来动态的接受它传过来的字节!当我收完设置的数值后,对对方继续发送的字节不与理会.
3.将收到的数据放入数组作成.bin文件.
我的问题是:
怎么样当我收完我需要的字节后,不理会它继续传的呢?我尝试 关闭串口和设置标志位.但是不行.对方一直发的话,程序就出乱子,连savedialog的对话框都不弹了.如果对方发的字节少的话还好点,要是对方发送多于1K就出乱子!
或者是我程序本身的接收数据就不对呢???请有经验的大哥帮帮忙!~
错误的代码如下!
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i,k:integer;
viewstring,filename:string;
begin
//if dsq=1 then//我尝试做的标志位,在初始化的时候置1了
// begin
viewstring:='';k:=strtoint(edit1.Text);
setlength(adata,k);
move(buffer^,pchar(@data)^,k);
for i:=0 to k-1 do
begin
viewstring:=viewstring+inttohex(data,2)+' ';
adata:=data;
end;
memo1.lines.add(viewstring);
memo1.lines.add('');
dsq:=0;
//Comm1.StopComm;
// bitbtn1.Caption:='CommStop';
if savedialog1.Execute then
begin
filename:=savedialog1.FileName;
array_to_bin(filename,adata,k);
end;
//end;
end;
1.假设对方无限发送数据.
2.我想通过edit的输入来动态的接受它传过来的字节!当我收完设置的数值后,对对方继续发送的字节不与理会.
3.将收到的数据放入数组作成.bin文件.
我的问题是:
怎么样当我收完我需要的字节后,不理会它继续传的呢?我尝试 关闭串口和设置标志位.但是不行.对方一直发的话,程序就出乱子,连savedialog的对话框都不弹了.如果对方发的字节少的话还好点,要是对方发送多于1K就出乱子!
或者是我程序本身的接收数据就不对呢???请有经验的大哥帮帮忙!~
错误的代码如下!
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i,k:integer;
viewstring,filename:string;
begin
//if dsq=1 then//我尝试做的标志位,在初始化的时候置1了
// begin
viewstring:='';k:=strtoint(edit1.Text);
setlength(adata,k);
move(buffer^,pchar(@data)^,k);
for i:=0 to k-1 do
begin
viewstring:=viewstring+inttohex(data,2)+' ';
adata:=data;
end;
memo1.lines.add(viewstring);
memo1.lines.add('');
dsq:=0;
//Comm1.StopComm;
// bitbtn1.Caption:='CommStop';
if savedialog1.Execute then
begin
filename:=savedialog1.FileName;
array_to_bin(filename,adata,k);
end;
//end;
end;