📄 accshow.~pas
字号:
unit ACCShow;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TfrmACCShow = class(TForm)
grpMangerNum: TGroupBox;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
edtLine0Num: TEdit;
edtLine1Num: TEdit;
edtLine2Num: TEdit;
btnConMangerNum: TButton;
grpUNITNO: TGroupBox;
lbl5: TLabel;
cbbLINENO: TComboBox;
lbl6: TLabel;
edtUnitNo: TEdit;
btnUnitNo: TButton;
grpLimit: TGroupBox;
lbl7: TLabel;
cbbLimitLineNo: TComboBox;
btnLimit: TButton;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
lbl11: TLabel;
edtColdTempLit: TEdit;
edtColdTempCol: TEdit;
edtHotTempLit: TEdit;
edtHotTempCol: TEdit;
lbl12: TLabel;
lbl13: TLabel;
edtS320F1Cxs: TEdit;
edtS320F2Cxs: TEdit;
lbl14: TLabel;
lbl15: TLabel;
lbl16: TLabel;
lbl17: TLabel;
lbl18: TLabel;
lbl19: TLabel;
lbl20: TLabel;
lbl21: TLabel;
lbl22: TLabel;
edtS320FAuto: TEdit;
edtS320HotSet: TEdit;
edtS320ColdSet: TEdit;
edtS320SendWind: TEdit;
edtS320F2: TEdit;
edtS320F1: TEdit;
edtS320TempSet: TEdit;
edtS320ChuShi: TEdit;
lbl23: TLabel;
lbl24: TLabel;
lbl25: TLabel;
lbl26: TLabel;
lbl27: TLabel;
lbl28: TLabel;
edtS320RunStateAutoSet: TEdit;
edtS320Ambient: TEdit;
edtS320AllHot: TEdit;
edtS20NEAllHotLink: TEdit;
edtS20NEAmbient: TEdit;
edtS20NEAllHot: TEdit;
edtS320RCC: TEdit;
grpComulative: TGroupBox;
lbl29: TLabel;
lbl30: TLabel;
cbbComuLineNo: TComboBox;
edtComuUnitNo: TEdit;
btnComulative: TButton;
lbl31: TLabel;
lbl32: TLabel;
lbl33: TLabel;
lbl34: TLabel;
lbl35: TLabel;
lbl36: TLabel;
lbl37: TLabel;
lbl38: TLabel;
edtSetTemp: TEdit;
edtReturnTemp: TEdit;
edtF1VavNum1: TEdit;
edtF2VavNum: TEdit;
lbl39: TLabel;
lbl40: TLabel;
lbl41: TLabel;
lbl42: TLabel;
lbl43: TLabel;
lbl44: TLabel;
lbl45: TLabel;
edtRunModel: TEdit;
edtSB400Code: TEdit;
edtSB400ContextCode: TEdit;
lbl46: TLabel;
edtSB400Attention: TEdit;
edtSB400Warmers: TEdit;
edtSB400Heating: TEdit;
edtSB400Compresspor: TEdit;
edtSB400Filte: TEdit;
edtSB400Fans: TEdit;
edtSB400RunState: TEdit;
edtSB400Waring: TEdit;
edtSB400Abnormal: TEdit;
grpResult: TGroupBox;
btnResult: TButton;
shpS410RS485: TShape;
shpS410RunModul: TShape;
shpS410HouJieAbal: TShape;
lbl47: TLabel;
lbl48: TLabel;
lbl49: TLabel;
lbl50: TLabel;
lbl51: TLabel;
lbl52: TLabel;
lbl53: TLabel;
lbl54: TLabel;
lbl55: TLabel;
lbl56: TLabel;
lbl57: TLabel;
lbl58: TLabel;
lbl59: TLabel;
shpS410TimerAbal: TShape;
shpS410CommuAbal: TShape;
shpS410FilterAbal: TShape;
shpS410Abnormal: TShape;
shpS410Line2Abal: TShape;
shpS410Line1Abal: TShape;
shpS410Line0Abal: TShape;
shpS410Line2HJAbal: TShape;
shpS410Line1HJAbal: TShape;
shpS410Line0HJAbal: TShape;
statACCShow: TStatusBar;
btn1: TButton;
btn2: TButton;
procedure btnConMangerNumClick(Sender: TObject);
procedure btnUnitNoClick(Sender: TObject);
procedure btnLimitClick(Sender: TObject);
procedure btnComulativeClick(Sender: TObject);
procedure btnResultClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmACCShow: TfrmACCShow;
implementation
{$R *.dfm}
uses
Main,SU;
function hex(c:char):Integer;
var
x:integer;
begin
if c='' then
x:=0
else if(Ord(c)>=ord('0'))and (Ord(c)<=ord('9')) then
x:=Ord(c)-Ord('0')
else if(Ord(c)>=ord('a'))and (Ord(c)<=ord('f')) then
x:=Ord(c)-Ord('a')+10
else if(Ord(c)>=ord('A'))and (Ord(c)<=ord('F')) then
x:=Ord(c)-Ord('A')+10
else
x:=-1;
Result:=x;
end;
//该函数结束1~2个字符,转换成功,输出对应十六进制的值,转换失败,输出-1
function HexToInt(S:String):Integer;
var
tmpInt1,tmpInt2:integer;
begin
if Length(S)=1 then
begin
Result:=hex(S[1]);
end
else if Length(S)=2 then
begin
tmpInt1:=hex(S[1]);
tmpInt2:=hex(S[2]);
if(tmpInt1=-1) or (tmpInt2=-1) then
Result:=-1
else
Result:=tmpInt1*16+tmpInt2;
ShowMessage(IntToStr(tmpInt1*16+tmpInt2));
end
else
Result:=-1;
end;
function mod_num(n1,n2:integer):integer;//取余数
begin
result:=n1-n1 div n2*n2
end;
function reverse(s:String):String;//取反串
Var
i,num:Integer;
st:String;
begin
num:=Length(s);
st:='';
For i:=num DownTo 1 do
Begin
st:=st+s[i];
End;
Result:=st;
end;
Function DecTobin(Value :Integer) : string;//十进制转化二进制
Var
ST,
strBin:String;
N:Integer;
Begin
ST:='';
N:=value;
While N >= 2 Do
Begin
st:=st+IntToStr(mod_num(n,2));
N := N div 2;
End;
ST:=ST + IntToStr(n);
ST:=reverse(ST);
ShowMessage('二进制:'+ST);
if Length(ST) <> 8 then
begin
case Length(ST) of
7: strBin :='0'+st;
6: strBin :='00' + st;
5: strBin :='000' + st;
4: strBin :='0000' + st;
3: strBin :='00000' + st;
2: strBin :='000000' + st;
1: strBin :='0000000' + st;
0: strBin :='00000000';
end;
Result := strBin;
end
else
Result :=ST;
End;
function StrToBin(ss:string):string;
begin
Result := DecTobin(HexToInt(ss));
end;
procedure TfrmACCShow.btnConMangerNumClick(Sender: TObject);
var
//strTemp:string;
strSendComm:string;
SUSend:TSU;
begin
SUSend := TSU.Create;
try
SUSend.StateConManagerNum ;
if SUSend.GetErrorInfo <> '命令正确' then
begin
statACCShow.SimpleText := SUSend.GetErrorInfo;
Exit;
end;
strSendComm := SUSend.GetCOmmand;
try
if not main.frmain.Spcomm1.PortOpen then
begin
main.frmain.Spcomm1.StartComm;
end;
main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
except
ShowMessage('命令发送失败!');
end;
finally
SUSend.Free;
end;
end;
procedure TfrmACCShow.btnUnitNoClick(Sender: TObject);
var
strTemp:string;
strSendComm:string;
SUSend:TSU;
begin
strTemp := cbbLINENO.Text ;
SUSend := TSU.Create;
try
SUSend.StateConUNITNO(strTemp);
if SUSend.GetErrorInfo <> '命令正确' then
begin
statACCShow.SimpleText := SUSend.GetErrorInfo;
Exit;
end;
strSendComm := SUSend.GetCOmmand;
//ShowMessage(SUSend.GetErrorInfo);
try
if not main.frmain.Spcomm1.PortOpen then
main.frmain.Spcomm1.StartComm;
main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
except
ShowMessage('命令发送失败!');
end;
finally
SUSend.Free;
end;
end;
procedure TfrmACCShow.btnLimitClick(Sender: TObject);
var
strTemp:string;
strSendComm:string;
SUSend:TSU;
begin
strTemp := cbbLimitLineNo.Text ;
SUSend := TSU.Create;
try
SUSend.StateConLimitInte(strTemp);
if SUSend.GetErrorInfo <> '命令正确' then
begin
statACCShow.SimpleText := SUSend.GetErrorInfo;
Exit;
end;
strSendComm := SUSend.GetCOmmand;
//ShowMessage(SUSend.GetErrorInfo);
try
if not main.frmain.Spcomm1.PortOpen then
main.frmain.Spcomm1.StartComm;
main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
except
ShowMessage('命令发送失败!');
end;
finally
SUSend.Free;
end;
end;
procedure TfrmACCShow.btnComulativeClick(Sender: TObject);
var
strTemp,
strTemp1:string;
strSendComm:string;
SUSend:TSU;
begin
strTemp := cbbLINENO.Text ;
strTemp1 := edtComuUnitNo.Text;
if strTemp1 = '' then
begin
ShowMessage('请输入正确地Unit No');
Exit;
end;
SUSend := TSU.Create;
try
SUSend.CollCumulativeInte(strTemp,strTemp1);
if SUSend.GetErrorInfo <> '命令正确' then
begin
statACCShow.SimpleText := SUSend.GetErrorInfo;
Exit;
end;
strSendComm := SUSend.GetCOmmand;
//ShowMessage(SUSend.GetErrorInfo);
try
if not main.frmain.Spcomm1.PortOpen then
main.frmain.Spcomm1.StartComm;
main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
except
ShowMessage('命令发送失败!');
end;
finally
SUSend.Free;
end;
end;
procedure TfrmACCShow.btnResultClick(Sender: TObject);
var
strSendComm:string;
SUSend:TSU;
begin
SUSend := TSU.Create;
try
SUSend.CollTransmittersResult ;
if SUSend.GetErrorInfo <> '命令正确' then
begin
statACCShow.SimpleText := SUSend.GetErrorInfo;
Exit;
end;
strSendComm := SUSend.GetCOmmand;
try
if not main.frmain.Spcomm1.PortOpen then
main.frmain.Spcomm1.StartComm;
main.frmain.Spcomm1.WriteCommData( PChar(strSendComm),Length(strSendComm));
except
ShowMessage('命令发送失败!');
end;
finally
SUSend.Free;
end;
end;
function BCC(strBCC: string): string;
var
i,strSum:Integer;
strResult:string;
begin
strSum := 0;
for i := 1 to Length(strBCC) do
begin
strSum := strSum + Ord(strBCC[i]);
end;
strResult := IntToHex((strSum and $0F),1);
Result := strResult;
end;
procedure TfrmACCShow.btn1Click(Sender: TObject);
var
strTemp:string;
begin
if not Main.frmain.Spcomm1.PortOpen then
Main.frmain.Spcomm1.StartComm;
strTemp := #02 + '300' + '010101' +#03; //300
strTemp := strTemp + BCC(strTemp);
Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
strTemp := #02 + '310' + 'FF' +#03; //310
strTemp := strTemp + BCC(strTemp);
Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
strTemp := #02 + '410' + '0811' +#03; //410
strTemp := strTemp + BCC(strTemp);
Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
strTemp := #02 + '320' + '2'+'B780'+'27'+'01'+'99'+'20'+'20' +#03; //320
strTemp := strTemp + BCC(strTemp);
Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
strTemp := #02 + '400' + '639'+'334'+'000000000000'+'032'+'023'+'15'+#03; //400
strTemp := strTemp + BCC(strTemp);
Main.frmain.Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp));
end;
procedure TfrmACCShow.btn2Click(Sender: TObject);
begin
ShowMessage(StrToBin('B7'));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -