1、版本說明
本RD讀寫器軟件的版本號為version6.5
該驅動軟件適用RD系列接觸式IC卡讀寫器,SRD系列(45D041)專用讀寫器。
2、RD讀寫器的軟件組成
a. Driver 驅動軟件
b. Demo 演示軟件
c. Examples 函數調用例范
3、安裝盤安裝后的主要目錄和文件
README.TXT 版本說明
MWRD6.5\DRVER\: RD系列讀寫器驅動程序
\C.LIB\*.* C.DOS靜態函數庫
\FOXPRO.DOS\*.* FOXPRO FOR DOS 接口函數庫
\WINDOWS\*.* WINDOWS32位和16位動態庫
\UNIX\*.* UNIX動態庫
\FOXBASE\*.* FOXBASE函數庫
\DEMO.WIN\DEMO.EXE WINDOWS下操作演示軟件
\EXAMPLES\*.* 各種平臺的應用范例
MWRD5.4\: RD讀寫器兼容庫
\C.LIB C.DOS靜態函數庫
\FOXPRO.DOS FOXPRO FOR DOS接口函數庫
\WINDOWS.DLL WINDOWS32位和16位動態庫
\Ref5X.TXT 使用說明
SRDUSER.DOC SRD-E*P-45D041讀寫器用戶使用手冊
4、RD讀寫器軟件Ver6.5與Ver6.0相比修改和增加說明
a. 函數庫修改和增加說明
(1) 102卡的擦除函數ser_102(icdev,zone,offset,le),要求其偏移地址offset和
擦除長度le必須為偶數。
(2) 增加auto_init ()自適應式初始化函數。只要通訊口選擇正確,該函數將按照
輸入的波特率(或并口模式)與讀寫器建立連接。如果輸入的波特率與讀寫器
內部保存的設置值不同,則第一次初始化將需要數十秒的等待時間,且讀寫器
伴有彈卡動作。
(3) 增加對設備讀寫的兩個函數:swr_eeprom();srd_eeprom() 。利用該函數可
以將系統編號等信息直接存放在讀寫器中,便于系統的設備管理。
(4) 增加三個工具函數(C、Unix庫除外),用于ASCII碼和十六進制數據之間的轉換。
asc_hex ();
hex_asc ();
asc_asc ();
(5) 增加了CPU卡專用讀寫器的驅動函數:
int cpu_reset();
int cpu_protocol();
在 FOXPRO FOR DOS 庫中 cpu_protocol() 更名為 CPU_PTL();
注意:CPU卡讀寫器不支持115200和38400波特率。
(6) 另更正了Version6.0 版庫函數中的錯誤。
(6) 測卡函數增加了測廠商代碼為1A77的102卡。
b. 兼容庫
為了保持與舊讀寫器的兼容性,version6.5驅動程序中增加了對version5.x舊
讀寫器的兼容庫。用戶只要用此兼容庫替代舊的函數庫,不必更改原程序代碼,即可
使用RD系列的新型讀寫器。
c. DEMO演示程序
增加了對CPU卡的操作演示功能
5、新增加的庫函數使用說明 (以32位庫為例)
(1) HANDLE auto_init(_int16 port,unsigned long baud);
[說明]:初始化通訊口;
其入口參數和出口參數與ic_init( )相同。
(2)_int16 swr_eeprom(HANDLE icdev,_int16 offset,_int16 length,
unsigned char *databuff);
(3)_int16 srd_eeprom(HANDLE icdev,_int16 offset,_int16 length,
unsigned char *databuff);
[說明] 向讀寫器中寫入或讀取數據信息
參數: icdev: 設備標識符
offset: 偏移地址 0--383
length: 數據長度 1--384
databuff:存放讀、寫的數據
返回: = 0 正確
〈 0 錯誤
注:請參考Examples\VB5\Mc32_gl目錄下的使用范例。
(4) _int16 asc_hex(unsiged char *asc, unsigned char *hex ,
unsigned long length);
[說明] 將ASCII碼轉換為十六進制數據
參數: asc: 輸入要轉換的字符串
hex: 存放轉換后的字符串
length: 為轉換后的字符串長度
返回: = 0 正確
〈 0 錯誤
(5) _int16 hex_asc(unsigned char *hex, unsigned char *asc,
unsigned long length);
[說明] 將十六進制數據轉換為ASCII碼
參數: hex: 輸入要轉換的字符串
asc: 存放轉換后的字符串
length: 為要轉換的字符串長度
返回: = 0 正確
〈 0 錯誤
注:轉換后的字符串長度為2*length
(6) _int16 asc_asc(unsigned char *source, unsigned char *dest,
unsigned long length);
[說明] 字符串轉換成字符串。專為VB5 ByRef傳址方式提供的賦值函數
參數: source: 要轉換的ASCII碼字符串(聲明:Byval source as string)
dest : 轉換后的ASCII碼字符串(聲明:ByRef dest as byte)
length: 字符串的長度
返回: = 0 正確
〈 0 錯誤
注意:VB5環境下,對于ASCII值碼大于128的情況,不能正常轉換。上述三個函數中
相應的參數須聲明為ByRef傳址方式。asc_asc()是專為VB5 ByRef傳址方式提
供的賦值函數。該特殊情況下的應用請參考Examples\VB5\Mc32_gl目錄下范例。
對于其它開發環境如DELPHI3、PB5等,可以直接利用上述工具函數,將ASCII
轉換為十六進制數據,然后再寫入卡中。
(7)__int16 __stdcall cpu_reset(HANDLE icdev,unsigned char *data_buffer);
[說明] 對CPU卡復位操作
參數: icdev: 初始化返回的設備標識符
data_buffer: 復位響應返回的字符串
返回: = 0 正確
〈 0 錯誤(見錯誤代碼)
(8)__int16 __stdcall cpu_protocol(HANDLE icdev,int len,
unsigned char *send_cmd, unsigned char *receive_data);
[說明] 按照CPU卡T=1的傳輸協議向讀寫器發送命令串
參數: icdev: 初始化返回的設備標識符
send_cmd: 發給卡操作的命令串(T=1格式)
len: 命令串的長度
receive_data: CPU卡返回的數據串
返回: = 0 正確
〈 0 錯誤(見錯誤代碼)
舉例:請參考Examples目錄下的unix、VB5、VFP、VB3、C.DOS 和Foxpro.dos等例范。
6、新增CPU卡讀寫器的錯誤代碼(負數):
錯誤代碼 錯誤類型
0xcf 通訊超時
0xce 校驗位錯誤
0xcd 操作碼錯誤
0xcb 長度錯誤
0xca 校驗和錯誤
7、有關 chk_card() 函數的說明:
對于有廠商代碼的卡片,測卡的過程是調用讀卡函數,讀出廠商代碼,并與已
知的廠商代碼作比較來確定卡型。所以當使用新的廠商代碼后,測卡將失敗。故此
建議用戶自行編寫此類卡片的測卡函數。舉個例子:
AT88SC1604卡片原來的廠商代碼是 313a ,現為 303a 。則新的測卡函數如下:
short new_chk_card(icdev)
{
shor st;
unsigned char str[30];
st=srd_1604(icdev,0,0,2,str);
if(st==0)
{
if(str[0]==0x30 && str[1]==0x31)
return CARD_1604;
}
return chk_card(icdev);
}
如果用戶的系統只使用AT88SC1604卡,則return chk_card(icdev)可改為
return CARD_UNKNOWN(未知卡型); 效率更高。
有廠商代碼的卡片包括:AT88SC102,AT88SC1604,AT88SC1604B,SLE4404,
SLE4406,SLE4418,SLE4428,SLE4432,SLE4442.
- PC官方版
- 安卓官方手機版
- IOS官方手機版