// 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 HF15693_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // HF15693_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef __HF15693_H__ #define __HF15693_H__ #ifdef HF15693_EXPORTS #define HF15693_API __declspec(dllexport) #else #define HF15693_API __declspec(dllimport) #endif #define OP_RESPONSE_FLAG_ERROR 0x01 #define OP_RESPONSE_FLAG_EXTENSION 0x08 #define DATA_LEN 256 #define MAX_UID 32 #define UID_LEN 68 #define DSFID_LEN 4 #define CMD_LEN 2048 // 15693命令代码 #define CC_INVENTORY "01" #define CC_QUIET "02" #define CC_READ_SB "20" #define CC_WRITE_SB "21" #define CC_LOCK "22" #define CC_READ_MP "23" #define CC_WRITE_MP "24" #define CC_SELECT "25" #define CC_READY "26" #define CC_WRITE_API "27" #define CC_LOCK_API "28" #define CC_WRITE_DSFID "29" #define CC_LOCK_DSFID "2A" #define CC_GET_INFO "2B" #define CC_GET_SEC_STAT "2C" //命令字 #define INVENTORY 0 #define READ_SB 1 #define WRITE_SB 2 #define LOCK_B 3 #define READ_MB 4 #define WRITE_MB 5 #define QUIET 6 #define SELECT 7 #define READY 8 #define WRITE_AFI 9 #define LOCK_AFI 10 #define WRITE_DSFID 11 #define LOCK_DSFID 12 #define T15SYSTEM_INFO 13 #define MBS_STATUS 14 #define PROTOCOL 15 #define FLAG 16 #define SET 17 #ifdef __cplusplus extern "C" { #endif extern HF15693_API int t15bDataCoding /*数据编码:0 - 1/4; 1 - 1/256*/, t15bFullPower /*全功率*/, t15bSubCarrier /*副载波*/, t15bDataRate /*高数据率*/, t15bInventory /*盘点标志*/, t15bSelect /*选择标志/AFI标志*/, t15bAddress /*地址标志/槽数据标志*/, t15bOption /*可选标志*/; extern HF15693_API char t15UID[UID_LEN], t15FirstBN[3], t15NumBl[3], t15Data[DATA_LEN], t15DSFID[DSFID_LEN], t15AFI[5]; // 与字节序相关的函数,在函数内部不处理,需使用者自行处理 ////////////////////////////// //工具函数 /* * 描述:打开串口 * 输入:串口号,如若打开com1,则参数为 1 * 输出:无 * 返回:true 打开成功;false 打开失败 * 其他: */ HF15693_API bool t15portOpen(int comno); /* * 描述:关闭串口 * 输入:无 * 输出:无 * 返回:true 关闭成功;false 关闭失败 * 其他: */ HF15693_API bool t15portClose(); /* * 描述:设置协议 * 输入:无 * 输出:无 * 返回: 0 设置成功; ~0 设置失败 * 其他: */ HF15693_API int t15setProtocol(); /* * 描述:执行命令 * 输入:cmdno - 命令字 * 输出:cmdstr - 向下发出的命令字段;reply - 对命令回复的字段 * 返回:(int) 命令回复字段中的有效字节数 * 其他: */ HF15693_API int t15execute(int cmdno, char *cmdstr,char *reply); ///////////////////////////////////// /* * 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔 * 输入: str - 原字串 * 输出: str - 指向原串中提取到的子串的下一下字符, word - 提取到的子串 * 返回: 0 - 成功 , 1 - 失败 * 其他: */ HF15693_API int getXWord (char **str, char *word); /* * 描述:从一个字串中提取一个表示十六进制数字的子串,子串间以',' '[' 分隔 * 输入: str - 原字串 * 输出: word - 提取到的子串 * 返回: * 其他: */ HF15693_API int getXWord2 ( char *str, char *word); /* * 描述:更改字节序 * 输入:pin - 原字串 , lenbytes - 字串数据长度 * 输出:pout - 更改字节序后的字串 * 返回:无 * 其他:此函数会在pout后补0,使用者须保证其长度。 * 如,字串"123456" 更改字节序后变为 "563412" */ HF15693_API void t15changeByteOrder(char *pout,const char *pin,int lenbytes); /* * 描述:更改带块安全状态信息(block security status)的字串的字节序 * 输入:pin - 原字串 , lenbytes - 字串数据长度,不包含'块安全状态信息'的长度 * 输出:sbss - 原字串中的bss值 ,pout - 更改字节序后的字串 * 返回:无 * 其他:字串的存储空间由使用者保证,会在pout后补0;sbss是用字串表示的一个字节的十六进制数 */ HF15693_API void t15changeByteOrder2(char *sbss,char *pout, char *pin,int lenbytes); /* * 描述:更改字串的字节序,字串包含多个块的数据 * 输入:pin - 原字串 , numblocks - 原字串中包含的块数目 * 输出:pout - 更改字节序后的字串 * 返回:无 * 其他:每个块数据长度由pin长度和numblocks决定;会在pout后补0 */ HF15693_API void t15changeByteOrder_MB(char *pout, char *pin, int numblocks); /* * 描述:更改带块安全状态信息(block security status)的字串的字节序,字串包含多个块的数据 * 输入:pin - 原字串;lenbytes - 字串数据长度,不包含'块安全状态信息'的长度; numblocks - 原字串中包含的块数目 * 输出:mbss - 原字串中的bss值 ,pout - 更改字节序后的字串 * 返回:无 * 其他:各个块的bss依次存放于mbss中,多个块的数据依次存放于pout中 */ HF15693_API void t15changeByteOrder_MB2(char *mbss,char *pout, char *pin,int lenbytes, int numblocks); /* * 描述:解析返回的RSSI值 * 输入:字串表示的RSSI * 输出:无 * 返回:指向解析过的RSSI信息的内存块 * 其他:返回的指针指向的内存由函数分配管理 */ HF15693_API char* t15hex2rssi (char *str); /* * 描述:解析标签信息字串 * 输入:data - 原标签信息字串;flag - 标签信息标志 * 输出:(其他参数) * 返回:0 * 其他: */ HF15693_API int t15getTagSysInfo (char *data, const unsigned char flag,char *uid, char *dsfid, char *afi, char *blSize, char *numBl, char *ic); #ifdef __cplusplus } #endif #endif