📄 baseconvertorunit.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <vcl.h>
#include "BaseConvertorUnit.h"
#include "Base64Unit.h"
//---------------------------------------------------------------------------
TDataConvertor::TDataConvertor()
{
}
//---------------------------------------------------------------------------
TDataConvertor::~TDataConvertor()
{
}
//---------------------------------------------------------------------------
bool TDataConvertor::EnguardRoleToBuf(EnguardRole_T iRole,BYTE* oBuf,int* iBufSize)
{
*iBufSize = 384;
if (oBuf)
{
oBuf[0] = '0';
oBuf[1] = (char)iRole.BeginTime1.wHour;
oBuf[2] = (char)iRole.BeginTime1.wMinute;
oBuf[3] = (char)iRole.EndTime1.wHour;
oBuf[4] = (char)iRole.EndTime1.wMinute;
oBuf[5] = (char)iRole.BeginTime2.wHour;
oBuf[6] = (char)iRole.BeginTime2.wMinute;
oBuf[7] = (char)iRole.EndTime2.wHour;
oBuf[8] = (char)iRole.EndTime2.wMinute;
for(int i=0;i<7;i++)
oBuf[9+i] = (char)iRole.Weekend[i];
oBuf[16] = (char)(iRole.Holiday[0].Year-2000);
oBuf[17] = (char)(iRole.Holiday[0].Month);
for(int i=0;i<12;i++)
{
for(int j=0;j<31;j++)
oBuf[18+i*31+j] = (char)iRole.Holiday[i].Days[j];
}
}
return true;
}
//---------------------------------------------------------------------------
bool TDataConvertor::BufToEnguardRole(BYTE* iBuf,int iBufSize,EnguardRole_T* oRole)
{
if (iBufSize == 384)
{
oRole->RoleType = rtNoLimit;
oRole->BeginTime1.wHour = (short int)iBuf[1];
oRole->BeginTime1.wMinute = (short int)iBuf[2];
oRole->EndTime1.wHour = (short int)iBuf[3];
oRole->EndTime1.wMinute = (short int)iBuf[4];
oRole->BeginTime2.wHour = (short int)iBuf[5];
oRole->BeginTime2.wMinute = (short int)iBuf[6];
oRole->EndTime2.wHour = (short int)iBuf[7];
oRole->EndTime2.wMinute = (short int)iBuf[8];
for(int i=0;i<7;i++)
oRole->Weekend[i] = (short int)iBuf[9+i];
short int StartYear = (short int)iBuf[16] + 2000;
short int StartMonth = (short int)iBuf[17];
for(int i=0;i<12;i++)
{
if (StartMonth + i > 12)
{
oRole->Holiday[i].Year = StartYear + 1;
oRole->Holiday[i].Month = StartMonth+i-12;
}
else
{
oRole->Holiday[i].Year = StartYear;
oRole->Holiday[i].Month = StartMonth+i;
}
for(int j=0;j<31;j++)
oRole->Holiday[i].Days[j] = (short int)iBuf[18+i*31+j];
}
return true;
}
return false;
}
//---------------------------------------------------------------------------
bool TDataConvertor::EncodeData(BYTE* iInData,int iInDataSize,char* oOutData,int* oOutDataSize)
{
if (!oOutData)
return false;
*oOutDataSize = Base64Enc(oOutData,iInData,iInDataSize);
return true;
}
//---------------------------------------------------------------------------
bool TDataConvertor::DecodeData(char* iInData,int iInDataSize,BYTE* oOutData,int* oOutDataSize)
{
if (!oOutData)
return false;
int lOutDataSize = Base64Dec(oOutData,iInData,iInDataSize);
if (lOutDataSize == -1)
return false;
return true;
}
//---------------------------------------------------------------------------
AnsiString TDataConvertor::GetRoleString(char iRoleVal)
{
//得到门禁规则文字表达
AnsiString lStr;
if (iRoleVal == rtNoDefine || iRoleVal < 0 || iRoleVal == 0xff || iRoleVal>(rtHoliday+rtWeekend+rtPeriod2+rtPeriod1+rtNoLimit) )
{
return lStr;
}
else
{
if ((iRoleVal & rtNoLimit)== rtNoLimit)
{
lStr = lStr + "无限制";
}
if ((iRoleVal & rtPeriod1)== rtPeriod1)
{
lStr = lStr + "+时间段1";
}
if ((iRoleVal & rtPeriod2)== rtPeriod2)
{
lStr = lStr + "+时间段2";
}
if ((iRoleVal & rtWeekend)== rtWeekend)
{
lStr = lStr + "+周末制";
}
if ((iRoleVal & rtHoliday)== rtHoliday)
{
lStr = lStr + "+假日制";
}
if (lStr.Length() > 0)
{
if (lStr[1] == '+')
lStr = lStr.SubString(2,lStr.Length()-1);
}
}
return lStr;
}
//---------------------------------------------------------------------------
char* TDataConvertor::GetEventName(EventType_T iType)
{
char* pName = "其它事件";
switch(iType)
{
case etWorkLog: pName ="考勤记录";break;
case etAddUserOp: pName ="添加用户操作";break;
case etDelUserOp: pName ="删除用户操作"; break;
case etEditUserOp: pName ="修改用户操作";break;
case etNormalEvent: pName ="开门事件";break;
case etWarningEvent: pName ="非法进入或开门按扭";break;
case etUncloseEvent: pName ="门未关好";break;
case etDangerEvent: pName ="胁迫事件";break;
case etDeviceError: pName ="设备异常";break;
case etOperateEvent: pName ="操作事件";break;
case etOtherEvent: pName ="其它事件";break;
}
return pName;
}
//---------------------------------------------------------------------------
char* TDataConvertor::GetDeviceTypeName(DeviceType_T iDeviceType)
{
char* pName = "其它";
switch(iDeviceType)
{
case dtCOM: return "COM";
case dtIP: return "IP";
case dtUSB: return "USB";
}
return pName;
}
//---------------------------------------------------------------------------
char* TDataConvertor::GetDeviceStatusName(DeviceStatus_T iDeviceStats)
{
char* pName = "未知";
switch(iDeviceStats)
{
case dsRightStatus: return "启用";
case dsOutStatus: return "停用";
case dsOpened: return "监控";
}
return pName;
}
//---------------------------------------------------------------------------
char* TDataConvertor::GetDeviceModeName(DeviceMode_T iDeviceMode)
{
//得到设备工作模式名称
char* pName = "未知模式";
switch(iDeviceMode)
{
case dmNormalMode: return "正常工作模式";
case dmLongOpenMode: return "常开工作模式";
case dmLongCloseMode: return "常闭工作模式";
}
return pName;
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -