開發底層硬件應該怎么編寫接口文檔
這幾天在做超市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、串口參數舉例明白: