📄 deviceopenunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "DeviceOpenUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DeviceOpenPwdInputUnit"
#pragma resource "*.dfm"
TDeviceOpenFrm *DeviceOpenFrm;
//---------------------------------------------------------------------------
__fastcall TDeviceOpenFrm::TDeviceOpenFrm(TComponent* Owner)
: TDeviceOpenPwdInputFrm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TDeviceOpenFrm::bbtnOKClick(TObject *Sender)
{
TTreeNode* lCurNode = trDevice->Selected;
if(lCurNode == NULL || lCurNode == trDevice->Items->Item[0])
{
Application->MessageBoxA("请选择要开门的设备!","提示信息",MB_OK + MB_ICONINFORMATION);
return;
}
int lDeviceID = lCurNode->StateIndex;
AnsiString lPassword = edtSetOpenPwd->Text.Trim();
int lPwd;
if(lPassword.IsEmpty())
{
Application->MessageBoxA("密码不能为空!","提示信息",MB_OK + MB_ICONWARNING);
edtSetOpenPwd->SetFocus();
return;
}
try
{
lPwd = lPassword.ToInt();
}
catch(...)
{
Application->MessageBoxA("密码必须由数字组成,请检查密码中是否有非法字符(0不能在密码开头)!","提示信息",MB_OK + MB_ICONWARNING);
return;
}
//应急开门
DeviceInfo_T aDeviceInfo;
pEventEngine = GetEventEngineInstance();
int lHandle = pEventEngine->GetDeviceHandle(lDeviceID);
if (lHandle == 0)
{
Application->MessageBoxA("连接设备失败!","提示信息",MB_OK + MB_ICONERROR);
return;
}
int lRV = pDeviceAccess->EmergencyOpen(lHandle,lPwd);
pEventEngine->ReleaseDeviceHandle(lDeviceID,lHandle);
if(lRV != OK)
{
Application->MessageBoxA("应急开门失败,可能密码不对!","提示信息",MB_OK + MB_ICONERROR);
edtSetOpenPwd->SetFocus();
return;
}
else
{
Application->MessageBoxA("应急开门成功!","提示信息",MB_OK + MB_ICONINFORMATION);
}
Close();
}
//---------------------------------------------------------------------------
void __fastcall TDeviceOpenFrm::FormCreate(TObject *Sender)
{
//初始化设备树列表
TTreeNode* pRootNode = trDevice->TopItem;
DeviceInfoArray_T aDeviceList;
pDBAccess->GetDeviceList(aDeviceList);
IterDeviceInfo_T IterDevice;
DeviceInfo_T aDeviceInfo;
for(IterDevice = aDeviceList.begin();IterDevice != aDeviceList.end();++IterDevice)
{
aDeviceInfo = *IterDevice;
if (aDeviceInfo.DeviceStatus == dsRightStatus) //只显示被启用的设备
{
TTreeNode* lNewNode = trDevice->Items->AddChild(pRootNode,aDeviceInfo.DeviceName);
lNewNode->StateIndex = aDeviceInfo.DeviceID;
lNewNode->ImageIndex = 2;
lNewNode->SelectedIndex = 3;
}
}
trDevice->FullExpand();
edtSetOpenPwd->OnChange = OnNumOnlyEditChange;
}
//---------------------------------------------------------------------------
void __fastcall TDeviceOpenFrm::trDeviceClick(TObject *Sender)
{
edtDeviceName->Text = trDevice->Selected->Text;
edtSetOpenPwd->SetFocus();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -