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官方手机版