📄 main.pas
字号:
procedure Tfrmain.Image18Click(Sender: TObject);
begin
iClick := 6;
Setting.ShowModal;
end;
procedure Tfrmain.Image20Click(Sender: TObject);
begin
iClick := 7;
Setting.ShowModal;
end;
procedure Tfrmain.Image22Click(Sender: TObject);
begin
iClick := 8;
Setting.ShowModal;
end;
procedure Tfrmain.Label4Click(Sender: TObject);
begin
ShowMessage(IntToStr(iNum));
end;
procedure Tfrmain.N15Click(Sender: TObject);
begin
frmComm.ShowModal;
end;
procedure Tfrmain.mxBarHeaders3Buttons3Click(Sender: TObject);
begin
frmADDAC.ShowModal;
end;
procedure Tfrmain.tmrSaveTimer(Sender: TObject);
var
SThread:TSendThread;
begin
// iSave := iSave + 1;
// if iSave >= 2 then
// begin
// iSave := 0;
// end;
//Inc(tempSendCount);
if tempSendCount <> 99 then
begin
statMain.Panels[2].Text := '通信中断,请检查线路!';
if main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StopComm;
except
frmain.statMain.Panels[1].Text := '关闭串口失败';
end;
end ;
Sleep(5);
if not main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StartComm;
except
frmain.statMain.Panels[1].Text := '打开串口失败,'+ '当前串口名:'+Main.frmain.Spcomm1.CommName+',波特率为:'+IntToStr(Main.frmain.Spcomm1.BaudRate);
end;
end;
tempSendCount := 0;
end;
if WSendCount >= (WRecvCount + 5) then
begin
statMain.Panels[1].Text := '通信中断,请检查线路!';
if main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StopComm;
except
frmain.statMain.Panels[1].Text := '关闭串口失败';
end;
end ;
Sleep(5);
if not main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StartComm;
except
frmain.statMain.Panels[1].Text := '打开串口失败,'+ '当前串口名:'+Main.frmain.Spcomm1.CommName+',波特率为:'+IntToStr(Main.frmain.Spcomm1.BaudRate);
end;
end;
tempSendCount := 0;
WSendCount :=WRecvCount ;
end
else
if (tempSendCount <> 99)or(WSendCount >= (WRecvCount + 3)) or (WSendCount = 0 ) or (WRecvCount = 0 )then
begin
bSend := true;
SThread := TSendThread.Create(False);
Inc(WSendCount);
statMain.Panels[1].Text :='定时触发发送线程开始' ;
end;
end;
procedure Tfrmain.FormPaint(Sender: TObject);
begin
SendCycCommand(iNum);
//frmain.Caption := ''
statMain.Panels[3].Text := '当前用户:'+ User;
statMain.Panels[4].Text := '权限:' + Operater;
end;
procedure Tfrmain.imgFan1Click(Sender: TObject);
begin
iClick := 1;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan2Click(Sender: TObject);
begin
iClick := 2;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan3Click(Sender: TObject);
begin
iClick := 3;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan4Click(Sender: TObject);
begin
iClick := 4;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan5Click(Sender: TObject);
begin
iClick := 5;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan6Click(Sender: TObject);
begin
iClick := 6;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan7Click(Sender: TObject);
begin
iClick := 7;
frmFanWind.ShowModal;
end;
procedure Tfrmain.imgFan8Click(Sender: TObject);
begin
iClick := 8;
frmFanWind.ShowModal;
end;
procedure Tfrmain.FormDestroy(Sender: TObject);
begin
F_Login.Free;
end;
procedure Tfrmain.imgSetTemp1Click(Sender: TObject);
begin
iClick := 1;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp2Click(Sender: TObject);
begin
iClick := 2;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp3Click(Sender: TObject);
begin
iClick := 3;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp4Click(Sender: TObject);
begin
iClick := 4;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp5Click(Sender: TObject);
begin
iClick := 5;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp6Click(Sender: TObject);
begin
iClick := 6;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp7Click(Sender: TObject);
begin
iClick := 7;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgSetTemp8Click(Sender: TObject);
begin
iClick := 8;
frmSetTemp.ShowModal;
end;
procedure Tfrmain.imgRun1Click(Sender: TObject);
begin
iClick := 1;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun2Click(Sender: TObject);
begin
iClick := 2;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun3Click(Sender: TObject);
begin
iClick := 3;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun4Click(Sender: TObject);
begin
iClick := 4;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun5Click(Sender: TObject);
begin
iClick := 5;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun6Click(Sender: TObject);
begin
iClick := 6;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun7Click(Sender: TObject);
begin
iClick := 7;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.imgRun8Click(Sender: TObject);
begin
iClick := 8;
frmHotAndCold.ShowModal;
end;
procedure Tfrmain.Label58DblClick(Sender: TObject);
var
strTemp:string;
ss:string;
begin
if not Spcomm1.PortOpen then
Spcomm1.StartComm;
//try
//strTemp :='~200260E00000'+ #02 + '300' + '010101' +#03;
// strTemp :='~200160E0A006'+ '400'+'015';
strTemp :='~200160E0600A'+ '630'+'0'+'022'+'022';
// strTemp :='~200160430000';//+ '400'+'01';
// strTemp :='~200160430000';//+ '400'+'01';
strTemp :='~200160E0B005'+ '620'+'00';//+'022'+'022';
// strTemp := strTemp + BCC(strTemp);
//strTemp :=strTemp + chk(Copy(strTemp,2,(Length(strTemp)-1) ) ));
ss:=chk(Copy(strTemp,2,(Length(strTemp)-1) ) );
strTemp := strTemp + ss + #13;
if Spcomm1.WriteCommData( PChar(strTemp),Length(strTemp)) = True then
begin
ShowMessage('发送成功'+ strTemp);
end;
// mmo2.Lines.Add('发送成功'+ strTemp);
end;
procedure Tfrmain.FormShow(Sender: TObject);
begin
//ICon.Handle := LoadIcon(hIns);
MyTrayIcon.cbSize := SizeOf(TNotifyIconData);
MyTrayIcon.Wnd := Handle;
MyTrayIcon.uID := 1;
MyTrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
MyTrayIcon.uCallBackMessage := WM_MYTRAYICONCALLBACK;
MyTrayIcon.hIcon := Application.Icon.Handle;
StrCopy(MyTrayIcon.szTip,PChar('大金空调远程控制系统'));
Shell_NotifyIcon(NIM_ADD,@MyTrayIcon);
ShowWindow(Handle,sw_Hide);
Application.ShowMainForm := False;
setForegroundWindow(Application.Handle);
end;
procedure Tfrmain.WMMyTrayIconCallBack(var Msg:TMessage);
var
CursorPos:TPoint;
pM:HMENU;
begin
case Msg.LParam of
WM_LBUTTONDBLCLK : //双击消息:弹出主窗口
begin
Visible := not Visible ;
Application.ShowMainForm := Visible ;
SetForegroundWindow(Application.Handle);
end ;
WM_RBUTTONDOWN : //鼠标右键:弹出菜单
begin
GetCursorPos(CursorPos);
{ Popupmenu1.Popup(CursorPos.X,CursorPos.Y);
popupmen1里面就可以加入显示主窗口、退出等功能。这个右键菜单可以是静态的,如上面一句来弹出;也可以动态建立,如下面所示的方法:}
pM := Createpopupmenu;//建立一个Hmenu,pm:hmenu;
AppendMenu(pm,0,ord('A'),'关于....');//在指定的菜单里添加一个菜单项
AppendMenu(pm,0,Ord('B'),'&Exit');
//加入菜单事件---》处理WMCOMMAND消息即可
TrackPopupMenu(pm,Tpm_BottomAlign or Tpm_RightAlign, CursorPos.x, CursorPos.y, 0,handle,nil);
//在图标上方显示该弹出式菜单
end ;
end ;
end;
procedure Tfrmain.WMCommand(var msg:TWMCommand);
begin
case msg.itemID of
Ord('A'):showmessage('请双击打开程序');
Ord('B'):Application.Terminate;
else
inherited;
end;
end;
procedure Tfrmain.Minimize(var mess:TWMNCLButtonDown);
begin
//Visible := False;
if mess.HitTest = htReduce then
Self.Hide
else
inherited;
end;
procedure Tfrmain.edtWaringState2Change(Sender: TObject);
begin
if edtWaringState2.Text = 'OFF' then
lblWaringState2.Color := clGreen
else
if edtWaringState2.Text = 'ON' then
lblWaringState2.Color := clRed;
end;
procedure Tfrmain.edtWaringState3Change(Sender: TObject);
begin
if edtWaringState3.Text = 'OFF' then
lblWaringState3.Color := clGreen
else
if edtWaringState3.Text = 'ON' then
lblWaringState3.Color := clRed;
end;
procedure Tfrmain.edtWaringState4Change(Sender: TObject);
begin
if edtWaringState4.Text = 'OFF' then
lblWaringState4.Color := clGreen
else
if edtWaringState4.Text = 'ON' then
lblWaringState4.Color := clRed;
end;
procedure Tfrmain.edtWaringState5Change(Sender: TObject);
begin
if edtWaringState5.Text = 'OFF' then
lblWaringState5.Color := clGreen
else
if edtWaringState5.Text = 'ON' then
lblWaringState5.Color := clRed;
end;
procedure Tfrmain.edtWaringState6Change(Sender: TObject);
begin
if edtWaringState6.Text = 'OFF' then
lblWaringState6.Color := clGreen
else
if edtWaringState6.Text = 'ON' then
lblWaringState6.Color := clRed;
end;
procedure Tfrmain.edtWaringState7Change(Sender: TObject);
begin
if edtWaringState7.Text = 'OFF' then
lblWaringState7.Color := clGreen
else
if edtWaringState7.Text = 'ON' then
lblWaringState7.Color := clRed;
end;
procedure Tfrmain.edtWaringState8Change(Sender: TObject);
begin
if edtWaringState8.Text = 'OFF' then
lblWaringState8.Color := clGreen
else
if edtWaringState8.Text = 'ON' then
lblWaringState8.Color := clRed;
end;
procedure Tfrmain.N13Click(Sender: TObject);
begin
F_Register.ShowModal;
end;
procedure Tfrmain.N14Click(Sender: TObject);
begin
F_PP_Modi.ShowModal;
end;
procedure Tfrmain.tmrTCTimer(Sender: TObject);
var
iMonth:Integer;
strNow:string;
strReg:string;
begin
strNow := DateToStr(Now);
//ShowMessage(strNow);
if iReg <> 99 then
begin
with qryReg do
begin
Close;
SQL.Clear;
SQL.Add('select * from reg');
Open ;
if RecordCount = 1 then
begin
strReg := Trim(FieldByName('reg').AsString );
if strReg = 'air123456789' then
iReg := 99;
end
else
if strReg = '' then
begin
if Length(strNow) = 8 then
begin
iMonth := StrToInt( Copy(strNow,6,1));
if iMonth >= 7 then
begin
if not reg.Form1.Showing then
reg.Form1.ShowModal;
//Application.Terminate;
end;
end;
end;
end;
end;
iReadInfoCount := iReadInfoCount + 1;
iReadTransResult := iReadTransResult + 1;
iCOOPS := iCOOPS + 1;
iReadInfoCount2 := iReadInfoCount2 + 1;
iReadTransResult2 := iReadTransResult2 + 1;
iCOOPS2 := iCOOPS2 + 1;
if (iReadInfoCount = 360) then
begin
iReadInfoCount := 0;
iSaveReadInfo := 1;
end;
if ( iReadTransResult = 360) then
begin
iReadTransResult := 0;
iSaveReadTransResult := 1;
end;
if ( iCOOPS = 360) then
begin
iCOOPS := 0;
iSaveCOOPS := 1;
end;
if (iReadInfoCount2 = 360) then
begin
iReadInfoCount2 := 0;
iSaveReadInfo2 := 1;
end;
if ( iReadTransResult2 = 360) then
begin
iReadTransResult2 := 0;
iSaveReadTransResult2 := 1;
end;
if ( iCOOPS2 = 360) then
begin
iCOOPS2 := 0;
iSaveCOOPS2 := 1;
end;
end;
procedure Tfrmain.tmrSendinterrputTimer(Sender: TObject);
var
SThread:TSendThread;
begin
if main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StopComm;
except
frmain.statMain.Panels[1].Text := '关闭串口失败';
end;
end ;
Sleep(5);
if not main.frmain.Spcomm1.PortOpen then
begin
try
main.frmain.Spcomm1.StartComm;
except
frmain.statMain.Panels[1].Text := '打开串口失败,'+ '当前串口名:'+Main.frmain.Spcomm1.CommName+',波特率为:'+IntToStr(Main.frmain.Spcomm1.BaudRate);
end;
end;
Sleep(5);
bSend := true;
SThread := TSendThread.Create(False);
Inc(WSendCount);
statMain.Panels[1].Text :='中断定时触发发送线程启动!' ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -