📄 unit1.pas
字号:
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =9 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$89;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
sendfalse:=10;
snedneixing:=1;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =10 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8A;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
sendfalse:=11;
snedneixing:=1;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =11 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8B;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
sendfalse:=12;
snedneixing:=1;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =12 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8C;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
sendfalse:=13;
snedneixing:=1;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =13 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8D;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
snedneixing:=1;
sendfalse:=14;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =14 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8E;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
snedneixing:=1;
sendfalse:=15;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =15 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$8F;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
snedneixing:=1;
sendfalse:=16;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse =16 then
begin
senddatabuff[0]:=$23;
senddatabuff[1]:=$FF;
senddatabuff[2]:=$FF;
senddatabuff[3]:=$FF;
senddatabuff[4]:=$FF;
senddatabuff[5]:=$02;
senddatabuff[6]:=$80;
senddatabuff[7]:=$00;
senddatabuff[8]:=$00;
snedneixing:=1;
sendfalse:=0;
kkm:=senddatabuff[1];
for j:=2 to 8 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[9]:=kkm;
senddatabuff[10]:=$40;
sendstring:='';
for i:=0 to 10 do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
timer1.Enabled:=true;
end
else if sendfalse = 0 then
begin
timer1.Enabled:=false;
timer2.Enabled:=false;
showmessage('找不到传感器');
end
else if sendfalse = 20 then
begin
timer1.Enabled:=false;
timer2.Enabled:=false;
showmessage('传感器上传数据有误');
end
else;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
reidataleng:integer;
currey:array[0..5] of Byte;
zmer:array[0..5] of Byte;
tame:boolean;
ukm:integer;
sendstring: string;
sdlength: integer;
i,kkm,j, un:integer;
f:psingle;
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
if snedneixing = 1 then
begin
tame:=false;
snedneixing:=0;
for i:=0 to 18 do
begin
if ((receivedata[i]=$FF)and(receivedata[i+1]=$06)and (receivedata[i+3]=$00)) then
begin
Timer1.Enabled:=false; //收到返回来的数据
redatafalse:=true;
sendfalse:=20;
zichaoiid:= receivedata[8+i]; //制ID
edit1.Text:= inttostr(integer(zichaoiid)) ;
sebeinx:= receivedata[9+i]; //类型
edit2.Text:= inttostr(integer(sebeinx)) ;
daomacont:= receivedata[i+10]; //前导符
edit6.Text:= inttostr(integer(daomacont));
for kkm:=0 to 2 do
begin
sebeiid[kkm]:= receivedata[i+16+kkm];
end ;
ukm:=integer(sebeiid[0])*65536 + integer(sebeiid[1])*256 + integer(sebeiid[+2]);
edit3.Text:= inttostr(ukm);
break;
end ;
end;
if redatafalse then
begin
un:=0;
senddatabuff[un]:=$23;
inc(un);
senddatabuff[un]:=$FF;
inc(un);
senddatabuff[un]:=$FF;
inc(un);
senddatabuff[un]:=$FF;
inc(un);
senddatabuff[un]:=$FF;
inc(un);
senddatabuff[un]:=$82;
inc(un);
senddatabuff[un]:= $80;
senddatabuff[un]:= senddatabuff[6] or zichaoiid;
inc(un);
senddatabuff[un]:= sebeinx;
inc(un);
for kkm:=0 to 2 do
begin //付完设备ID号
senddatabuff[un]:= sebeiid[kkm];
inc(un);
end;
senddatabuff[un]:=$03;
inc(un);
senddatabuff[un]:=$00;
inc(un);
kkm:=senddatabuff[1];
for j:=2 to un-1 do
begin
kkm:= kkm xor senddatabuff[j];
end;
senddatabuff[un]:=kkm;
inc(un);
senddatabuff[un]:=$40;
sendstring:='';
for i:=0 to un do
begin
sendstring:= sendstring + chr(senddatabuff[i])
end;
sdlength:= length(sendstring);
comm1.WriteCommData(pchar(sendstring),sdlength );
snedneixing:=2;
end;
end
else if snedneixing = 2 then
begin //用于解析返回回来的数据包
snedneixing:=0;
for i:=0 to 18 do
begin
if ((receivedata[i]=$FF)and(receivedata[i+1]=$86)) then
begin
Timer1.Enabled:=false; //收到返回来的数据
currey[3]:= receivedata[i+11];
currey[2]:= receivedata[i+12];
currey[1]:= receivedata[i+13];
currey[0]:= receivedata[i+14];
f:=@currey[0];
edit5.Text:= floattostr(f^);
zmer[3]:= receivedata[i+16];
zmer[2]:= receivedata[i+17];
zmer[1]:= receivedata[i+18];
zmer[0]:= receivedata[i+19];
f:=@zmer[0];
edit4.Text:= floattostr(f^);
break;
end ;
end;
end
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption:='打开串';
Button4.Enabled:=false;
Timer2.Enabled:=false;
Timer1.Enabled:=false;
redatafalse:=false;
snedneixing:=0;
bingmu:=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -