最新125KHz射频卡读写器动态连接库开发使用说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

125K H z射频卡读写器动态连接库开发使用
说明
125KHz 射频卡读写器动态连接库开发使用说明
第一部份:读写器初始化函数。

函数名:int WINAPI Open_Serial_Port(short int PortName,long DataRate)
功能:初始化与读写卡器的通讯.新版本读写器,支持Open_Device函数调用。

可以调用Open_Device函数,自动搜索连接的串口设备。

并且支持串口号到COM32,所以建议使用Open_Device函数替代该函数。

入口参数:PortName是指向通讯口名字的指针.
通讯口名字可为:
1:COM1
2:COM2
3:COM3
4:COM4
DataRate设置通讯波特率。

(取值如下:)
9600
19200
38400
28800
57600
115200
返回值:函数返回‘0’表示操作成功,返回其他值说明执行错误。

(详细错误信息见错误信息说明
说明:此函数完成通讯口的初始化。

在进行一切读写卡的操作之前必须调用此函数。

必须和ClosePort成对使用。

读写器使用19200的波特率!!
参照:
函数名:int WINAPI Close_Serial_Port(short int PortName)
功能:关闭用OpenPort打开的通讯口,结束通讯。

入口参数:PortName是指向通讯口名字的指针
通讯口名字可为:
1:COM1
2:COM2
3:COM3
4:COM4
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明
说明:完成通讯口的关闭。

在结束读写卡程序时必须调用此函数。

必须和OpenPort
成对使用。

在最新的版本中该函数的参数没有意义,可以是
任何值,但不能省略。

函数只是关闭当前使用的串口。

参照:OpenPort, SelectPort, PowerOn, PowerOff, 一般函数的返回值
函数名:int WINAPI Open_Device()
功能:自动检测连接的设备,检测到以后返回正确,否则提示错误。

参数:无
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明。

参照:OpenPort, SelectPort
函数名:int WINAPI SelectPort(short int PortName)
功能:当在同一台电脑上打开多个串口时,使用该函数在各个串口间进行切换。

一台电脑最多允许连接4台独立的读写器,分别对应COM1,
COM2,COM3,COM4。

编制应用程序的时候可以一次打开所有的串
口,然后用该函数在各个串口连接的读写器之间切换。

同一时间只能
和一台指定的读写交换数据。

多台读写器同时使用时请注意彼此间的
距离,应大于30公分避免彼此的干扰。

入口参数:PortName是指向通讯口名字的指针
通讯口名字可为:
1:COM1
2:COM2
3:COM3
4:COM4
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明
说明:完成通讯口的关闭。

在结束读写卡程序时必须调用此函数。

必须和OpenPort
成对使用.部分版本的读写器不支持该功能。

参照:OpenPort, SelectPort 一般函数的返回值。

函数名:int WINAPI Beep_Option();
功能:蜂鸣器鸣叫一声。

入口参数:无
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明。

参照:
函数名:int WINAPI Led_Option()
功能:LED指示灯闪烁。

入口参数:无
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明。

参照:
函数名:int WINAPI Open_Mod();
功能:给天线供电,允许读写卡。

入口参数:无
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明,部分版本的读写器不支持该功能。

参照:Close_Mod
函数名:int WINAPI Close_Mod();
功能:切断天线电源,不允许读写卡。

入口参数:无
返回值:函数返回‘0’表示执行正确,返回其他值则执行错误(详细错误说明见错误信息说明,部分版本的读写器不支持该功能。

参照:Open_Mod
第二部份 RF256卡读写函数
函数名:int WINAPI RF_256_Read_ID(char *Result)
功能:读取RF256卡的ID识别号。

该函数只支持4个字节的ID。

如果用户需要使用更长的ID的卡片,可以使用RF256_Read_ID_New函数。

该函数支持不定长的ID号。

入口参数: Result: 指向数据缓冲区的地址指针,数据缓冲区在调用函数前由用户程序申请。

出口参数:函数返回0表成功,Result执行的缓冲区存放读取的数据否则为错
误代码(详细错误见错误说明)。

说明:
参考:RF256_Read_ID_New
函数名:int WINAPI RF256_Read_ID_New(char *RLength,char *Result) 功能:读取RF256卡的ID识别号。

入口参数: Result: 指向数据缓冲区的地址指针,数据缓冲区在调用函数前
由用户程序申请。

Rlength: 返回实际读取的卡ID的长度。

RF256-12卡最多支持4--
16个字节的ID号。

出口参数:函数返回0表成功,Result执行的缓冲区存放读取的数据否则为错
误代码(详细错误见错误说明)。

说明:
参考:RF256_Read_ID
函数名:int WINAPI RF_256_Read_Zone(short int Address,char *Result) 功能:读取RF256卡的数据区数据。

入口参数: Address: 读取数据的数据块号。

(0----7)。

每块儿数据为4个字节
Result: 指向数据缓冲区的地址指针,数据缓冲区在调用函数前
由用户程序申请。

出口参数:函数返回0表成功,Result执行的缓冲区存放读取的数据,否则
为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI RF_256_Stop_Card()
功能:禁止射频卡向外发送数据。

RF256-12卡被
入口参数:
出口参数:函数返回0表示成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI RF_256_Write_Card(short int Address,char *Data) 功能:向RF256卡的数据区写入数据。

入口参数: Address: 写入数据的数据块号。

(0----9)其中第8块数据不能使用该函数写入。

BLOCK0:卡ID号。

BLOCK1---BLOCK7:用户数据区。

BLOCK8:卡功能配置区。

BLOCK9:卡密码区。

Data: 指向数据缓冲区的地址指针,数据缓冲区存放要写入的数
据。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI RF_256_Config_Card(char *Data,char *Result)
功能:向RF256卡的配置区写入数据。

更新卡的配置修改卡的功能设置。

(配置字的内容参考RF256卡的资料)注意:这里说的配置区
的数据是实际的配置数据区中的和配置有关的3个字节的数据。

入口参数: Data: 指向数据缓冲区的地址指针,数据缓冲区存放要写入的数据(3个字节)。

Result:返回实际卡的配置。

(应该与Data内容相同才对)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI RF_256_Change_Password(char *Data)
功能:修改卡的密码。

入口参数: Data: 指向数据缓冲区的地址指针,数据缓冲区存放要写入的密码4字节。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:在加密功能启用的时候该函数要在比较密码操作后再进行。

参考: RF_256_Check_Password
函数名:int WINAPI RF_256_Check_Password(char *Data)
功能:比较加密的卡的密码。

入口参数: Data: 指向数据缓冲区的地址指针,数据缓冲区存放卡密码4字节。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI RF_256_Lock_Card(short int Address)
功能:锁定指定地址的数据块。

入口参数: Address: 要锁定的数据块编号(0----7)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
第三部份 TEMIC E5551卡读写函数
函数名:
int WINAPI E5550_Read(short int Length,short int AorBit,char
*Password,char *Result);
功能:读取射频卡中的数据。

入口参数: Length: 读取的数据块数(每块4字节,具体内容参考
E5550卡的技术文档)
AorBit: 设置是否使用AOR模式读卡。

使用AOR模式时先比较密码
后读取数据。

0:不使用AOR模式; 1:使用AOR模式
Password: 4个字节的卡密码区地址指针。

(使用AOR模式时有用)。

Result: 指向数据缓冲区的地址指针,数据缓冲区在调用
函数前由用户程序申请。

出口参数:函数返回0表成功,Result指向的缓冲区存储读取的数据,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5550_Write_Free(short int Address,short int Lockbit,char *Data);
功能:向射频卡中写入数据(不加密)。

入口参数: Address: 写入数据的数据块号
LockBit: 是否在写入同时将该数据块数据锁定,如果锁定该块数据
将不能再进行修改。

该参数为0则不锁定数据块,如果该
参数为1则锁定数据。

Data: 要写入射频卡的数据内容(4字节)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:
int WINAPI E5550_Write_Pwd(short int Address,short int LockBit,char *Password,char *Data);
功能:向射频卡中写入数据(写加密卡)。

入口参数: Address: 写入数据的数据块号
LockBit: 是否在写入同时将该数据块数据锁定,如果锁定该块数据
将不能再进行修改。

该参数为0则不锁定数据块,如果该
参数为1则锁定数据。

Password: 4个字节的卡密码区地址指针。

Data: 要写入射频卡的数据内容(4字节)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5550_Aor(char *Password);
功能:使用密码唤醒使用AOR模式进行读加密的射频卡。

入口参数: Password: 4个字节的卡密码区地址指针。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5550_Stop();
功能:禁止射频卡向外发送数据。

入口参数:
出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
第四部分 E5557卡读写函数
函数名:int WINAPI E5557_Read_Free(short int Length,char *Result); 功能:读取E5557卡的数据(连续)。

该函数需要卡片工作在默认模式下,循环向外发送数据。

循环发送的数据块数由卡配置区设置。

入口参数:Length:读取的数据的块数,该参数的长度应小于卡片当前循环发送的数据块的个数。

如果卡片在一次直接地址读操作或一次写卡操作
以后,卡片会循环发送刚刚操作过的那个数据块的数据(该参数只能
是“1”)。

Result:读回的数据保存在此地址指针对应的缓冲区内。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:该函数只是按照命令要求解码指定长度的数据。

参考:
函数名:int WINAPI E5557_Write_Free(short int Page_Num,short int Block_Num,short int LockBit,char *Data);
功能:向射频卡中写入数据(不加密)。

入口参数: Page_Num:写入数据所在的数据页地址。

对于E5557卡该参数的取值范围应该为1(厂商代码区)或者为0(用户数据区)。

Block_Num: 写入数据的数据块号(对第
LockBit: 是否在写入同时将该数据块数据锁定,如果锁定该块数据
将不能再进行修改。

该参数为0则不锁定数据块,如果该
参数为1则锁定数据。

Data: 要写入射频卡的数据内容(4字节)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5557_Write_Pwd(short int Page_Num,short int Block_Num,short int LockBit,char *Password,char *Data);
功能:向射频卡中写入数据(加密)。

入口参数: Page_Num:写入数据所在的数据页地址。

对于E5557卡该参数的取值范围应该为1(厂商代码区)或者为0(用户数据区)。

Block_Num: 写入数据的数据块号(对第
LockBit: 是否在写入同时将该数据块数据锁定,如果锁定该块数据
将不能再进行修改。

该参数为0则不锁定数据块,如果该
参数为1则锁定数据。

Password:卡密码。

Data: 要写入射频卡的数据内容(4字节)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5557_Aor(char *Password);
功能:使用密码唤醒使用AOR模式进行读加密的射频卡。

入口参数:Password: 4个字节的卡密码区地址指针。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5557_Direct_Read(short int Page_Num,short int Block_Num,short int AorBit,char *Password,char *Result);
功能:读取E5557卡中指定数据页,指定数据区的数据。

入口参数: Page_Num:读取数据所在的数据页地址。

对于E5557卡该参数的取值范围应该为1(厂商代码区)或者为0(用户数据区)。

Block_Num: 读取数据的数据块号。

AorBit: 是否在读取之前先用密码唤醒卡片。

该参数为0则不唤醒
卡片,如果该参数为1则唤醒卡片。

Password:卡密码。

Result: 读出的指定数据块的数据(4字节)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5557_Select_Page(short int Page_Num);
功能:选择卡片当前的工作数据页。

选择数据页0则卡片循环发送厂商数据页的数据。

选择数据页1则循环发送用户数据区的数据。

发送数据
的长度由配置区中的参数设定。

入口参数: Page_Num:写入数据所在的数据页地址。

对于E5557卡该参数的取值范围应该为1(厂商代码区)或者为0(用户数据区)。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
函数名:int WINAPI E5557_Reset_Card();
功能:卡片复位,使卡片返回上电时的工作状态。

入口参数:无
出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
第五部分 EM卡读卡函数
函数名:int WINAPI Read_EM_Card(char *Data);
功能:读取H4001卡数据
入口参数:Data:读取数据保存在这个缓冲区中。

出口参数:函数返回0表成功,否则为错误代码(详细错误见错误说明)。

说明:
参考:
第六部分补充函数
为使用不同用户使用不同开发工具的需要。

我们在动态库中添加了一组卡片操作函数。

这一组函数的函数名是在原有函数的基础上加后缀“_Str”。

所有函数和其对应的原型函数的功能相同。

所不同的是函数的参数中和数据相关的部分(数据、密码等),经过处理。

要以字符串的方式传递参数。

这样比较适合使用不支持字符数组的高级语言开发应用的用户(比如visual foxpro 等)。

这里不再详细的列举每个函数的功能,只是提供一个函数的列表。

详细的功能描述清参考各个函数对应的原型函数的描述。

Int WINAPI RF256_Read_ID_Str(char *Result,char *RLength);
int WINAPI RF256_Read_Zone_Str(short int Address,char *Result);
int WINAPI RF256_Write_Card_Str(short int Address,char *Data);
int WINAPI RF256_Config_Card_Str(char *Data,char *Result);
int WINAPI RF256_Change_Password_Str(char *Data);
int WINAPI RF256_Check_Password_Str(char *Data);
int WINAPI Read_EM_Card_Str(char *Data);
int WINAPI Build_EM_Card_Str(char *Data);
int WINAPI E5550_Read_Str(short int Length,short int AorBit,char
*Password,char *Result);
int WINAPI E5550_Write_Free_Str(short int Address,short int Lockbit,char *Data);
int WINAPI E5550_Write_Pwd_Str(short int Address,short int LockBit,char *Password,char *Data);
int WINAPI E5550_Aor_Str(char *Password);
int WINAPI E5557_Read_Free_Str(short int Length,char *Result);
int WINAPI E5557_Write_Free_Str(short int Page_Num,short int
Block_Num,short int LockBit,char *Data);
int WINAPI E5557_Write_Pwd_Str(short int Page_Num,short int
Block_Num,short int LockBit,char *Password,char *Data);
int WINAPI E5557_Aor_Str(char *Password);
int WINAPI E5557_Direct_Read_Str(short int Page_Num,short int Block_Num,short int AorBit,char *Password,char *Result);
第七部份错误代码说明
错误编码错误说明
-123 "选择了错误的串口名称!"。

-124 "申请串口资源错误!"。

-125 "设置串口状态错!"。

-126 "申请串口IO缓冲区错误!"。

-127 "清除串口缓冲区数据错!"。

-128 "设置出口触发事件掩码错误!"。

-129 "设置超时限界时限错!"。

-130 "清除串口错误时出错!"。

-131 "没有安装指定的串口设备!"。

-132 "获取串口设备控制块错误!"。

-133 "申请的串口设备正被其他用户使用!"。

-134 "释放串口设备错误!"。

-135 "选择未打开的串口句柄!"。

-136 "没有可以使用的串口设备句柄!请先打开指定的串行通讯端口后重试!"。

-137 "读卡起始地址错误!"。

-138 "发送数据错误!"。

-140 "接收数据超时错误!"。

-143 "读写器接收数据校验错!"。

-144 "读写卡错误(IC卡无反应)!"。

-145 "读写器中无卡!"。

-146 "发送非法的命令!"。

-147 "发生未知的错误!"。

-148 "串口缓冲区溢出!"。

-152 "接收数据校验错!"。

-156 "设备工作超时!"。

-157 "设备无应答!"。

-158 "设备接收到错误的命令!"。

-159 "设备等待超时!"。

-160 "设备返回错误代码!"。

-162 "设备发送数据错误!"。

-163 "设备接收数据错误!"。

-164 "数据转换错误!"
-165 "数据转换错误!"
-168 "写数据校验错误!"
0“操作成功!”。

其他 "读写器返回未知错误!"。

相关文档
最新文档