📄 dtm.h
字号:
// 签退类型
#define COACHLOGOUT 1
#define DRIVERLOGOUT 2
#define TMPLOGOUT 3
// 定义卡类型
#define C_ADMIN 0x01
#define C_COACH 0x02
#define C_DRIVER 0x03
#define C_OFFICER 0x04
// 训练类型
#define DAYFIELD 0 // 日场训,
#define DAYROAD 1 // 日路训,
#define NIGHTFIELD 2 // 夜场训,
#define NIGHTROAD 3 // 夜路训
#define UNCERTAINED 4 // 训练类型未确定
#define MDCBT 1
#define MCDTI 2
#define MILESUM 0
#define MILECUR 1
#define TIMESUM 2
#define TIMECUR 3
// CPLD
// 0
#define CPLD_LCD_D3 8
#define CPLD_LCD_D2 4
#define CPLD_LCD_D1 2
#define CPLD_LCD_D0 1
// 2
#define CPLD_LCD_D7 8
#define CPLD_LCD_D6 4
#define CPLD_LCD_D5 2
#define CPLD_LCD_D4 1
// 4
#define CPLD_LCD_E 8
#define CPLD_LCD_DS 4
#define CPLD_LCD_CS2 2
#define CPLD_LCD_CS1 1
#define CPLD_LED_G 2
#define CPLD_LED_R 1
// 6
#define CPLD_LCD_BL 1
#define CPLD_IC_PWREN 2
#define CPLD_BEEP 8
// 8
#define CPLD_IC_DATA 1
#define CPLD_IC_CLK 2
#define CPLD_IC_RST 4
// A
#define CPLD_IC_CLK_SELECT 1 // = 0(CLK3579) 1(CPU) to IC_CLK
#define CPLD_IC_DATA_DIR 2 // = 1(Write to IC_DATA) 0(三态)
// ========== Mask for Interrupt Enable Or Disable ==========
#define IRQ2_MASK (1<<18)
#define IRQ1_MASK (1<<17)
#define IRQ0_MASK (1<<16)
#define PIOIRQ_MASK (1<<8)
#define WDIRQ_MASK (1<<7)
#define TC2IRQ_MASK (1<<6)
#define TC1IRQ_MASK (1<<5)
#define TC0IRQ_MASK (1<<4)
#define US1IRQ_MASK (1<<3)
#define US0IRQ_MASK (1<<2)
#define SWIRQ_MASK (1<<1)
#define FIQ_MASK (1<<0)
// ========== Mask for Clock Enable Or Disable ==========
#define PS_PIO_MASK (1<<8)
#define PS_TC2_MASK (1<<6)
#define PS_TC1_MASK (1<<5)
#define PS_TC0_MASK (1<<4)
#define PS_US1_MASK (1<<3)
#define PS_US0_MASK (1<<2)
// Peripheral Interface
// ========== Register definition for Power Saving ==========
#define WD_BASE 0xFFFF8000
#define MY_WD_OMR (VPint(WD_BASE)) // Over Mode Register
#define MY_WD_CRM (VPint(WD_BASE+0x04)) // Clock Mode Register
#define MY_WD_CR (VPint(WD_BASE+0x08)) // Watch Dog Control Register
#define MY_WD_SR (VPint(WD_BASE+0x0C)) // Watch Dog Status Register
// Watch Dog Interface
// ========== Watch Dog Interface ==========
#define PS_BASE 0xFFFF4000
#define MY_PS_CR (VPint(PS_BASE)) // Control Register
#define MY_PS_PCER (VPint(PS_BASE+0x04)) // Peripheral Clock Enable Register
#define MY_PS_PCDR (VPint(PS_BASE+0x08)) // Peripheral Clock Disable Register
#define MY_PS_PCSR (VPint(PS_BASE+0x0C)) // Peripheral Clock Status Register
// Parallel IO Interface
#define PIO_BASE 0xFFFF0000
#define MY_PIO_PER (VPint(PIO_BASE)) // PIO Enable Register
#define MY_PIO_PDR (VPint(PIO_BASE+0x04)) // PIO Disable Register
#define MY_PIO_PSR (VPint(PIO_BASE+0x08)) // PIO Status Register
#define MY_PIO_OER (VPint(PIO_BASE+0x10)) // PIO Output Enable Register
#define MY_PIO_ODR (VPint(PIO_BASE+0x14)) // PIO Output Disable Register
#define MY_PIO_OSR (VPint(PIO_BASE+0x18)) // PIO Output Status Register
#define MY_PIO_SODR (VPint(PIO_BASE+0x30)) // PIO Set Output Data Register
#define MY_PIO_CODR (VPint(PIO_BASE+0x34)) // PIO Clear Output Data Register
#define MY_PIO_ODSR (VPint(PIO_BASE+0x38)) // PIO Output Data StatusRegister
#define MY_PIO_PDSR (VPint(PIO_BASE+0x3C)) // PIO Pin Data Status Register
// ========== Register definition for TC0 peripheral ==========
#define MY_TC0_IDR (VPint(0xFFFE0028)) // (TC0) Interrupt Disable Register
#define MY_TC0_SR (VPint(0xFFFE0020)) // (TC0) Status Register
#define MY_TC0_RB (VPint(0xFFFE0018)) // (TC0) Register B
#define MY_TC0_CV (VPint(0xFFFE0010)) // (TC0) Counter Value
#define MY_TC0_CCR (VPint(0xFFFE0000)) // (TC0) Channel Control Register
#define MY_TC0_IMR (VPint(0xFFFE002C)) // (TC0) Interrupt Mask Register
#define MY_TC0_IER (VPint(0xFFFE0024)) // (TC0) Interrupt Enable Register
#define MY_TC0_RC (VPint(0xFFFE001C)) // (TC0) Register C
#define MY_TC0_RA (VPint(0xFFFE0014)) // (TC0) Register A
#define MY_TC0_CMR (VPint(0xFFFE0004)) // (TC0) Channel Mode Register
// ========== Register definition for TC1 peripheral ==========
#define MY_TC1_IDR (VPint(0xFFFE0068)) // (TC1) Interrupt Disable Register
#define MY_TC1_SR (VPint(0xFFFE0060)) // (TC1) Status Register
#define MY_TC1_RB (VPint(0xFFFE0058)) // (TC1) Register B
#define MY_TC1_CV (VPint(0xFFFE0050)) // (TC1) Counter Value
#define MY_TC1_CCR (VPint(0xFFFE0040)) // (TC1) Channel Control Register
#define MY_TC1_IMR (VPint(0xFFFE006C)) // (TC1) Interrupt Mask Register
#define MY_TC1_IER (VPint(0xFFFE0064)) // (TC1) Interrupt Enable Register
#define MY_TC1_RC (VPint(0xFFFE005C)) // (TC1) Register C
#define MY_TC1_RA (VPint(0xFFFE0054)) // (TC1) Register A
#define MY_TC1_CMR (VPint(0xFFFE0044)) // (TC1) Channel Mode Register
// ========== Register definition for TC2 peripheral ==========
#define MY_TC2_IDR (VPint(0xFFFE00A8)) // (TC2) Interrupt Disable Register
#define MY_TC2_SR (VPint(0xFFFE00A0)) // (TC2) Status Register
#define MY_TC2_RB (VPint(0xFFFE0098)) // (TC2) Register B
#define MY_TC2_CV (VPint(0xFFFE0090)) // (TC2) Counter Value
#define MY_TC2_CCR (VPint(0xFFFE0080)) // (TC2) Channel Control Register
#define MY_TC2_IMR (VPint(0xFFFE00AC)) // (TC2) Interrupt Mask Register
#define MY_TC2_IER (VPint(0xFFFE00A4)) // (TC2) Interrupt Enable Register
#define MY_TC2_RC (VPint(0xFFFE009C)) // (TC2) Register C
#define MY_TC2_RA (VPint(0xFFFE0094)) // (TC2) Register A
#define MY_TC2_CMR (VPint(0xFFFE0084)) // (TC2) Channel Mode Register
// 程序中使用到的结构类型
struct StruDCB {
_BYTE cFlag; // 使用标记,0=空闲,1=使用
_DWORD dwCardID; // 卡号
_BYTE cpName[128]; // 字模
_WORD wBuyTime; // 买钟总时间
_WORD wBuyDayRoadTime; // 买钟日路训时间
_WORD wBuyDayFieldTime; // 买钟日场训时间
_WORD wBuyNightRoadTime; // 买钟夜路训时间
_WORD wBuyNightFieldTime; // 买钟夜场训时间
_BYTE cYear; // 签到年份
_BYTE cMonth; // 签到月份
_BYTE cDay; // 签到日
_BYTE cHour; // 签到小时
_BYTE cMinter; // 签到分钟
_WORD wDayRoadValidTime; // 日路训有效时间
_DWORD dwDayRoadValidMile; // 日路训有效里程
_WORD wNightRoadValidTime; // 夜路训有效时间
_DWORD dwNightRoadValidMile; // 夜路训有效里程
_WORD wDayFieldValidTime; // 日场训有效时间
_DWORD dwDayFieldValidMile; // 日场训有效里程
_WORD wNightFieldValidTime; // 夜场训有效时间
_DWORD dwNightFieldValidMile; // 夜场训有效里程
_WORD wDayRoadCurTime; // 日路训当前时间
_DWORD dwDayRoadCurMile; // 日路训当前里程
_WORD wNightRoadCurTime; // 夜路训当前时间
_DWORD dwNightRoadCurMile; // 夜路训当前里程
_WORD wDayFieldCurTime; // 日场训当前时间
_DWORD dwDayFieldCurMile; // 日场训当前里程
_WORD wNightFieldCurTime; // 夜场训当前时间
_DWORD dwNightFieldCurMile; // 夜场训当前里程
_BYTE cCycleSecond; // 未区分训练类型的时间(秒)
_WORD wCyclePluse; // 未区分训练类型的脉冲数
_BYTE cCycleStopTime; // 在未区分训练类型时间内的停止次数
_BYTE cCycleMaxRunTime; // 在未区分训练类型时间内连续运行的最大时间
_WORD wCycleMaxRunPluse; // 在未区分训练类型时间内连续运行的最大脉冲数
_BYTE cTrainType; // 训练类型
_BYTE cFingerScore1; // 指纹模板1,评分
_BYTE cFingerScore2; // 指纹模板2,评分
_WORD wFingerLength1; // 指纹模板1,长度
_WORD wFingerLength2; // 指纹模板2,长度
_BYTE cCrc; // 上述所有信息的校验和
};
struct StruSPB {
_WORD wKParm; // K系数
_BYTE cVerifyCycle; // 验证指纹的时间周期
_BYTE cSpeedLimit; // 速度上限
_BYTE cSpeedLine; // 区分场地和道路训练的临界值
_BYTE cTimeCycle; // 区分训练类型的时间周期
_BYTE cpDayNightLine[12]; // 区分日训和夜训的时间临界值
_BYTE cCrc; // 校验
};
struct StruKEYAREA {
_BYTE cpEncryptKey[32]; // 加密密钥
_BYTE cpDecryptKey[32]; // 解密密钥
_BYTE cCrc; // 校验
};
struct StruCDTI {
_BYTE cSeq; // DCBT表的序号
_WORD wDayRoadValidTime; // 日路训有效时间
_DWORD dwDayRoadValidMile; // 日路训有效里程
_WORD wNightRoadValidTime; // 夜路训有效时间
_DWORD dwNightRoadValidMile; // 夜路训有效里程
_WORD wDayFieldValidTime; // 日场训有效时间
_DWORD dwDayFieldValidMile; // 日场训有效里程
_WORD wNightFieldValidTime; // 夜场训有效时间
_DWORD dwNightFieldValidMile; // 夜场训有效里程
_WORD wDayRoadCurTime; // 日路训当前时间
_DWORD dwDayRoadCurMile; // 日路训当前里程
_WORD wNightRoadCurTime; // 夜路训当前时间
_DWORD dwNightRoadCurMile; // 夜路训当前里程
_WORD wDayFieldCurTime; // 日场训当前时间
_DWORD dwDayFieldCurMile; // 日场训当前里程
_WORD wNightFieldCurTime; // 夜场训当前时间
_DWORD dwNightFieldCurMile; // 夜场训当前里程
_BYTE cCycleSecond; // 未区分训练类型的时间(秒)
_WORD wCyclePluse; // 未区分训练类型的脉冲数
_BYTE cCycleStopTime; // 在未区分训练类型时间内的停止次数
_BYTE cCycleMaxRunTime; // 在未区分训练类型时间内连续运行的最大时间
_WORD wCycleMaxRunPluse; // 在未区分训练类型时间内连续运行的最大脉冲数
_BYTE cTrainType; // 前面若干次的训练类型
_BYTE cUpdateCount; // 更新计数
_BYTE cCrc; // 校验
};
struct StruCSI {
_BYTE cStatus; // 手持机的当前状态
_BYTE cCurDCB; // 当前DCB序号,仅在训练状态下有效
_BYTE cReserve; // 保留数据
_BYTE cCrc; // 校验和
};
struct FontIdx {
_BYTE CharCode; // 字符编码
_BYTE CharType; // 字符类型
_WORD Offset; // 字符在字模数组中的偏移
};
struct StruBIEFBASEINFO {
_DWORD dwCardID; // 持卡人编号
_BYTE cpName[128]; // 持卡人姓名
_BYTE cCardType; // 卡类型
_WORD wMaxItem; // 日志总条数
_BYTE cFingerScore1; // 指纹一评分
_WORD wFingerLength1; // 指纹一长度
_BYTE cFingerScore2; // 指纹二评分
_WORD wFingerLength2; // 指纹二长度
_BYTE cpFingerMB1[LENOFMB]; // 指纹模板一
_BYTE cpFingerMB2[LENOFMB]; // 指纹模板二
_BYTE cCrc; // 校验
};
typedef struct StruBIEFBASEINFO SBIEF_1;
struct StruBIEFTRAININFO {
_DWORD dwDayFieldTotalTime; // 日道训累加时间
_DWORD dwDayFieldTotalMile; // 日道训累加里程
_DWORD dwDayRoadTotalTime; // 日场训累加时间
_DWORD dwDayRoadTotalMile; // 日场训累加里程
_DWORD dwNightFieldTotalTime; // 夜道训累加时间
_DWORD dwNightFieldTotalMile; // 夜道训累加里程
_DWORD dwNightRoadTotalTime; // 夜场训累加时间
_DWORD dwNightRoadTotalMile; // 夜场训累加里程
_WORD wCurrentItem; // 当前条数
_BYTE cCrc; // 校验
};
typedef struct StruBIEFTRAININFO SBIEF_2;
struct StruBIEFTIMEINFO {
_WORD wBuyTime; // 买钟总时间
_WORD wBuyDayFieldTime; // 买钟日场训时间
_WORD wBuyDayRoadTime; // 买钟日路训时间
_WORD wBuyNightFieldTime; // 买钟夜场训时间
_WORD wBuyNightRoadTime; // 买钟夜路训时间
_BYTE cCrc; // 校验
};
typedef struct StruBIEFTIMEINFO SBIEF_3;
struct StruCLOCK {
_BYTE cYear;
_BYTE cMonth;
_BYTE cDay;
_BYTE cHour;
_BYTE cMinter;
_BYTE cSecond;
_BYTE cWeek;
};
struct StruLOGPOOL {
_BYTE cpLogBuf[LENOFCOACHLOG];
_BYTE cFlag;
};
struct StruCPLD {
_BYTE cLCDDataL;
_BYTE cLCDDataH;
_BYTE cLCDControl;
_BYTE cCPLDAdd6;
_BYTE cCPLDAdd8;
_BYTE cCPLDAddA;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -