procedure TForm8.Button1Click(Sender: TObject); var k1,a1,a2,a3:integer; Sg1,Sg2,Sg3:string; begin Sg1:=form8.Edit1.Text; k1:=length(Sg1); Sg3:=''; for a1:=1 to k1 do begin Sg2:=copy(Sg1,a1,1); Sg3:=Sg3+inttohex(ord(Sg2[1]),2); end; S_FA:='415444'+Sg3+'0D0A'; form4.sendData(S_FA); All_status:=5;end; S_FA:全局的string All_status:全局的integer sendData一个公共窗口的发送函数 procedure TForm4.sendData(const DataBuf:string); var str:string; i,lend,chang:integer; begin chang:=1; str:=''; if length(DataBuf)=0 then exit; lend:=length(DataBuf); lend:=lend div 2; for i:=0 to lend-1 do begin try str:=char(strtoint('$'+copy(DataBuf,chang,2))); //str:=str+char(strtoint('$'+copy(DataBuf,chang,2))) IF F_8=true then begin form8.Memo1.Text:=form8.Memo1.Text+copy(DataBuf,chang,2); end; except end; form1.Comm1.WriteCommData(pchar(str),length(str)); chang:=chang+2; end; //DataBuf:=nil; end;
这是接收函数procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var k,Len_S:integer; SSS_1:string; begin lenbuffer:=BufferLength; SetLength(S,lenbuffer); SetLength(S_Buf_R,lenbuffer); S:=Buffer; For k := 0 To lenbuffer-1 do begin S_Buf_R[k]:= inttohex(S[k],2); SSS:=SSS+chr(strtoint('$'+S_Buf_R[k])); S_Buf:=S_Buf+S_Buf_R[k]; end; if S_Buf_R[lenbuffer-1]='0A' then begin Pan_B:=true; end; if Pan_B=true then begin //部分数据处理代码 end; Len_S:=Length(S_Buf); SSS_1:=show_s(S_Buf,Len_S);//form1.Timer1.Enabled:=true; SSS:=''; S_Buf:=''; end;
var str,temp:string; begin str:=''; temp:=databuf; if length(DataBuf)=0 then exit; //-------------------得到发送的内容; while temp<>'' do begin str:=str+char(strtoint('$'+copy(DataBuf,chang,2)); temp:=copy(temp,3,length(temp)-2); end; IF F_8 then begin form8.Memo1.Text:=str; end; //----发送数据; form1.Comm1.WriteCommData(pchar(str),length(str)); end; //--------发送数据的函数可以改成这样;
接收数据可以这样: procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var s:string; begin setlength(s,length(buffer)); move(pchar(buffer)^,s[1],bufferlength); ....... //这里你自己再处理; end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var s:string; begin setlength(s,bufferlength);//---- move(buffer,s[1],bufferlength);//----接收数据 //---或是move(pchar(buffer),pchar(s[1])^,bufferlength); if ord(s[bufferlength])=$0A then Pan_B:=true else Pan_B:=false; if pan_b then begin //部分数据处理代码 end;end;
var
k1,a1,a2,a3:integer;
Sg1,Sg2,Sg3:string;
begin
Sg1:=form8.Edit1.Text;
k1:=length(Sg1);
Sg3:='';
for a1:=1 to k1 do
begin
Sg2:=copy(Sg1,a1,1);
Sg3:=Sg3+inttohex(ord(Sg2[1]),2);
end; S_FA:='415444'+Sg3+'0D0A';
form4.sendData(S_FA);
All_status:=5;end; S_FA:全局的string All_status:全局的integer sendData一个公共窗口的发送函数
procedure TForm4.sendData(const DataBuf:string);
var
str:string;
i,lend,chang:integer;
begin
chang:=1;
str:='';
if length(DataBuf)=0 then exit;
lend:=length(DataBuf);
lend:=lend div 2;
for i:=0 to lend-1 do
begin try
str:=char(strtoint('$'+copy(DataBuf,chang,2))); //str:=str+char(strtoint('$'+copy(DataBuf,chang,2)))
IF F_8=true then
begin
form8.Memo1.Text:=form8.Memo1.Text+copy(DataBuf,chang,2);
end; except
end;
form1.Comm1.WriteCommData(pchar(str),length(str));
chang:=chang+2;
end; //DataBuf:=nil;
end;
BufferLength: Word);
var
k,Len_S:integer;
SSS_1:string;
begin
lenbuffer:=BufferLength;
SetLength(S,lenbuffer);
SetLength(S_Buf_R,lenbuffer);
S:=Buffer; For k := 0 To lenbuffer-1 do
begin
S_Buf_R[k]:= inttohex(S[k],2);
SSS:=SSS+chr(strtoint('$'+S_Buf_R[k]));
S_Buf:=S_Buf+S_Buf_R[k];
end;
if S_Buf_R[lenbuffer-1]='0A' then
begin
Pan_B:=true;
end;
if Pan_B=true then
begin //部分数据处理代码
end;
Len_S:=Length(S_Buf); SSS_1:=show_s(S_Buf,Len_S);//form1.Timer1.Enabled:=true;
SSS:='';
S_Buf:='';
end;
str,temp:string;
begin
str:='';
temp:=databuf;
if length(DataBuf)=0 then exit;
//-------------------得到发送的内容;
while temp<>'' do
begin
str:=str+char(strtoint('$'+copy(DataBuf,chang,2));
temp:=copy(temp,3,length(temp)-2);
end;
IF F_8 then
begin
form8.Memo1.Text:=str;
end;
//----发送数据;
form1.Comm1.WriteCommData(pchar(str),length(str));
end;
//--------发送数据的函数可以改成这样;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
s:string;
begin
setlength(s,length(buffer));
move(pchar(buffer)^,s[1],bufferlength);
.......
//这里你自己再处理;
end;
BufferLength: Word);
var
s:string;
begin
setlength(s,bufferlength);//----
move(buffer,s[1],bufferlength);//----接收数据
//---或是move(pchar(buffer),pchar(s[1])^,bufferlength);
if ord(s[bufferlength])=$0A then
Pan_B:=true
else
Pan_B:=false;
if pan_b then
begin //部分数据处理代码
end;end;
我顶!