📄 dido.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 + -