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

📄 dido.cpp

📁 停车场用
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DIDO.h"
#include "CBuilder.h"
#include "datetool.h"
#include "vtl.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

//获取控制器类型
char *GetCRTypeStr(int nItem)
 {
  static char *pszType[]={"SY200NT2/4","中矿主板"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszType)/sizeof(char *))
    p =pszType[nItem];
  else p=NULL;
  return(p);
 }
//使用状态
char *GetCRLinkedStr(int n)
 {
  static char *pszText[]={"已正常联线","未联线使用"};
  char *p;

  if(n==0)p=pszText[0];
  else p=pszText[1];
  return(p);
 }
//使用状态
char *GetCRUsedType(CONTROLER *t)
 {
  static char pszText[]="待删除";
  int m,n;
  char *p;

  n = GetCRPauseFlag(t);
  m = GetCRDeleteFlag(t);
  if(m)p=pszText;
  else p=GetCRLinkedStr(n);
  return(p);
 }
//获取网络标识
char *GetNetIDStr(char *pszText,DWORD nNetID,int nType)
 {
  char *p;

  pszText[0]=0;
  if(nNetID!=0){
    if(nType){//IP地址
      GetIPStr(pszText,nNetID);
     }
    else {
      p = GetCOMName(nNetID);
      if(p!=NULL)lstrcpy(pszText,p);
     }
   }
  return(pszText);
 }
//获取车道APB阶层,返回0=>为不执行APB
int GetRoadwayAPB(ROADWAY *t)
 {
  int n;
  n= t->nAPB;
  return(n);
 }
//设置车道APB阶层,返回原先设置
int SetRoadwayAPB(ROADWAY *t,int n)
 {
  int nOld;

  nOld = t->nAPB;
  t->nAPB=n;
  return(nOld);
 }
//获取卡片类型
char *GetCardType(int nItem)
 {
  static char *pszText[]={"SYRIS 32 bits R/O card",
    "SYRIS 32 bits R/W card",
    "TIRIS 64 bits R/O card",
    "TIRIS 64 bits R/W card"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取APB串
char *GetAPBType(int nItem)
 {
  static char *pszText[]=
    {"不执行APB检查","第一层","第二层","第三层"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取ReaderType串
char *GetReaderType(int nItem)
 {
  static char *pszText[]= {"Syirs R/O","Bolah"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取VideoType串
char *GetVideoType(int nItem)
 {
  static char *pszText[]= {"天敏SDK2000","Fly Video"};
  static char pszDef[]="(没有图像卡)";
  char *p;

  if(nItem==0)p=pszDef;
  else if(nItem>0 && nItem<=sizeof(pszText)/sizeof(char *))
    p=pszText[nItem-1];
  else p=NULL;
  return(p);
 }
//获取LEDType串
char *GetLEDType(int nItem)
 {
  static char *pszText[]= {"Essence LED"};
  static char pszDef[]="(没有显示屏)";
  char *p;

  if(nItem==0)p=pszDef;
  else if(nItem>0 && nItem<=sizeof(pszText)/sizeof(char *))
    p=pszText[nItem-1];
  else p=NULL;
  return(p);
 }
//获取车道图片处理方式
char *GetRoadPhotoProc(int nItem)
 {
  static char *pszText[]= {"不捕捉图片","简单捕捉图片",
           "人工比对图片","自动识别图片"};
  char *p;

  if(nItem>=0 && nItem<=sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取Roadway类型串
char *GetRoadwayType(int nItem)
 {
  static char *pszText[]=
    {"进入","外出","混合"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取收费方式
char *GetChargeType(int nItem)
 {
  static char *pszText[]={"不收费","按次收费","按时收费","按日收费",
      "按月收费","按季收费","按年收费","一次性收费"};
  char *p;

  if(nItem>=0 && nItem<sizeof(pszText)/sizeof(char *))
    p=pszText[nItem];
  else p=NULL;
  return(p);
 }
//获取带序号类型串
char *GetTypeStr(char *pszStr,int nItem,GETTYPEPROC Fun)
 {
  char *p;
  p=Fun(nItem);
  if(pszStr!=NULL){
    if(p!=NULL)wsprintf(pszStr,"%1d: %s",nItem,p);
    else pszStr[0]=0;
    p=pszStr;
   }
  return(p);
 }
//获取卡片数据表名称
char *GetCardTableName(void)
 {
  static char pszTable[]="CARDDATA";
  return(pszTable);
 }
//获取用户数据表名称
char *GetUserTableName(void)
 {
  static char pszTable[]="TC_USERDATA";
  return(pszTable);
 }
//获取持卡者数据表名称
char *GetHolderTableName(void)
 {
  static char pszTable[]="HOLDERDATA";
  return(pszTable);
 }
//获取操作帐号数据表名称
char *GetAccountTableName(void)
 {
  static char pszTable[]="TC_Account";
  return(pszTable);
 }
//获取用户收费数据表名称
char *GetPriceTableName(void)
 {
  static char pszTable[]="TC_Price";
  return(pszTable);
 }
//获取车道数据表名称
char *GetRoadwayTableName(void)
 {
  static char pszTable[]="TC_ROADWAY";
  return(pszTable);
 }
//获取控制器数据表名称
char *GetControlerTableName(void)
 {
  static char pszTable[]="TC_CONTROLER";
  return(pszTable);
 }
//获取进出数据表名称
char *GetIODataTableName(void)
 {
  static char pszTable[]="TC_IODATA";
  return(pszTable);
 }
//获取入场数据表名称
char *GetParkinTableName(void)
 {
  static char pszTable[]="TC_INRECORD";
  return(pszTable);
 }
//获取停车数据表名称
char *GetParkrecTableName(void)
 {
  static char pszTable[]="TC_RECORD";
  return(pszTable);
 }
//获取停车场数据表名称
char *GetParkTableName(void)
 {
  static char pszTable[]="TC_PARK";
  return(pszTable);
 }
//获取用户交费数据表名称
char *GetMoneyTableName(void)
 {
  static char pszTable[]="TC_MONEY";
  return(pszTable);
 }
//获取用户车辆图片字段名
char *GetCarPhotoFieldName(void)
 {
  static char pszText[]="CARPHOTO";
  return(pszText);
 }
//获取入口时车辆图片字段名
char *GetInPhotoFieldName(void)
 {
  static char pszText[]="INPHOTO";
  return(pszText);
 }
//获取出口时车辆图片字段名
char *GetOutPhotoFieldName(void)
 {
  static char pszText[]="OUTPHOTO";
  return(pszText);
 }
//获取设置用户状态位(nMode>0设置 nMode=0清除 nMode<0获取)
int SetUserStatusBit(USERDATA *t,int nBit,int nMode)
 {
  int n;

  n=t->nStatus & nBit;
  if(nMode>0)t->nStatus |= nBit; //设置
  else if(nMode==0)t->nStatus &= (~nBit);//清除
  return(n);
 }
//获取设置卡片状态位(nMode>0设置 nMode=0清除 nMode<0获取)
int SetCardStatusBit(CARDDATA *t,int nBit,int nMode)
 {
  int n;

  n=t->nStatus & nBit;
  if(nMode>0)t->nStatus |= nBit; //设置
  else if(nMode==0)t->nStatus &= (~nBit);//清除
  return(n);
 }
//获取设置控制器状态位(nMode>0设置 nMode=0清除 nMode<0获取)
int SetCRStatusBit(CONTROLER *t,int nBit,int nMode)
 {
  int n;

  n=t->nStatus&nBit;
  if(nMode>0)t->nStatus |= nBit; //设置
  else if(nMode==0)t->nStatus &= ~nBit;    //清除
  return(n);
 }
//获取设置车道状态位(nMode>0设置 nMode=0清除 nMode<0获取)
int SetRoadStatusBit(ROADWAY *t,int nBit,int nMode)
 {
  int n;

  n=t->nStatus&nBit;
  if(nMode>0)t->nStatus |= nBit; //设置
  else if(nMode==0)t->nStatus &= ~nBit;    //清除
  return(n);
 }
//获取设置停车记录状态位(nMode>0设置 nMode=0清除 nMode<0获取)
int SetParkStatusBit(PARKREC *t,int nBit,int nMode)
 {
  int n;

  n=t->nStatus&nBit;
  if(nMode>0)t->nStatus |= nBit; //设置
  else if(nMode==0)t->nStatus &= ~nBit;    //清除
  return(n);
 }
//获取用户状态文本
char *GetUserStatusText(USERDATA *pUser)
 {
  static char *pszText[]={"未领卡片","卡片已挂失",
        "未生效","已满期","已欠费"},
     pszDef[]="正常";
  int rc;
  char *p;

  p=NULL;

  rc=GetUserNormalFlag(pUser);
  if(rc)p=pszDef; //正常
  if(p==NULL){
    rc=GetUserHoldFlag(pUser);
    if(rc==0)p=pszText[0]; //卡片未领用
   }
  if(p==NULL){    //已挂失
    rc=GetUserPauseFlag(pUser);
    if(rc)p=pszText[1];
   }
  if(p==NULL){    //已欠费
    rc=GetUserMoneylessFlag(pUser);
    if(rc)p=pszText[4];
   }
  if(p==NULL){   //已满期
    rc=GetUserExpireFlag(pUser);
    if(rc)p=pszText[3];
   }
  if(p==NULL){   //未生效
    rc=GetUserEffectiveFlag(pUser);
    if(rc==0)p=pszText[2];
   }
  if(p==NULL)p=pszDef;
  return(p);
 }
//获取卡片状态文本
char *GetCardStatusText(CARDDATA *pCard)
 {
  static char *pszText[]={"未被领用","暂停使用(挂失)",
        "未生效","已满期"},
     pszDef[]="正常使用";
  int rc;
  char *p;

  p=NULL;
  if(p==NULL){
    rc=GetCardHoldFlag(pCard);
    if(rc==0||pCard->nHolderNo==0)
       p=pszText[0]; //卡片未领用
   }
  if(p==NULL){    //已挂失
    rc=GetCardPauseFlag(pCard);
    if(rc)p=pszText[1];
   }
  if(p==NULL){   //已满期
    rc=GetCardExpireFlag(pCard);
    if(rc)p=pszText[3];
   }
  if(p==NULL){   //未生效
    rc=GetCardEffectiveFlag(pCard);
    if(rc==0)p=pszText[2];
   }
  if(p==NULL) p=pszDef;
  return(p);
 }

//获取卡片最新状态
int GetCardNewStatus(void *pCard)
 {
  CARDDATA *t;
  int rc,nOld;
  DWORD nBegin,nEnd,nDate;

  t = (CARDDATA* )pCard;
  nOld = t->nStatus;
  nDate = GetDateOnNow(); //当前日期

  rc=(t->nHolderNo!=0);//是否领用
  SetCardHoldFlag(t,rc);

  rc=FALSE;
  nBegin = t->nBeginDate;//是否生效
  if(nBegin==0 || nDate>=nBegin)rc=TRUE;
  SetCardEffectiveFlag(t,rc);

  rc=FALSE;
  nEnd=t->nEndDate;   //是否满期
  if(nEnd!=0 && nDate>=nEnd && nEnd>nBegin)rc=TRUE;
  SetCardExpireFlag(t,rc);

  rc=t->nStatus;
  if(rc!=nOld)rc=TRUE;
  else rc=FALSE;
  return(rc);
 }
//获取用户最新状态
int GetUserNewStatus(void *pUser)
 {
  USERDATA *t;
  int rc,nOld,nPaid;
  DWORD nBegin,nEnd,nDate;
  float fNextPaid;

  t = (USERDATA* )pUser;
  nOld = t->nStatus;

  nDate = GetDateOnNow(); //当前日期

  rc=t->nCardNo;//是否领用卡片
  SetUserHoldFlag(t,rc);

  rc=FALSE;
  nBegin = t->nBeginDate;//是否生效
  if(nBegin==0 || nDate>=nBegin)rc=TRUE;
  SetUserEffectiveFlag(t,rc);

  rc=FALSE;
  nEnd=t->nEndDate;   //是否满期
  if(nEnd!=0 && nDate>=nEnd && nEnd>nBegin)rc=TRUE;
  SetUserExpireFlag(t,rc);

  rc=t->nStatus;
  if(rc!=nOld) rc=TRUE;
  else rc=FALSE;

  return(rc);
 }



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -