简单问题!即可送100分,在线等!!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 史小青
  • 开始时间 开始时间

史小青

Unregistered / Unconfirmed
GUEST, unregistred user!
请给以下每一行代码加上详细注解,是每一行详细注解!!!!!!谢谢!procedure TForm1.Timer4Timer(Sender: TObject);
var
st:string[5];
sb:array[1..3]of string[1];
s1,s2:string;
outt:ARRAY[1..200]OF char;
N,I,FCS,FCSH,FCSL:INTEGER;
NACTUALWRITE:INTEGER;
begin
s1:='@00RR04800028';
fcs:=$40;
for i:=2 to LENGTH(S1) do
begin
fcs:=fcs xor integer(s1);
end;
fcsl:=fcs and $0f;
fcsh:=(fcs and $f0) shr 4;
st[1]:=#42;
st[2]:=#13;
sb[1]:=format('%x',[fcsl]);
sb[2]:=format('%x',[fcsh]);
s2:=s1+sb[2]+sb[1]+st[1]+st[2];
for n:=1 to length(s2) do
outt[n]:=s2[n];
writefile(hcomm,outT,LENGTH(S2),nactualwrite,lpol);
setevent(post_event);
end;
 
请给以下每一行代码加上详细注解,是每一行详细注解!!!!!!谢谢!procedure TForm1.Timer4Timer(Sender: TObject);
var
st:string[5];
sb:array[1..3]of string[1];
s1,s2:string;
outt:ARRAY[1..200]OF char;
N,I,FCS,FCSH,FCSL:INTEGER;
NACTUALWRITE:INTEGER;
begin
s1:='@00RR04800028';
fcs:=$40;
for i:=2 to LENGTH(S1) do
begin
fcs:=fcs xor integer(s1);
end;
fcsl:=fcs and $0f;
fcsh:=(fcs and $f0) shr 4;
st[1]:=#42;
st[2]:=#13;
sb[1]:=format('%x',[fcsl]);
sb[2]:=format('%x',[fcsh]);
s2:=s1+sb[2]+sb[1]+st[1]+st[2];
for n:=1 to length(s2) do
outt[n]:=s2[n];
writefile(hcomm,outT,LENGTH(S2),nactualwrite,lpol);
setevent(post_event);
end;
 
//呵呵,我先抛块砖,抢简单的写一下
procedure TForm1.Timer4Timer(Sender: TObject);
var//变量定义
st:string[5]; //字串定义,[5]是限定长度了吧?我也不知道
sb:array[1..3]of string[1];//字串数组
s1,s2:string;//字串
outt:ARRAY[1..200]OF char;//字符数组
N,I,FCS,FCSH,FCSL:INTEGER;//实数
NACTUALWRITE:INTEGER;//实数
begin//开始
s1:='@00RR04800028';//s1赋值
fcs:=$40;//16进制40H
for i:=2 to LENGTH(S1) do//循环处理,从s1的第2字节开始处理到最后一个字节
begin
fcs:=fcs xor integer(s1);//与fcs异或并将结果保存到fcs
end;
fcsl:=fcs and $0f;//循环处理结果和0FH与,并将结果保存到fcsl
fcsh:=(fcs and $f0) shr 4;//
st[1]:=#42;//赋值,10进制42
st[2]:=#13;//赋值,10进制13,也是回车符
sb[1]:=format('%x',[fcsl]);
sb[2]:=format('%x',[fcsh]);
s2:=s1+sb[2]+sb[1]+st[1]+st[2];//生成要发送的字串
for n:=1 to length(s2) do//发送字串s2
outt[n]:=s2[n];
writefile(hcomm,outT,LENGTH(S2),nactualwrite,lpol);
setevent(post_event);
end;
 
maxim88:终于出山了,高人!真的是千呼万唤始未出,今日是拨开云雾见天日了!还请日后多多指教!!!
 
楼主,这段是实现什么功能的啊
 
DELPHI与PLC读地址的通讯。
 
procedure TForm1.Timer4Timer(Sender: TObject);
var
st:string[5];
sb:array[1..3]of string[1];
s1,s2:string;
outt:ARRAY[1..200]OF char;
N,I,FCS,FCSH,FCSL:INTEGER;
NACTUALWRITE:INTEGER;
begin
s1:='@00RR04800028'; //欲发送的信息 @00(节点号)rr(识别码)04800028 正文
fcs:=$40;
for i:=2 to LENGTH(S1) do
begin
fcs:=fcs xor integer(s1);
end;
fcsl:=fcs and $0f;
fcsh:=(fcs and $f0) shr 4; // 以上是fcs校验
st[1]:=#42; // 结束符*
st[2]:=#13; // 回车
sb[1]:=format('%x',[fcsl]);
sb[2]:=format('%x',[fcsh]); //格式化fcs校验
s2:=s1+sb[2]+sb[1]+st[1]+st[2]; // 节点号识别码 正文 fcs校验 结束符
for n:=1 to length(s2) do
outt[n]:=s2[n];
writefile(hcomm,outT,LENGTH(S2),nactualwrite,lpol); // 发送 s2 字符串
setevent(post_event);
end;
 
多人接受答案了。
 
后退
顶部