?? rfmodulefunc.h
字號:
#ifndef __RF_MODULE_FUNC_H__
#define __RF_MODULE_FUNC_H__
//Mifare函數返回值定義
#define MI_OK 0
#define MI_CHK_OK 0
#define MI_CRC_ZERO 0
#define MI_CRC_NOTZERO 1
#define MI_NOTAGERR 1
#define MI_CHK_FAILED 1
#define MI_CRCERR 2
#define MI_CHK_COMPERR 2
#define MI_EMPTY 3
#define MI_AUTHERR 4
#define MI_PARITYERR 5
#define MI_CODEERR 6
#define MI_SERNRERR 8
#define MI_KEYERR 9
#define MI_NOTAUTHERR 10
#define MI_BITCOUNTERR 11
#define MI_BYTECOUNTERR 12
#define MI_IDLE 13
#define MI_TRANSERR 14
#define MI_WRITEERR 15
#define MI_INCRERR 16
#define MI_DECRERR 17
#define MI_READERR 18
#define MI_OVFLERR 19
#define MI_POLLING 20
#define MI_FRAMINGERR 21
#define MI_ACCESSERR 22
#define MI_UNKNOWN_COMMAND 23
#define MI_COLLERR 24
#define MI_RESETERR 25
#define MI_INITERR 25
#define MI_INTERFACEERR 26
#define MI_ACCESSTIMEOUT 27
#define MI_NOBITWISEANTICOLL 28
#define MI_QUIT 30
#define MI_RECBUF_OVERFLOW 50
#define MI_SENDBYTENR 51
#define MI_SENDBUF_OVERFLOW 53
#define MI_BAUDRATE_NOT_SUPPORTED 54
#define MI_SAME_BAUDRATE_REQUIRED 55
#define MI_WRONG_PARAMETER_VALUE 60
#define MI_BREAK 99
#define MI_NY_IMPLEMENTED 100
#define MI_NO_MFRC 101
#define MI_MFRC_NOTAUTH 102
#define MI_WRONG_DES_MODE 103
#define MI_HOST_AUTH_FAILED 104
#define MI_WRONG_LOAD_MODE 106
#define MI_WRONG_DESKEY 107
#define MI_MKLOAD_FAILED 108
#define MI_FIFOERR 109
#define MI_WRONG_ADDR 110
#define MI_DESKEYLOAD_FAILED 111
#define MI_WRONG_SEL_CNT 114
#define MI_WRONG_TEST_MODE 117
#define MI_TEST_FAILED 118
#define MI_TOC_ERROR 119
#define MI_COMM_ABORT 120
#define MI_INVALID_BASE 121
#define MI_MFRC_RESET 122
#define MI_WRONG_VALUE 123
#define MI_VALERR 124
#define MI_SAKERR 0x46 //added by robbie
//rf Error
#define RF_OK 0
#define RF_ERR 255
//常量定義
#define ALL_CARD 1
#define IDLE_CARD 0
#define KEYA 0x00
#define KEYB 0x04
#define DECREMENT 0xc0
#define INCREMENT 0xc1
#define RESTORE 0xc2
//卡類定義
#define MIFARE_PRO 2
#define MIFARE_ONE 4
#define MIFARE_LIGHT 16
//define rf_buffer
#define SEQNR 0
#define COMMAND 1
#define STATUS 1
#define LENGTH 2
#define MODE 3
#define BCNT 3
#define ADR 3
#define SERNR 3
#define SIZE 3
#define TIME 3
#define TAGTYPE 3
#define INFO 3
#define DATA 3
#define SECNR 4
#define DATABYTES 4
#define VALUE 4
#define NKEY 5
#define AUTHMODE 7
#define ADRCHKWR 8
#define DATACHKWR 9
#define ERROR_BLOCK_VERIFY 150 //塊數據校驗出錯
#define ERROR_BUSINESS_INFO_INVALID 151 //交易信息數據非法,無法恢復
#define ERROR_BUSINESS_LIMIT_INFO_INVALID 152 //交易特別限制信息非法,無法恢復
#define ERROR_PUBLIC_MONEY_INVALID 153 //公共錢包數據非法,無法恢復
#define ERROR_NO_COMPLITE 154 //卡操作未完成,需重刷,否則有可能多扣款
#define ERROR_PARAMETER_INVALID 155 //參數無效
#define ERROR_FILL_INFO_VALID 156 //充值記錄無效
//=============================結構表定義==============================
//卡結構分配表(共16字節對應16個扇區,已劃分7個扇區)
typedef struct _CARD_STRUCT{
unsigned char cCompanyInfoSector; //公司信息扇區地址
unsigned char cCardholderInfoSector;//持卡人信息扇區地址
unsigned char cPublicMoneySector; //公共錢包區地址
unsigned char cBusinessInfoSector; //交易信息區
unsigned char cTimeCounterSector; //計時信息區
unsigned char cOrderDinnerSector; //訂餐信息區
unsigned char cBusinessLimitInfoSector; //交易特別限制信息區
unsigned char cReserve8; //備用8
unsigned char cReserve9; //備用9
unsigned char cReserve10; //備用10
unsigned char cReserve11; //備用11
unsigned char cReserve12; //備用12
unsigned char cReserve13; //備用13
unsigned char cReserve14; //備用14
unsigned char cReserve15; //備用15
unsigned char cReserve16; //備用16
}sttCardStruct;
//公司信息結構(共15字節)
typedef struct _COMPANY_INFO{
unsigned char cCompanyNumber[4]; //公司編碼
unsigned char cSubCompanyNumber[5]; //子公司編碼
unsigned char cCompanyAddressNumber[6]; //公司地址編碼
}sttCompanyInfo;
//持卡人信息結構(40字節)
typedef struct _CARDHOLDER_INFO{
unsigned char cNumber[10]; //持卡人編號
unsigned char cSerialNo[3]; //發卡流水號
unsigned char cName[16]; //持卡人姓名
unsigned char cCardType[2]; //卡類
unsigned char cActiveDate[3]; //啟用日期 YY MM DD
unsigned char cInvalidDate[3]; //有效日期 YY MM DD
unsigned char cPassword[3]; //密碼
unsigned char cState; //狀態
}sttCardholderInfo;
//充值信息結構(15字節)
typedef struct _FILL_INFO{
unsigned char cDateTime[6]; //充值日期時間,格式:YY MM DD HH MM SS
long lMoney; //充值金額
int iTimes; //充值次數
unsigned char cDeviceNo[2]; //設備編號
unsigned char cMode; //充值類別
}sttFillInfo;
//交易信息結構(29字節基本信息+15字節充值信息=44字節)
typedef struct _BUSINESS_INFO{
long lMoney; //貨幣錢包金額
unsigned int iTimes; //次錢包值
unsigned char cDate[3]; //交易日期 YY MM DD
unsigned char cIndex[3]; //交易流水號
unsigned char cDayTotalTimes; //日累計交易次數
unsigned int iMonthTotalTimes; //月累計交易次數
unsigned char cDayTotalMoney[3]; //日累計交易金額
unsigned char cMonthTotalMoney[3]; //月累計交易金額
unsigned char cLimit[8]; //8類累計交易次數
sttFillInfo stFillInfo; //充值信息
}sttBusinessInfo;
//訂餐信息結構(14字節)
typedef struct _ORDER_DINNER_INFO{
unsigned char cDateTime1[6]; //訂餐時間1
unsigned char cOrderMode1; //訂餐時間1的訂餐模式
unsigned char cDateTime2[6]; //訂餐時間2
unsigned char cOrderMode2; //訂餐時間2的訂餐模式
}sttOrderDinnerInfo;
//計時消費信息結構(12字節)
typedef struct _TIME_COUNT_INFO{
unsigned char cStartDateTime[6]; //開始時間
unsigned char cStopDateTime[6]; //結束時間
}sttTimeCountInfo;
//========================函數聲明=========================
//----------------------模塊信息函數-----------------------
//取得RfModule模塊版本號
unsigned char RfModule_GetVersion(unsigned char *Version);
//取得模塊內部信息
unsigned char mifs_get_info(unsigned char *_Info);
//------------------Mifare模塊基本操作函數-----------------
//RfModule初始化
void Rf_Init(void);
//Rf模塊重新初始化(Rf模塊內已經初始化,可不調用此函數)
unsigned char mifs_config(void);
//尋卡
//_Mode:尋卡模式,值為IDLE_CARD或ALL_CARD
//_TagType[2]: 返回尋到的卡類等值
//返回:見錯誤代碼定義
unsigned char mifs_request(unsigned char _Mode,unsigned char *_TagType);
//防沖突
//_Bcnt: 值為0-32 0為找一張最安全的卡
//_SNR[4]:返回尋到的卡系列號
//返回:見錯誤代碼定義
unsigned char mifs_anticoll(unsigned char _Bcnt,unsigned char *_SNR);
//選擇卡
//_SNR:要選取的卡系列號
//_Size: 返回選卡結果
//返回:見錯誤代碼定義
unsigned char mifs_select(unsigned char *_SNR,unsigned char *_Size);
//開始校驗密鑰(密鑰存在RC500內)
//_Mode:校驗模式,KEYA為校驗A密鑰,KEYB為校驗B密鑰
//_SecNr:要較驗的扇區0-15
unsigned char mifs_authentication(unsigned char _Mode,unsigned char _SecNr);
//直接校驗密碼(校驗最后一次選擇的卡)
//_Mode:校驗模式,KEYA為校驗A密鑰,KEYB為校驗B密鑰
//_SecNr[4]:要校驗密鑰的卡系列號
//_Key[6]: 具體密鑰
//返回:見錯誤代碼定義
unsigned char mifs_authKey(unsigned char _Mode,
unsigned char _SecNr,
unsigned char *_Key);
//加載密碼到RC500內存中
//_Mode:密鑰類別,KEYA為A密鑰,KEYB為B密鑰
//_SecNr:密鑰對應的扇區,值0-15
//_Nkey[6]: 具體密鑰
//返回:見錯誤代碼定義
unsigned char mifs_load_key(unsigned char _Mode,
unsigned char _SecNr,
unsigned char *_Nkey);
//增值操作
//_Adr:操作數據塊,值為1-62(扣除密鑰塊)
//_Value: 操作值指針,C51格式,高字節在前,低字節在后
//返回:見錯誤代碼定義
unsigned char mifs_increment(unsigned char _Adr,long *_Value);
//減值操作
//_Adr:操作數據塊,值為1-62(扣除密鑰塊)
//_Value: 操作值指針,C51格式,高字節在前,低字節在后
//返回:見錯誤代碼定義
unsigned char mifs_decrement(unsigned char _Adr,long *_Value);
//增減值操作
//_Mode:操作模式,DECREMENT減值操作,INCREMENT增值操作
//_Adr:源數據塊,值為1-62(扣除密鑰塊)
//_Value: 操作值指針,C51格式,高字節在前,低字節在后
//_Trans_Adr:目標數據據塊,值為1-62(扣除密鑰塊),
//注:目錄數據塊必須同源數據塊同一個扇區,可以同一個塊
//返回:見錯誤代碼定義
unsigned char mifs_value(unsigned char _Mode,
unsigned char _Adr,
long *_Value,
unsigned char _Trans_Adr);
//讀卡
//_Adr:要讀的塊,值0-63
//_Data[16]:返回讀出的數據
//返回:見錯誤代碼定義
unsigned char mifs_read(unsigned char _Adr,unsigned char *_Data);
//寫卡
//_Adr:要寫的塊,值1-63
//_Data[16]:返回讀出的數據
//返回:見錯誤代碼定義
unsigned char mifs_write(unsigned char _Adr,unsigned char *_Data);
//停止當前卡
//返回:見錯誤代碼定義
unsigned char mifs_halt(void);
//復位當前卡
//_Msec:延時ms
//返回:見錯誤代碼定義
unsigned char mifs_reset(unsigned char _Msec);
//關掉RC500
//返回:見錯誤代碼定義
unsigned char mifs_close(void);
//寫模塊內RC500的EEPROM
//_Adr:寫入開始地址
//_Length:寫入長度
//_Data:寫入數據
//返回:見錯誤代碼定義
unsigned char mifs_read_E2(unsigned char _Adr,
unsigned char _Length,
unsigned char *_Data);
//讀模塊內RC500的EEPROM
//_Adr:讀開始地址
//_Length:讀出長度
//_Data:讀出數據
//返回:見錯誤代碼定義
unsigned char mifs_write_E2(unsigned char _Adr,
unsigned char _Length,
unsigned char *_Data);
char SetCardApplicationSector(sttCardStruct *pstCardStruct);
char GetCardApplicationSector(sttCardStruct *pstCardStruct);
char RfIsCardIn(unsigned char CardSerialNo[]);
char ReadCompanyInfo(unsigned char CardSerialNo[],
unsigned char AuthMode,
unsigned char Key[],
sttCompanyInfo *pstCompanyInfo);
char ReadCardholderInfo(unsigned char CardSerialNo[],
unsigned char AuthMode,
unsigned char Key[],
sttCardholderInfo *pstCardholderInfo);
char ReadBusinessInfo(unsigned char CardSerialNo[],
unsigned char AuthMode,
unsigned char Key[],
sttBusinessInfo *pstBusinessInfo);
char Consume(unsigned char CardSerialNo[],
unsigned char Date[],
unsigned char Index,
long lExpenditure,
unsigned char Flag,
sttBusinessInfo *pstBusinessInfo);
char ReadOrderDinnerInfoSector(unsigned char CardSerialNo[],
unsigned char AuthMode,
unsigned char Key[],
sttOrderDinnerInfo *pstOrderDinnerInfo);
char WriteOrderDinnerInfo(unsigned char Index,
unsigned char DateTime[],
unsigned char OrderMode);
char SetCardState(unsigned char CardSerialNo[],
unsigned char AuthMode,
unsigned char Key[],
unsigned char State);
char Fill(unsigned char CardSerialNo[],
sttBusinessInfo *pstBusinessInfo);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -