📄 zlg500.h
字号:
// zlg500模块功能接口
#ifndef __ZLG500_H
#define __ZLG500_H
#include "config.h"
#ifdef __cplusplus
extern "C" {
#endif
// 功能剪裁配置
#define PCD_GET_DEV_INFO_EN 1 // 使能 获取读卡模块的信息函数
#define PCD_CONFIG_EN 1 // 使能 配置函数
#define PCD_CLOSE_EN 1 // 使能 关闭读卡芯片函数
#define PCD_LOAD_KEY_EN 1 // 使能 装载密钥函数
#define PCD_SEL_ANT_EN 1 // 使能 选择天线函数
#define PCD_CLOSE_ANT_EN 1 // 使能 关闭天线函数
#define PICC_REQUEST_EN 1 // 使能 请求卡片函数
#define PICC_ANTICOLL_EN 1 // 使能 卡片防碰撞函数
#define PICC_SELECT_EN 1 // 使能 选择卡片函数
#define PICC_HALT_EN 1 // 使能 卡片挂起函数
#define PICC_ACTIVE_TYPEA_EN 1 // 使能 激活类型A函数
#define PICC_AUTH_KEY_E2PROM_EN 1 // 使能 E2PROM验证卡片函数
#define PICC_AUTH_KEY_EN 1 // 使能 直接验证卡片函数
#define PICC_READ_BLOCK_EN 1 // 使能 读卡数据块函数
#define PICC_WRITE_BLOCK_EN 1 // 使能 写卡数据块函数
#define PICC_UL_READ_BLOCK_EN 1 // 使能 读Ultralight卡数据块函数
#define PICC_UL_WRITE_BLOCK_EN 1 // 使能 写Ultralight卡数据块函数
#define PICC_READ_VALUE_EN 1 // 使能 读值函数
#define PICC_WRITE_VALUE_EN 1 // 使能 写值函数
#define PICC_OPERATE_VALUE_EN 1 // 使能 操作值函数
#define PICC_AUTO_DETECT_EN 1 // 使能 设置自动检测卡片函数
#define PICC_RECV_DETECT_DATA_EN 1 // 使能 接收自动检测卡片数据的函数
#define PICC_READ_DETECT_DATA_EN 1 // 使能 读取自动检测卡片数据的函数
// 函数返回错误代码
#define OK 0 // 正确
#define COMM_ERR 1 // 通信出错
#define SEQ_ERR 2 // 帧号错误
#define BCC_ERR 4 // 校验错误
// 请求类型
#define REQ_STD 0x26 // 标准模式
#define REQ_ALL 0x52 // 全部模式
// 选择和防冲级别
#define SEL_CODE1 0x93 // 一级选择
#define SEL_CODE2 0x95 // 二级选择
#define SEL_CODE3 0x97 // 三级选择
// 密钥类型
#define KEYA 0x60 // A密钥
#define KEYB 0x61 // B密钥
// 数值操作类型
#define DECREMENT 0xC0 // 减少
#define INCREMENT 0xC1 // 增加
#define RESTORE 0xC2 // 恢复
// 卡协议类型
#define ISO14443A 0x00 // A型协议
#define ISO14443B 0x80 // B型协议
// 自动检测的输出模式
#define AD_SERIAL_OUT 0x01 // 串口主动输出
#define AD_INT_ENABLE 0x02 // 中断使能
#define AD_CONTINUE 0x04 // 串口输出之后继续检测
#define AD_HALT 0x08 // 最后将卡挂起
// 天线驱动模式
#define AD_ALTER_TX 0x00 // TX1,TX2交替输出
#define AD_ONLY_TX1 0x01 // 仅TX1输出
#define AD_ONLY_TX2 0x02 // 仅TX2输出
#define AD_ALL_TX 0x03 // TX1,TX2同时输出
#define AD_RFU 0x00
#define AD_RE_ENABLE 0x01
///////////////////////////////////////////////////////////////////////////////
// 设备控制函数,PCD为Proximity Coupling Device的缩写,可简单理解为“读卡器”
//
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_Init
// 描述: 初始化
// 输入参数: 无。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Init(void);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_GetDevInfo
// 描述: 获取读卡模块的描述信息
// 输入参数: nInfoSize -- 接收描述信息缓冲区pDevInfo的大小,至少16个字节。
// 输出参数: pDevInfo -- 接收描述信息的缓冲区。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_GetDevInfo(char *pDevInfo, uint8 nInfoSize);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_Config
// 描述: 配置读卡模块,配置后默认为ISO14443A方式。
// 输入参数: 无。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Config(void);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_Close
// 描述: 关闭读卡芯片。
// 输入参数: 无。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_Close(void);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_LoadKey
// 描述: 装载密钥到读卡模块,并非改变Mifare1卡内扇区的密码。模块内有
// 16个密钥区(区号0~15)可供装载,每个区分密钥A和密钥B两个,
// 总共32个密钥。装载成功后,可用该密钥对Mifare1卡进行验证。若
// 要改变Mifare1卡内的密钥,可在用原密码验证通过后,直接用写块
// 数据指令,将密钥块改写。
// 输入参数: nSectorNumber -- 装载到的密码区编号。
// nKeyType -- 密钥类型,KEYA或KEYB。
// pKey -- 6字节密钥的缓冲区指针。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_LoadKey(uint8 nSectorNumber, uint8 nKeyType, const uint8 *pKey);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_SelectAntennaTx
// 描述: 选择天线的输出方式,可同时选择两个天线输出。
// 输入参数: bEnableTx1 -- 是否选择天线1输出,0为不输出,非0为输出。
// bEnableTx2 -- 是否选择天线2输出,0为不输出,非0为输出。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_SelectAntennaTx(uint8 bEnableTx1, uint8 bEnableTx2);
///////////////////////////////////////////////////////////////////////////
// 函数名: PCD_CloseAntennaTx
// 描述: 关闭天线。
// 输入参数: nCloseTime -- 关闭天线的时间,以ms为单位,0表示永远关闭,
// 直到接收到下一个请求才打开。
// 输出参数: 无。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PCD_CloseAntennaTx(uint8 nCloseTime);
///////////////////////////////////////////////////////////////////////////////
// ISO14443A命令函数,PICC为Proximity IC Card的缩写,可简单理解为“IC卡”
//
///////////////////////////////////////////////////////////////////////////
// 函数名: PICC_Request
// 描述: 请求卡片。卡进入天线后,从射频场中获取能量,从而得电复位,
// 复位后卡处于IDLE模式,用两种请求模式的任一种去请求,卡片
// 均能响应;若对某一张卡成功进行了挂起操作(Halt命令),
// 则进入了Halt模式,此时的卡只响应ALL模式的请求,除非将卡移
// 开天线感应区后再进入。
// 注意:对Mifare1卡连续进行请求操作,总是一次成功,一次失败,循环往复
// 输入参数: nRequestMode -- 请求模式,分标准模式(REQ_STD)和全部模式(REQ_ALL)两种。
// 输出参数: pCardType -- 卡片的类型指针。
// 返回值: OK——成功;其它——失败。
///////////////////////////////////////////////////////////////////////////
uint8 PICC_Request(uint8 nRequestMode, uint16 *pCardType);
///////////////////////////////////////////////////////////////////////////
// 函数名: PICC_Anticoll
// 描述: 防碰撞。
// 输入参数: nSelectCode -- 选择码,可为一级(SEL_CODE1)、二级(SEL_CODE2)
// 和三级(SEL_CODE3)。
// 输出参数: pCardSN -- 卡片序列号指针。
// 返回值: OK——成功;其它——失败。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -