unit COMM;interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SPComm, ExtCtrls, Buttons, ComCtrls, Menus; type TForm1 = class(TForm) Com1: TComm; Button4: TButton; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton;
Button5: TButton;
memo1: TMemo;
edRx: TEdit;
Memo2: TMemo;
Timer1: TTimer;
Label4: TLabel;
Label8: TLabel;
Button11: TButton;
Button10: TButton;
Button12: TButton;
Edit2: TEdit;
Button13: TButton;
Edit3: TEdit;
Button14: TButton;
Button15: TButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
edTx: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Label18: TLabel;
Button16: TButton;
Button7: TButton;
GroupBox3: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label16: TLabel;
Label17: TLabel;
Label19: TLabel;
Label20: TLabel;
Button8: TButton;
Button9: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Com1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
procedure Button3Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure Edit9Change(Sender: TObject);
procedure Edit10Change(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button16Click(Sender: TObject); private
{ Private declarations }
FShowText:Boolean;
FRXNum:Integer;
FTXNum:Integer;
procedure ShowRX;
procedure ShowTX;
procedure SendString(const str:string);
private { Private declarations } public { Public declarations } end; var Form1: TForm1; viewstring:string; test: string;
i:integer; rbuf,sbuf:array[0..16] of byte;
implementation
uses StrUtils;
const
minWidth=627;
minHeight=444;
idAbout =$F200;
{$R *.dfm}
//打开串口 procedure TForm1.Button1Click(Sender: TObject); begin
Com1.StopComm; Com1.StartComm; Button1.Enabled :=False; Button2.Enabled :=True; end;//关闭串口 procedure TForm1.Button2Click(Sender: TObject); begin Com1.StopComm; Button2.Enabled := False; Button1.Enabled := True;
end;
//自定义发送数据过程 procedure senddata; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 9 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0); end; procedure senddata4; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 8 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0); end;
//打开阀门
procedure TForm1.Button4Click(Sender: TObject);
Var
U:integer;
begin
test := '打开阀门';
if label15.caption='' then
begin
showmessage('请先抄表获取表号') ;
exit;
end
else
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( label15.caption)) + ($A6);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA ); {帧头}sbuf[2]:=byte($EA );sbuf[3]:=byte($07 );sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption)) ); {命令号}sbuf[5]:=byte($4F );sbuf[6]:=byte($50 );sbuf[7]:=byte($00 );sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)) ); {校验和} // StrToInt('$'+String(U))sbuf[9]:=byte($16 );senddata;{调用发送函数}form1.Button9.Click;
end;
procedure TForm1.Button10Click(Sender: TObject); begin
Form1.Memo1.Clear;
Form1.Memo2.Clear;sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($07);sbuf[4]:=byte($ff);sbuf[5]:=byte($50);sbuf[6]:=byte($46);sbuf[7]:=byte($ff);sbuf[8]:=byte($9d);sbuf[9]:=byte($16);senddata;{调用发送函数}form1.Button9.Click;
end;procedure TForm1.Button12Click(Sender: TObject);
Var
U:integer;
begin
if label15.caption= '' then
begin
showmessage('请先抄收水表表号') ;
exit;
end
else
test := '查询余额与阀门状态';
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( label15.caption)) + ($a2);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($07);sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}sbuf[5]:=byte($43);sbuf[6]:=byte($58);sbuf[7]:=byte($00);sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)));sbuf[9]:=byte($16);senddata;{调用发送函数}form1.Button9.Click;
end;
procedure TForm1.ShowRX;
begin
edRX.Text:='Rx:'+IntTostr(FRXNum);
end;procedure TForm1.ShowTX;
begin
edTx.Text:='Tx:'+IntTostr(FTXNum);
end; //定义 senddata3
procedure senddata3; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 15 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('发送失败!' ,mterror,[mbyes],0); end;//设置时间命令
procedure TForm1.Button3Click(Sender: TObject);
var
U:integer;
begin
test := '设置时间命令';
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( Edit5.text))+strtoint('$'+trim( Edit6.text))+strtoint('$'+trim( Edit7.text)) + strtoint('$'+trim( Edit8.text))+strtoint('$'+trim( Edit9.text))+strtoint('$'+trim( label15.caption)) + strtoint('$'+trim( Edit10.text))+strtoint('$'+trim( Edit11.text))+($b8);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($0d);sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}sbuf[5]:=byte($58);sbuf[6]:=byte($53);sbuf[7]:=byte(StrToInt('$'+trim( Edit5.text)));//年sbuf[8]:=byte(StrToInt('$'+trim( Edit6.text)));//月sbuf[9]:=byte(StrToInt('$'+trim( Edit7.text))); //星期sbuf[10]:=byte(StrToInt('$'+trim( Edit8.text))); //日期sbuf[11]:=byte(StrToInt('$'+trim( Edit9.text))); //时sbuf[12]:=byte(StrToInt('$'+trim( Edit10.text))); //分sbuf[13]:=byte(StrToInt('$'+trim( Edit11.text))); //秒sbuf[14]:=byte(StrToInt('$'+trim( Edit2.text))); //校验和sbuf[15]:=byte($16);senddata3;{调用发送函数}Form1.Button9.Click; end;procedure TForm1.ListBox1Click(Sender: TObject);
begin
Com1.StopComm;
Com1.CommName:=ComboBox1.Text;
Com1.StartComm;end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SPComm, ExtCtrls, Buttons, ComCtrls, Menus; type TForm1 = class(TForm) Com1: TComm; Button4: TButton; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; Button3: TButton;
Button5: TButton;
memo1: TMemo;
edRx: TEdit;
Memo2: TMemo;
Timer1: TTimer;
Label4: TLabel;
Label8: TLabel;
Button11: TButton;
Button10: TButton;
Button12: TButton;
Edit2: TEdit;
Button13: TButton;
Edit3: TEdit;
Button14: TButton;
Button15: TButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
edTx: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Label18: TLabel;
Button16: TButton;
Button7: TButton;
GroupBox3: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label16: TLabel;
Label17: TLabel;
Label19: TLabel;
Label20: TLabel;
Button8: TButton;
Button9: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Com1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
procedure Button3Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ListBox2Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure ComboBox5Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure Edit6Change(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure Edit9Change(Sender: TObject);
procedure Edit10Change(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button16Click(Sender: TObject); private
{ Private declarations }
FShowText:Boolean;
FRXNum:Integer;
FTXNum:Integer;
procedure ShowRX;
procedure ShowTX;
procedure SendString(const str:string);
private { Private declarations } public { Public declarations } end; var Form1: TForm1; viewstring:string; test: string;
i:integer; rbuf,sbuf:array[0..16] of byte;
implementation
uses StrUtils;
const
minWidth=627;
minHeight=444;
idAbout =$F200;
{$R *.dfm}
//打开串口 procedure TForm1.Button1Click(Sender: TObject); begin
Com1.StopComm; Com1.StartComm; Button1.Enabled :=False; Button2.Enabled :=True; end;//关闭串口 procedure TForm1.Button2Click(Sender: TObject); begin Com1.StopComm; Button2.Enabled := False; Button1.Enabled := True;
end;
//自定义发送数据过程 procedure senddata; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 9 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0); end; procedure senddata4; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 8 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('设备尚未就绪,请您检查设备是否连接或者串口是否打开!' ,mterror,[mbyes],0); end;
//打开阀门
procedure TForm1.Button4Click(Sender: TObject);
Var
U:integer;
begin
test := '打开阀门';
if label15.caption='' then
begin
showmessage('请先抄表获取表号') ;
exit;
end
else
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( label15.caption)) + ($A6);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA ); {帧头}sbuf[2]:=byte($EA );sbuf[3]:=byte($07 );sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption)) ); {命令号}sbuf[5]:=byte($4F );sbuf[6]:=byte($50 );sbuf[7]:=byte($00 );sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)) ); {校验和} // StrToInt('$'+String(U))sbuf[9]:=byte($16 );senddata;{调用发送函数}form1.Button9.Click;
end;
procedure TForm1.Button10Click(Sender: TObject); begin
Form1.Memo1.Clear;
Form1.Memo2.Clear;sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($07);sbuf[4]:=byte($ff);sbuf[5]:=byte($50);sbuf[6]:=byte($46);sbuf[7]:=byte($ff);sbuf[8]:=byte($9d);sbuf[9]:=byte($16);senddata;{调用发送函数}form1.Button9.Click;
end;procedure TForm1.Button12Click(Sender: TObject);
Var
U:integer;
begin
if label15.caption= '' then
begin
showmessage('请先抄收水表表号') ;
exit;
end
else
test := '查询余额与阀门状态';
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( label15.caption)) + ($a2);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($07);sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}sbuf[5]:=byte($43);sbuf[6]:=byte($58);sbuf[7]:=byte($00);sbuf[8]:=byte(StrToInt('$'+trim( Edit2.text)));sbuf[9]:=byte($16);senddata;{调用发送函数}form1.Button9.Click;
end;
procedure TForm1.ShowRX;
begin
edRX.Text:='Rx:'+IntTostr(FRXNum);
end;procedure TForm1.ShowTX;
begin
edTx.Text:='Tx:'+IntTostr(FTXNum);
end; //定义 senddata3
procedure senddata3; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 15 do begin if not form1.com1.writecommdata(@sbuf[i],1) then begin commflg:=false; break; end;
//发送时字节间的延时 sleep(2); viewstring:=viewstring+' '+inttohex(sbuf[i],2)+'';
end; viewstring:=viewstring;form1.memo2.lines.add(viewstring);form1.memo1.lines.add(''); if not commflg then messagedlg('发送失败!' ,mterror,[mbyes],0); end;//设置时间命令
procedure TForm1.Button3Click(Sender: TObject);
var
U:integer;
begin
test := '设置时间命令';
Form1.Memo1.Clear;
Form1.Memo2.Clear; U:= strtoint('$'+trim( Edit5.text))+strtoint('$'+trim( Edit6.text))+strtoint('$'+trim( Edit7.text)) + strtoint('$'+trim( Edit8.text))+strtoint('$'+trim( Edit9.text))+strtoint('$'+trim( label15.caption)) + strtoint('$'+trim( Edit10.text))+strtoint('$'+trim( Edit11.text))+($b8);
edit2.text:=IntToHex(U,2);sbuf[1]:=byte($EA); {帧头}sbuf[2]:=byte($EA);sbuf[3]:=byte($0d);sbuf[4]:=Byte(StrToInt('$'+trim( label15.caption))); {命令号}sbuf[5]:=byte($58);sbuf[6]:=byte($53);sbuf[7]:=byte(StrToInt('$'+trim( Edit5.text)));//年sbuf[8]:=byte(StrToInt('$'+trim( Edit6.text)));//月sbuf[9]:=byte(StrToInt('$'+trim( Edit7.text))); //星期sbuf[10]:=byte(StrToInt('$'+trim( Edit8.text))); //日期sbuf[11]:=byte(StrToInt('$'+trim( Edit9.text))); //时sbuf[12]:=byte(StrToInt('$'+trim( Edit10.text))); //分sbuf[13]:=byte(StrToInt('$'+trim( Edit11.text))); //秒sbuf[14]:=byte(StrToInt('$'+trim( Edit2.text))); //校验和sbuf[15]:=byte($16);senddata3;{调用发送函数}Form1.Button9.Click; end;procedure TForm1.ListBox1Click(Sender: TObject);
begin
Com1.StopComm;
Com1.CommName:=ComboBox1.Text;
Com1.StartComm;end;
解决方案 »
- 关于TreeView的问题,只有40分了,不好意思
- ActiveX 控件在IE中使用,提示DAX Access错误,请liuxiaowei (巍巍)来帮忙!
- 为什么我的delphi没有提示!救急!在线等!
- 使用vc动态库时的数据类型问题,求助!
- 多元一次方程组的解法(算法)???
- 怀念朱总理!!
- 三层,DCOM,请分析 if ClientDataSet1.UpdateStatus<>usUnModified then showmessage('有改动');这条语句为什么行不通?说usUnModified
- 问题解决不了了,求助各位大侠!
- 救救新手吧!!遇到了关于DrawGrid的Canvas问题,找了很多资料也没有一个思路,请一定帮帮我
- 这关系到delphi程序员的命运与前途。请快进入!!!!!!
- 循环读取txt
- 窗体跳转传参数。
s:string;
u:string;
t:string;
p:string;
begin
SetLength(Str,BufferLength);
move(buffer^,pchar(@Str[1])^,bufferlength);
s:=memo1.text;
begin //打开阀门
if test = '打开阀门' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'校验: '+ StrToHexStr(Str[9]) +' ' +'是否执行成功:' +StrToHexStr(Str[5])+'';
begin
p:=StrToHexStr(Str[8]);
if pos('01',p)>0 then
label20.caption:='关闭'
else if pos('00',p)>0 then
label20.caption:='打开'
else if pos('02',p)>0 then
label20.caption:='阀门传感器进水或失效'
else
label20.caption:='状态未知'
end; end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[8]);
if pos('00',p)>0 then
memo1.text:=u+' '+'阀门状态:打开'
else if pos('01',p)>0 then
memo1.text:=u+' '+'阀门状态:关闭'
else if pos('02',p)>0 then
memo1.text:=u+' '+'阀门状态:阀门传感器进水或失效'
else
memo1.text:=u+' '+'阀门状态:状态未知'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[7]);
if pos('00',p)>0 then
memo1.text:=u+' '+'电池电压:正常'
else
memo1.text:=u+' '+'电池电压:不正常'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[5]);
if pos('4F',p)>0 then
memo1.text:=u+' '+'打开阀门成功'
else
memo1.text:=u+' '+'阀门已经处于打开状态'
end;
end;
//查询余额与阀门状态
if test = '查询余额与阀门状态' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'序列号: '+ StrToHexStr(Str[5]) + StrToHexStr(Str[6]) + StrToHexStr(Str[7]) + StrToHexStr(Str[8]) +' '+'累计充值次数: '+ StrToHexStr(Str[9])+ StrToHexStr(Str[10])+' '+'校验: '+ StrToHexStr(Str[12]) +'' ;
label10.Caption:= StrToHexStr(Str[5]) ;
label11.Caption:= StrToHexStr(Str[6]) ;
label12.Caption:= StrToHexStr(Str[7]) ;
label13.Caption:= StrToHexStr(Str[8]) ;
label17.Caption:= StrToHexStr(Str[9])+StrToHexStr(Str[10]);
U:=StrToHexStr(Str[11]);
t:=memo1.text;
if pos('00',u)>0 then
memo1.text:=t+' '+'阀门状态:打开'
else if pos('01',u)>0 then
memo1.text:=t+' '+'阀门状态:关闭'
else if pos('02',u)>0 then
memo1.text:=t+' '+'阀门状态:阀门传感器进水或失效'
else if pos('03',u)>0 then
memo1.text:=t+' '+'阀门状态:状态未知'
end; //关闭阀门
if test = '关闭阀门' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'校验: '+ StrToHexStr(Str[9]) +' ' +'是否执行成功:' +StrToHexStr(Str[5])+'';
begin
p:=StrToHexStr(Str[8]);
if pos('01',p)>0 then
label20.caption:='关闭'
else if pos('00',p)>0 then
label20.caption:='打开'
else if pos('02',p)>0 then
label20.caption:='阀门传感器进水或失效'
else
label20.caption:='状态未知'
end; begin
u:=memo1.text;
P:= StrToHexStr(Str[8]);
if pos('00',p)>0 then
memo1.text:=u+' '+'阀门状态:打开'
else if pos('01',p)>0 then
memo1.text:=u+' '+'阀门状态:关闭'
else if pos('02',p)>0 then
memo1.text:=u+' '+'阀门状态:阀门传感器进水或失效'
else
memo1.text:=u+' '+'阀门状态:状态未知'
end; begin
u:=memo1.text;
P:= StrToHexStr(Str[7]);
if pos('00',p)>0 then
memo1.text:=u+' '+'电池电压:正常'
else
memo1.text:=u+' '+'电池电压:不正常'
end; begin
u:=memo1.text;
P:= StrToHexStr(Str[5]);
if pos('4F',p)>0 then
memo1.text:=u+' '+'关闭阀门成功'
else
memo1.text:=u+' '+'阀门已经处于关闭状态'
end;
end; //充值
if test = '充值' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'序列号: '+ StrToHexStr(Str[7]) + StrToHexStr(Str[8]) + StrToHexStr(Str[9]) + StrToHexStr(Str[10]) +' '+'累计水量: '+ StrToHexStr(Str[11])+ StrToHexStr(Str[12])+' '+'校验: '+ StrToHexStr(Str[13]) +' ' +'是否执行成功:' +StrToHexStr(Str[5])+'';
begin
u:=memo1.text;
P:= StrToHexStr(Str[6]);
if pos('00',p)>0 then
memo1.text:=u+' '+'阀门状态:打开'
else if pos('01',p)>0 then
memo1.text:=u+' '+'阀门状态:关闭'
else if pos('02',p)>0 then
memo1.text:=u+' '+'阀门状态:阀门传感器进水或失效'
else
memo1.text:=u+' '+'阀门状态:状态未知'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[5]);
if pos('4F',p)>0 then
memo1.text:=u+' '+'充值成功'
else
memo1.text:=u+' '+'充值失败'
end;
end; //取消充值
if test = '取消充值' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'序列号: '+ StrToHexStr(Str[7]) + StrToHexStr(Str[8]) + StrToHexStr(Str[9]) + StrToHexStr(Str[10]) +' '+'累计水量: '+ StrToHexStr(Str[11])+ StrToHexStr(Str[12])+' '+'校验: '+ StrToHexStr(Str[13]) +' ' +'是否执行成功:' +StrToHexStr(Str[5])+'' ;
begin
u:=memo1.text;
P:= StrToHexStr(Str[6]);
if pos('00',p)>0 then
memo1.text:=u+' '+'阀门状态:打开'
else if pos('01',p)>0 then
memo1.text:=u+' '+'阀门状态:关闭'
else if pos('02',p)>0 then
memo1.text:=u+' '+'阀门状态:阀门传感器进水或失效'
else
memo1.text:=u+' '+'阀门状态:状态未知'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[5]);
if pos('4F',p)>0 then
memo1.text:=u+' '+'取消充值成功'
else
memo1.text:=u+' '+'取消充值失败' end;
end;
//设置时间命令
if test = '设置时间命令' then
begin
Memo1.Text:='表号:'+StrToHexStr(Str[4])+' '+'时间: '+ StrToHexStr(Str[7]) +'年' +StrToHexStr(Str[8]) +'月'+ StrToHexStr(Str[10]) +'日 '+ '星期'+StrToHexStr(Str[9]) +' 具体时间:'+StrToHexStr(Str[11])+ '时' +StrToHexStr(Str[12])+ '分' +StrToHexStr(Str[13])+ '秒' +' '+'校验: '+ StrToHexStr(Str[13]) +'' ;
end; //抄表
if test='抄表' then
begin
label15.Caption:= StrToHexStr(Str[1]) ;
memo1.Text:='表号:'+StrToHexStr(Str[1])+' '+'水表读数:'+ StrToHexStr(Str[7])+StrToHexStr(Str[8])+' ' +'累计水量:'+ StrToHexStr(Str[9]) +StrToHexStr(Str[10])+' ' +'充值次数:'+ StrToHexStr(Str[11])+StrToHexStr(Str[12])+'';
t:=memo1.text;
u:=StrToHexStr(Str[14]);
begin
if pos('01',u)>0 then
label20.caption:='关闭'
else if pos('00',u)>0 then
label20.caption:='打开'
else if pos('02',u)>0 then
label20.caption:='阀门传感器进水或失效'
else
label20.caption:='状态未知'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[4]);
if pos('00',p)>0 then
memo1.text:=u+' '+'读表状态:正常'
else
memo1.text:=u+' '+'读表状态:不正常'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[13]);
if pos('00',p)>0 then
memo1.text:=u+' '+'电池电压:正常'
else
memo1.text:=u+' '+'电池电压:不正常'
end;
begin
u:=memo1.text;
P:= StrToHexStr(Str[14]);
if pos('00',p)>0 then
memo1.text:=u+' '+'阀门状态:打开'
else if pos('01',p)>0 then
memo1.text:=u+' '+'阀门状态:关闭'
else if pos('02',p)>0 then
memo1.text:=u+' '+'阀门状态:阀门传感器进水或失效'
else
memo1.text:=u+' '+'阀门状态:状态未知' end;
end;
end;