MUR100上位机库函数及演示软件使用说明精Word格式文档下载.docx
- 文档编号:22100547
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:18
- 大小:129.14KB
MUR100上位机库函数及演示软件使用说明精Word格式文档下载.docx
《MUR100上位机库函数及演示软件使用说明精Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MUR100上位机库函数及演示软件使用说明精Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
¥
演示软件的使用
开始进入系统时界面如下图
1. 选择要进行操作的读卡器类型
开始进行操作前这里选择MUR-100
2. 设置连接参数
接下来从设置菜单中选择参数选择选项
此时会弹出一个对话框
3. 连接
接着从文件菜单中选择连接选项进行连接
连接上后系统界面如下图
此时你要选择你想操作的卡型号
3.1 选择MF1 S50/70卡
接下来的操作有两个分支
只要你选择好要进行操作的各项参数写入数据写入数值和加减还有装载密钥以及更改密钥按钮进行操作了你可以直接双击左边树列表框中的某个数据块来直接选择此数据块这里有必要详细说明一下装载密钥以及更改密钥的功能
在其中你可以进行装载密钥操作在以后要验证卡密钥
的时候就可以调用RC500USB_authentication2这个函数来进行验证密钥操作
3.1.1.2 更改密钥
点击此按钮会弹出一个更改密钥对话框
当你设置好验证参数后读取原始参数此时界面如下
在对话框中的两个表格中颜色变为反白的一行表示为对应的卡的原始访问条件
在设置好新密钥A和B以及新访问条件后就可以点击按钮进行修改
3.1.2 循环测试
要进行循环操作时
此时弹出一个对话框
从中你可以选择你循环测试时所要进行的操作每次读写完将卡挂起
就开始对卡进行读写操作要进行第二次操作的话
然后再放进去才行
此时你可以点击循环测试按钮进行测试在这之前首先得确保你已经选择好要进行操作的各项参数要改变只能先中止循环测试再进行更改你只要把卡放到感应区就能自动进行指定的操作
循环测试选项前打勾表示已经选择
在密钥编辑框中输入卡的密钥后点击按钮则会弹出一个更改密钥对话框来进行更改密钥操作
点击速度测试按钮可以进行读写卡速度测试
三
库函数说明
1.1unsignedchar__stdcallRC500USB_init(
入口参数
此函数的功能是打开USB
无
函数功能
1.3unsignedchar__stdcallRC500USB_request(unsignedcharmode,unsignedshort&
tagtype
HALT状态的除外
此函数发送Request命令
返回值否则返回错误码
bcnt:
为预选卡所分配的位的个数
此函数开始防冲突操作
0表示成功
1.5unsignedchar__stdcallRC500USB_anticoll2(unsignedcharencoll,unsignedcharbcnt,unsignedlong&
snr
则使能多张卡进入天线区则不允许多张卡进入
通常Bcnt=0
snr:
返回卡的序号
函数功能
卡的序号
size:
返回卡的容量
mode:
密钥类型,密钥A:
0x00,密钥B:
0x04
secnr:
要验证的卡扇区号
函数功能在进行对卡片的读写操作之前在系统初始化时
keynr:
用于证实的密匙区号
key:
存储密钥缓冲区
函数功能写减等操作前若卡中的密钥与所传输的密码相匹配函数将返回MI_OK
函数功能即使之处于Halt模式只能用ALL方式进行选择
addr:
块号(0x00--0x3f
data:
块数据
此函数功能是读取卡的一个块的数据
1.12 unsignedchar__stdcallRC500USB_write(unsignedcharaddr,unsignedchar*data入口参数
长度16个字节
块号(0x00--0x3f
value:
要写入的值
存储要读出的值
模式加C1H复制C2H
Ë
¯
Ê
ý
¹
¦
Ä
Ü
Ç
Ô
Ò
¸
ö
¿
é
½
ø
Ð
Ö
²
Ù
×
÷
要载入的读卡器中的密钥区号
密码
这条指令的功能是将RC500中的密匙与卡中的密匙进行验证
必须成功执行此指令主控设备将把每个扇区的密码加载到读卡器中
1.17 unsignedchar__stdcallRC500USB_reset(unsignedcharmsec
msec:
射频电路关闭时间
函数功能若msec=0Ò
±
Ï
Â
Request命令到来
函数功能关闭RC500È
ô
ª
Ø
Æ
ò
è
Ó
Ã
Config(
1.19 unsignedchar__stdcallRC500USB_config(void
模块每次上电复位之后才能进行进一步的操作
1.20unsignedchar__stdcallRC500USB_get_info(unsignedchar*info
依次为0x30,0x88,0xf8,0x00,0xXX
info[5]-info[8]为RC500的序列号
1.23unsignedchar__stdcallRC500USB_buzzer(unsignedcharcontrl,unsignedcharopentm,unsignedcharclosetm,unsignedcharrepcnt
如下表相应位为1时该器件动作
取值
此函数输出一驱动信号可驱动蜂鸣器和绿色发光管间隙时间和重复次数可调
1.24unsignedchar__stdcallRC500USB_read_E2(unsignedcharaddr,unsignedcharlength,unsignedchar*data
被读RC500内EEPROM首址
被读数据长度
data
«
RC500内EEPROM的数据读出
1.25unsignedchar__stdcallRC500USB_write_E2(unsignedcharaddr,unsignedcharlength,unsignedchar*data
RC500内EEPROM的写入首址0x30-0x7E
被写数据长度
此函数将数据写入RC500内EEPROM中
0x10-0x2F为启动寄存器初始化文件区0x80-0x1FF为只读密钥区
0x7F为模块波特率参数存贮区
keyblock
4字节密码首址
block
4字节数据首址
2. 库函数使用方法
2.1 调用动态库方法
首先总共有四个文件RC500USB.lib
EasyD12_500.dll
1
在工程文件中加入RC500USB.lib文件
首先得调用LoadLibrary函数来加载RC500USB.dll,用完后调用FreeLibrary函数来卸载之
则可以按照以下步骤来调用
语法:
[Public | Private] Declare Function name Lib "
libname"
[Alias "
aliasname"
] [([arglist]] [As type]
Declare 语句的语法包含下面部分
可选
Private
Name动态链接库的入口处区分大小写
必选包含所声明的函数动态链接库名或代码资源名
可选表示将被调用的函数在动态链接库 (DLL 中还有另外的名称
就可以使用这个参数常数或任何其它过程的名称相同时如果该动态链接库函数中的某个字符不符合动态链接库的命名约定时
Aliasname动态链接库则 aliasname 是动态链接库中该函数入口处的名称则随后的字符必须指定该函数入口处的顺序号
可选代表调用该函数时需要传递参数的变量表
可选Function返回值的数据类型BooleanLongSingleDecimalString或 Variant或对象类型
[Optional] [ByVal | ByRef] [ParamArray] varname[( ] [As type]
部分描述
可选表示参数不是必需的则 arglist 中的后续参数都必需是可选的如果使用了 ParamArray ByVal
ByRef
例如
2.2库函数使用流程
2.2.1 操作MIFARE S70/S50卡时的操作流程
2.2.2 操作SHC1102卡时的操作流程
注
只有在操作SHC1102卡时需要复位
2.3 使用举例
2.3.1操作MIFARES70/S50例子
#include“RC500USB.h”
unsignedlongsnr;
unsignedshorttype;
unsignedcharsize;
unsignedchardata[16];
unsignedcharszpwd[6]={0xff,0xff,0xff,0xff,0xff,0xff};
for(inti=0;
i<
16;
i++
{
data[i]=i;
}
longvalue=0x500;
RC500USB_init(;
//打开USB
while(1
if(RC500USB_request(0,type!
=0//对第一个读卡器进行操作continue;
if(RC500USB_anticoll(0,snr!
=0//进行防碰撞选择
printf("
%x\n"
value;
RC500USB_halt(;
//使卡进入halt状态
RC500USB_buzzer(1,25,25,1;
//让蜂鸣器响一次
sleep(50;
2.3.2操作SHC1102例子
unsignedchardata[4];
unsignedcharszpwd4]={0xff,0xff,0xff,0xff};
4;
//打开端口和设定波特率while(1
RC500USB_reset(2;
//让天线复位2ms
=0//发送请求命令
continue;
if(RC500USB_authshc1102(8,szpwd!
=0//验证密钥
if(RC500USB_wirteshc1102(2,data!
=0//往第二块写入数据continue;
if(RC500USB_readshc1102(2,data!
=0//读取第二块的数据continue;
附录
函数名称执行时间
RC500USB_request 3.295
RC500USB_anticoll 3.911
RC500USB_anticoll2 3.930
RC500USB_select 4.024
RC500USB_authentication 4.946
RC500USB_authentication2 5.970
RC500USB_authkey 6.922
RC500USB_halt 4.020
RC500USB_read 5.000
RC500USB_write 10.285
RC500USB_writeval 10.400
RC500USB_readval 5.101
RC500USB_value 15.644
RC500USB_load_key 9.967
RC500USB_reset 2.914
RC500USB_close 0.911
RC500USB_config 30.979
RC500USB_set_control_bit 0.941
RC500USB_clr_control_bit 1.847
RC500USB_buzzer 1.965
RC500USB_read_E2 3.551 (16 bytes
RC500USB_write_E2 9.914 (16 bytes
RC500USB_authshc1102 4.040
RC500USB_readshc1102 3.848
RC500USB_writeshc1102 21.036
错误码列表 名称MI_OK,COMM_OKMI_NOTAGERRMI_CRCERRMI_EMPTYMI_AUTHERRMI_PARITYERRMI_CODEERRMI_SENDRERRMI_NOTAUTHERRMI_BITCOUNTERRMI_BYTECOUNTERRMI_TRANSERRMI_WRITEERRMI_INCRERRMI_DECRERRMI_READERRMI_COLLERRMI_QUITMIS_CHK_OKMIS_CHK_FAILEDMIS_CHK_COMPERRCOMM_ERR值0123456810111214151617182430012255描述函数调用成功在有效区域内没有卡从卡中接收到了错误的CRC校验和值溢出不能验证从卡中接收到了错误的校验位通信错误在防冲突时读到了错误的串行码卡没有验证从卡中接收到了错误数量的位从卡中接收了错误数量的字节调用Transfer函数出错调用Write函数出错调用Increment函数出错调用Decrment函数出错调用Read函数出错冲突错上一次了送命令时被打断CheckWrite正确CheckWrite出错CheckWrite:
写出错串行通信错误比较出错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MUR100 上位 机库 函数 演示 软件 使用说明