📄 u_rs485.pas
字号:
send_a:='FEFEFE68'+tzstrx(edit1.Text)+'68'+'0102'+tzstrx(edit2.Text);
end;
if (radiobutton5.Checked=true) then
begin
send_a:='534E4414FFFFFFFFFFFF09AF'+tzstrx(edit1.Text)+'0105'+tzstrx(edit2.Text)+'BBBBBB';
end;
end;
if radiobutton2.Checked=true then
begin
bc_pass:='00'+tzstrx(edit3.Text);
ml_len:=inttohex(((length(edit6.Text) div 2) + 6),2);
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
begin
send_a:='68'+tzstrx(edit1.Text)+'68'+'04'+ml_len+tzstrx(edit2.Text)+bc_pass+tzstrx(edit6.Text);
end;
if (radiobutton5.Checked=true) then
begin
AA1:='534E44';
AA2:='FFFFFFFFFFFF09AF'+TZSTRX(edit1.Text)+'04' ;
AA3:=TZSTRX(TRIM(edit2.Text))+'BBBBBB';
AA4:=(trim(bc_pass))+TZSTRX(TRIM(edit6.Text));
AA5:=TZSTRX(edit1.Text)+'04';
AACD1:=INTTOhex((LENGTH(AA2+AA3+AA4) DIV 2+3),2);
AACD2:=INTTOhex((LENGTH(AA3+AA4) DIV 2),2);
send_a:=AA1+AACD1+AA2+AACD2+AA3+AA4;
end;
end;
end
else
begin
send_a:=edit6.Text;
end;
send_str:=trim(send_a);
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
str:=send_jy(send_str)
else
str:=xc_send_jy(send_str);
memo1.Lines.Add(str);
str:=hex_str(str);
comm1.RTSEnabled:=false;
for i :=1 to length(str) do
begin
sleep(10);
comm1.OutputString(str[i]);
end;
sleep(strtoint(edit4.Text));
comm1.RTSEnabled:=true;
for i :=0 to 100 do
begin
sleep(strtoint(edit4.Text));
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
begin
comm1.InputLen:=1;
fh_str:=comm1.Input;
if fh_str='68' then
break
else if i=100 then
begin
showmessage('no 68');
exit;
end;
end
else
begin
comm1.InputLen:=2;
fh_str:=comm1.Input;
if fh_str='4441' then
break
else if i=100 then
begin
showmessage('no 68');
exit;
end;
end;
end;
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
begin
ss:=fh_str;
memo1.Lines.Add(ss);
sleep(strtoint(edit5.Text));
comm1.InputLen:=9;
fh_str:=comm1.Input;
ss:=ss+fh_str;
kzm:=copy(fh_str,15,2);
kzm:=copy(kzm,1,1);
memo1.Lines.Add(kzm);
if kzm='C' then
begin
showmessage('其它错误');
exit;
end;
fh_len:=copy(fh_str,17,2);
sj_len:=h_dec(fh_len);
data_len:=strtoint(sj_len);
sleep(strtoint(edit5.Text));
comm1.InputLen:=data_len+2;
fh_str:=comm1.Input;
ss:=ss+fh_str;
memo1.Lines.Add(ss);
js_jy:=revc_jy(ss);
memo1.Lines.Add(js_jy);
fh_jy:=copy(rightstr(ss,4),1,2);
memo1.Lines.Add(fh_jy);
fh_16:=copy(rightstr(ss,4),3,2);
memo1.Lines.Add(fh_16);
if fh_jy<>js_jy then
begin
showmessage('检验错误');
exit;
end;
if fh_16<>'16' then
begin
showmessage('无结尾符');
exit;
end;
fh_data:=copy(ss,21,length(ss)-24);
memo1.lines.add(fh_data);
fh_data:=data_del_33(fh_data);
memo1.Lines.Add(fh_data);
end
else
begin
ss:=fh_str;
memo1.Lines.Add(ss);
//exit;
sleep(strtoint(edit5.Text));
comm1.InputLen:=9;
fh_str:=comm1.Input;
ss:=ss+fh_str;
ss1:=copy(fh_str,9,10);
kzm:=copy(fh_str,15,2);
kzm:=copy(kzm,1,1);
memo1.Lines.Add(kzm);
if kzm='C' then
begin
showmessage('其它错误');
exit;
end;
fh_len:=copy(fh_str,17,2);
sj_len:=h_dec(fh_len);
data_len:=strtoint(sj_len);
sleep(strtoint(edit5.Text));
comm1.InputLen:=data_len+2;
fh_str:=comm1.Input;
ss:=ss+fh_str;
ss1:=ss1+fh_str;
memo1.Lines.Add(ss);
memo1.Lines.Add(ss1);
js_jy:=revc_jy(ss1);
memo1.Lines.Add(js_jy);
fh_jy:=copy(rightstr(ss,4),1,2);
memo1.Lines.Add(fh_jy);
fh_16:=copy(rightstr(ss,4),3,2);
memo1.Lines.Add(fh_16);
if fh_jy<>js_jy then
showmessage('检验错误');
//if fh_16<>'05' then
//showmessage('无结尾符');
fh_data:=copy(ss,23,length(ss)-26);
memo1.lines.add(fh_data);
//fh_data:=data_del_33(fh_data);
//memo1.Lines.Add(fh_data);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
comm1.CommPort:=com;
comm1.BaudRate:=baud;
comm1.DataBits:=db8;
comm1.StopBits:=sb1;
comm1.Parity:=party;
comm1.PortOpen:=true;
comm1.DTREnabled:=true;
comm1.RTSEnabled:=true;
comm1.DataCount:=0;
comm1.RThreshold:=1;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
comm1.PortOpen:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fh_int:integer;
fp:textfile;
buffer,send_str:string;
send_a,aa1,aa2,aa3,aa4,aa5,aacd1,aacd2,bc_pass,ml_len,ss1:string;
begin
if edit1.Text='' then
begin
showmessage('请输入通讯表号');
edit1.SetFocus;
exit;
end;
if edit2.Text='' then
begin
showmessage('请输入通讯命令');
edit2.SetFocus;
exit;
end;
if radiobutton2.Checked=true then
begin
if edit3.Text='' then
begin
showmessage('请输入密码');
edit3.SetFocus;
//exit;
end;
if edit6.Text='' then
begin
showmessage('请输入编程数据');
edit6.SetFocus;
//exit;
end;
end;
if radiobutton1.Checked=true then
begin
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
begin
send_a:='68'+tzstrx(edit1.Text)+'68'+'0102'+tzstrx(edit2.Text);
end;
if (radiobutton5.Checked=true) then
begin
send_a:='534E4414FFFFFFFFFFFF09AF'+tzstrx(edit1.Text)+'0105'+tzstrx(edit2.Text)+'BBBBBB';
end;
end;
if radiobutton2.Checked=true then
begin
bc_pass:='00'+tzstrx(edit3.Text);
ml_len:=inttohex(((length(edit6.Text) div 2) + 6),2);
if (radiobutton3.Checked=true) or (radiobutton4.Checked=true) then
begin
send_a:='68'+tzstrx(edit1.Text)+'68'+'04'+ml_len+tzstrx(edit2.Text)+bc_pass+tzstrx(edit6.Text);
end;
if (radiobutton5.Checked=true) then
begin
AA1:='534E44';
AA2:='FFFFFFFFFFFF09AF'+TZSTRX(edit1.Text)+'04' ;
AA3:=TZSTRX(TRIM(edit2.Text))+'BBBBBB';
AA4:=(trim(bc_pass))+TZSTRX(TRIM(edit6.Text));
AA5:=TZSTRX(edit1.Text)+'04';
AACD1:=INTTOhex((LENGTH(AA2+AA3+AA4) DIV 2+3),2);
AACD2:=INTTOhex((LENGTH(AA3+AA4) DIV 2),2);
send_a:=AA1+AACD1+AA2+AACD2+AA3+AA4;
end;
end;
send_str:=trim(send_a);
if (radiobutton3.Checked=true) then
fh_int:=NgOUT(send_str,strtoint(edit4.Text),strtoint(edit5.Text));
if (radiobutton4.Checked=true) then
fh_int:=EasOUT(send_str,0,strtoint(edit4.Text),strtoint(edit5.Text));
if (radiobutton5.Checked=true) then
fh_int:=XcOUT(send_str,strtoint(edit4.Text),strtoint(edit5.Text));
memo1.Lines.Add(send_str);
if fh_int=-4 then
begin
showmessage('其它错误');
exit;
end;
if fh_int=-3 then
begin
showmessage('无报头');
exit;
end;
if fh_int=-2 then
begin
showmessage('校验错误');
exit;
end;
if fh_int=-1 then
begin
showmessage('无16');
exit;
end;
assignfile(fp,'revc.dat');
reset(fp);
readln(fp,buffer);
closefile(fp);
memo1.Lines.Add(buffer);
showmessage('success');
end;
procedure TForm1.Button5Click(Sender: TObject);
var
fh:integer;
begin
fh:=opencom(com,baud,party);
if fh<>0 then
begin
showmessage('串口已经打开!');
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
closecom();
end;
procedure TForm1.FormShow(Sender: TObject);
begin
baud:=br1200;
com:=pncom1;
party:=Even;
self.StatusBar1.Panels[3].Text:='Rs485';
self.StatusBar1.Panels[1].Text:='COM1';
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
baud:=br1200;
//com:=pncom1;
party:=EVEN;
self.StatusBar1.Panels[3].Text:='Rs485';
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
baud:=br9600;
//com:=pncom1;
party:=EVEN;
self.StatusBar1.Panels[3].Text:='东软载波';
end;
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
baud:=br2400;
//com:=pncom1;
party:=None;
self.StatusBar1.Panels[3].Text:='小程载波';
end;
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
com:=pncom1;
self.StatusBar1.Panels[1].Text:='COM1';
end;
procedure TForm1.RadioButton7Click(Sender: TObject);
begin
com:=pncom4;
self.StatusBar1.Panels[1].Text:='COM2';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -