开发底层硬件应该怎么编写接口文档
这几天在做超市RFID结算系统的上位机程序编写,用的是VB.NET。底层用的是别人开发好的SDK,为什么要写这一篇文章呢?最近因为手头设备的功能限制,我就在网上找其他的公司的RFID射频卡读写器,由于我是做上层开发,所以需要设备供应商提供底层SDK二次开发包,找了好多设备提供商 ,也跟他们索取各自提供的SDK,但总的来说,我还是觉得最先用的这个设备的厂家提供的SDK是最详细的,现在简单说明如下:
一、函数说明:
1、目录结构清晰:

2、函数返回值,参数用表格说明,清晰简洁:

3、参数类型说明详细:

4、变量在各个上位机编程环境中对应的变量类型(以VB.net为例):

5、错误码详细:
附录3. RFIDLIB API错误代码表
| 错误代码 |
描述 |
| 0 |
无错误,表示API调用成功。 |
| -1 |
未知错误 |
| -2 |
与读卡器硬件的通信失败 |
| -3 |
API的传入参数有误 |
| -4 |
API的传入参数的值不支持,如参数值只能是0-5,如果传入6那么会返回该错误。 |
| -5 |
超时,发送到读卡器的命令,在设定时间内等不到数据返回。 |
| -6 |
API申请内存失败 |
| -7 |
功能未开启 |
| -8 |
保留 |
| -9 |
保留 |
| -10 |
保留 |
| -11 |
保留 |
| -12 |
读卡器返回的数据包长度有误 |
| -13 |
保留 |
| -14 |
保留 |
| -15 |
保留 |
| -16 |
保留 |
| -17 |
读卡器返回操作失败标识数据包,可用API RDR_GetReaderLastReturnError 获取该失败的错误代码。 |
| -18 |
保留 |
| -19 |
保留 |
| -20 |
保留 |
| -21 |
Inventory的停止触发器发生,举个例子:假设设定1秒为Inventory 的最大读卡时间,如果在1秒钟内还没读完所有的标签,读卡器会终止Inventory,那么API会返回该错误告诉应用程序,可能还有标签没读完。 |
| -22 |
标签操作命令不支持 |
| -23 |
传入RDR_SetConfig或RDR_GetConfig的配置项不支持。 |
| -24 |
保留 |
| -25 |
TCP socket错误,API返回该错误表明TCP连接已断开。 |
| -26 |
应用层传入的缓冲区太小。 |
| -27 |
与读卡器返回的数据有误。 |
6、通用函数简介:
6.1. 通用函数介绍
| 序号 |
函数说明 |
介绍 |
| 1 |
COMPort_Enum |
枚举windows 操作系统已加载的串口 |
| 2 |
COMPort_GetEnumItem |
获取枚举到的串口名称 |
| 3 |
RDR_LoadReaderDrivers |
加载所有的设备驱动库 |
| 4 |
RDR_GetLoadedReaderDriverCount |
获取已加载的设备驱动的数量 |
| 5 |
RDR_GetLoadedReaderDriverOpt |
获取已加载的设备驱动的参数值,包含的参数有驱动类别,名称,ID,支持的接口类型。驱动类别分为Reader(读卡器类),MTGate(会议签到门类),LSGate(图书馆安全门类) 。 |
| 6 |
HID_Enum |
枚举已连接计算机的USB设备,需要传入设备驱动的名称。 |
| 7 |
HID_GetEnumItem |
获取已枚举到的USB设备的信息,如系列号,驱动路径等。 |
| 8 |
RDR_Open |
打开通信接口,并创建设备驱动实例。以下所有的API都需要传入驱动的实例句柄 |
| 9 |
RDR_Close |
关闭通信接口,并销毁设备驱动实例。 |
| 10 |
RDR_CreateInvenParamSpecList |
创建RDR_TagInventory的盘点参数列表的数据节点 |
| 11 |
RDR_TagInventory |
盘点在射频感应的所有标签 |
| 12 |
RDR_GetTagDataReportCount |
获取盘点到的标签数据报告的数量 |
| 13 |
RDR_GetTagDataReport |
获取盘点到的标签数据报告 |
| 14 |
RDR_TagDisconnect |
断开与标签的连接 |
| 15 |
RDR_DisconnectAllTags |
断开所有与标签的连接 |
| 16 |
RDR_GetReaderLastReturnError |
获取设备最后一次返回的错误代码 |
| 17 |
RDR_SetAcessAntenna |
设置读写天线编号。对于多天线接口的读卡器,必须先调用该函数打开要读写的标签所在的天线。 |
| 18 |
RDR_GetReaderInfor |
获取设备信息,已字符串的方式输出,信息参数的含义请查看相关设备驱动的”用户手册”。 |
| 19 |
RDR_SystemReset |
控制设备重启,该功能不是所有设备都支持,请查看相关设备驱动的”用户手册”。 |
| 20 |
RDR_LoadFactoryDefault |
控制设备恢复出厂设置,该功能不是所有设备都支持,请查看相关设备驱动的”用户手册” |
| 21 |
RDR_OpenRFTransmitter |
打开射频输出,该功能不是所有设备都支持,请查看相关设备驱动的”用户手册” |
| 22 |
RDR_CloseRFTransmitter |
关闭射频输出,该功能不是所有设备都支持,请查看相关设备驱动的”用户手册” |
| 23 |
RDR_SetCommuImmeTimeout |
使API马上超时退出,该函数可用于线程快速退出。调用了该函数之后,在线程退出之前,需要调用RDR_ResetCommuImmeTimeout恢复超时标志。 |
| 24 |
RDR_ResetCommuImmeTimeout |
恢复超时标志 |
| 25 |
RDR_GetAntennaInterfaceCount |
获取天线接口数量 |
| 26 |
RDR_GetOutputCount |
获取输出端口数量 |
| 27 |
RDR_GetOutputName |
获取输出端口名称 |
| 28 |
RDR_CreateSetOutputOperations |
创建输出端口的操作集数据节点,调用RDR_AddOneOutputOperation把输出端口的操作加入这操作集。 |
| 29 |
RDR_AddOneOutputOperation |
加入输出端口的操作 |
| 30 |
RDR_SetOutput |
根据输出端口的操作控制输出端口输出高低电平。 |
| 31 |
RDR_ConfigBlockWrite |
配置信息写操作函数 |
| 32 |
RDR_ConfigBlockRead |
配置信息读操作函数 |
| 33 |
RDR_ConfigBlockSave |
配置信息保存操作函数 |
| 34 |
RDR_CreateRS485Node |
在已打开的串口通信接口层的基础上,创建RS485的节点实例句柄。 |
| 35 |
RDR_DetectNoise |
射频噪音检测 |
| 36 |
RDR_GetGPICount |
获取通用输入端口的数量 |
| 37 |
RDR_GetGPIsStatus |
获取通用输入端口的状态 |
| 38 |
RDR_ExeSpecialControlCmd |
执行设备的特殊指令,设备支持哪些特殊指令请查阅设备的驱动的”用户手册”。 |
| 39 |
RDR_SetEventHandler |
设置事件处理器 |
| 40 |
DNODE_Destroy |
释放由动态库创建的内存,如:RDR_CreateInvenParamSpecList |
7、操作流程图

8、串口参数举例明白:

