⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baseconvertorunit.cpp

📁 指纹门禁机管理系统
💻 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 + -