调试板接口说明
简介
这款高性能的多功能读卡模块,可以支持IC卡、CPU卡、NFC卡的读写,支持读IC卡、CPU卡、NFC卡、NFC手机、银联卡、二代三代身份证、羊城通....于一体。可输出TTL232、RS485、WG26、WG34、WG66,支持蜂鸣器控制、支持两组LED控制、支持3.3V工作电压、支持AD算法键盘。可用于门禁、考勤、消费、读写器的核心部件(免费提供PCB与读卡器外围电路设计方案)。
特点
1. 支持外接收发天线;
2. 最远作用距离达至100mm;
3. 单电源供电,低功耗设计;
4. 支持韦根(Wiegand26、34、66)、TTL电平、RS485;
5. 支持蜂鸣器与LED控制器输出。
6. 支持软件配置各项功能。
7. 支持识别IC卡扇区,验证IC卡扇区密码和特定内容
8. 支持自定义卡号
9. 支持AD算法键盘(订货前需说明)
电特性
1、极限参数
2、 规格(除特别说明,所示规格取自TA=25℃及VCC=+5V工作条件下)
(*有效距离与卡片及工作环境有关)
3、 尺寸 :26.5mm X 12.5mm X 2.5mm
多功能读卡模块接口说明
注:1、模块默认波特率19200。
注:ADY键盘 原理图
通讯命令格式软硬件通用格式。
模块接收信息:接收此通讯命令的设备信息,指设备机器号,机器号为0表示广播。
软件命令标识信息:发出此命令的软件命令代码,用于区分此命令是哪个模块发出的,巡更棒不需要处理此数据,只有在返回命令时带上此数据即可。
控制码:通讯命令的具体含义代码,包含分类,命令二类。
数据码:当通讯命令包含数据时使用,数据长度指定了此命令中包含数据内容的字节数。
数据长度的最大值为:64字节。
检验码:除标志码和检验码,命令中所有字节都相加然后取尾字节。
由于命令中使用了0x7E作为命令的开始和结束标志,所以7E这个字节就不能出现在命令内容中只能出现在命令头和命令尾。
因此命令中的0x7E和0x7F都必须转换为如下数据后再发送:
0x7E = 0x7F 01
0x7F = 0x7F 02
转译码使用流程是:
1、发送命令:在命令数据生成后,先对命令内容检验和计算,然后再进行0x7E和0x7F的数据检查,发现0x7E或0x7F就进行上面的公式转换,转换后在发送。
2、接受命令:收到数据后应该先按照上面的公式进行数据反转译再进行校验和检验,然后在分析命令和执行具体操作。
预定义返回命令:
应答OK包的定义:
后文所有涉及回应,OK应答时,直接使用此定义。
应答校验错的定义:
前言:
本类中的分类开头一律为0x01;
本类中应答的开头一律为0x31;
一般来讲应答命令中命令,需要和发出的命令一样。
机器号取值:1-255,不可以是0。0是广播码。
解释:写入机器号命令不判断命令格式中的巡更棒信息中的机器号。
应答:OK
解释:读取机器号命令不判断命令格式中的巡更棒信息中的机器号。
应答:传送机器号
获得设备的应用程序版本号。
应答:传送设备版本号
版本号字节
例如:0x39393232。 Ver 99.22
设置读卡类型
读卡类型可一次性支持所有类型卡,也可以选择仅支持其中一种或多种。
应答:OK
读取读卡类型
应答:开关
设置输出格式
第一字节为输出的数据协议格式
第二字节为输出的卡号字节顺序
输出协议格式。 WG26、34、66
卡号字节顺序
应答:OK
读取输出格式
应答:输出格式
设置扇区验证
扇区验证参数格式 29字节(0x1D):
应答:OK
读取扇区验证
应答:验证参数
设置卡号参数
IC卡自定义卡号参数格式 12字节(0xC):
应答:OK
读取卡号参数
应答:卡号参数
这个波特率配置只针对TTL输出卡号,和模块通信波特率仍旧是默认19200。
设置监控开关
1字节开关
1字节波特率;
1字节奇偶校验;
1字节数据位数;
1字节停止位数
波特率取值范围:
奇偶校验取值:
数据位值直接使用字节数值表示。取值:4-8;
停止位值
应答:OK
读取监控开关
应答:监控开关
应答:OK
取值范围:1-10
应答:OK
值范围说明:
1表示红灯亮
2表示绿灯亮
应答:OK
应答:寻卡结果
返回的数据结构:
卡片类型:
扇区:
S50卡的取值范围是0-15
S70卡的取值范围是 0-39
块号:
S50卡每个扇区的块号都是0-3,其中块3是密码块
S70卡0-31块扇区的块号是0-3,其中块3是密码块
32-39块扇区的块号是0-15,其中块15是密码块
参数定义
目前一次读取数据4块数据块内容,即最大每次读取64个字节数据
应答:读取结果
结果定义:
参数定义
目前一次写入数据4块数据块内容,即最大每次写入64个字节数据
注意:每次写入的数据内容必须为16字节的倍数
应答:写入结果
结果定义:
此类别的消息为控制板主动发送的,信息代码为固定的:0xFFFF。上位机无需做任何回应。
读卡消息
消息内容格式:
卡类代码:
机器号:无默认值,初始化不能修改
版本号:固件版本号,初始化保持最新的
生成日期:无默认值,初始化不可修改
读卡类型: 默认支持 M1 IC卡,NFC卡,CPU卡,身份证卡
输出格式:默认输出:WG34(四字节),字节序:高位在前低位在后
IC卡控卡:无默认值,初始化不可修改。
IC卡自定义卡号:无默认值,初始化不可修改
读卡TTL输出卡号:默认值:开启,输出波特率:19200,n,8,1
动态密码的算法思路是:
1、首先根据扇区密码(6字节)和卡号(4字节)混淆生成一个newkey(10字节)
2、然后再把newkey进行混淆生成一个6字节的newdata。
3、使用rc4加密,密钥就是newkey,明文就是newdata,真正的扇区密码就是加密后的密文。
4、RC4加密运算时采用的卡号是物理卡号,并且是固定的4字节 “低位在前,高位在后”格式下输出的卡号作为加密基准。
源代码如下:
/*将卡号和密钥混淆后使用RC4加密
返回值:
1 -- 表示加密完成
-1 -- 表示key 长度不足6字节
-2 -- 表示 cardcode 长度不足4字节
-3 -- 表示 result_len 长度不足6字节
*/
RC4_API long WINAPI Create_Section_Password(BYTE *key, long key_len, BYTE *cardcode, long cardcode_len, BYTE *SectionPWD, long SectionPWD_len)
{
if (key_len < 6)
{
return -1;
}
if (cardcode_len < 4)
{
return -2;
}
if (SectionPWD_len < 6)
{
return -3;
}
BYTE newKey[10];
BYTE newData[6];
newKey[6] = key[0];
newKey[4] = key[1];
newKey[8] = key[2];
newKey[5] = key[3];
newKey[2] = key[4];
newKey[0] = key[5];
newKey[1] = cardcode[0];
newKey[7] = cardcode[1];
newKey[3] = cardcode[2];
newKey[9] = cardcode[3];
newData[0] = newKey[1];
newData[1] = newKey[9];
newData[2] = newKey[5];
newData[3] = newKey[6];
newData[4] = newKey[7];
newData[5] = newKey[3];
RC4_Encrypt(newKey, 10, newData, 6, SectionPWD, 6);
return 1;
}
WG26协议
Wiegand 26格式
各数据位的含义:
第 1 位:为输出数据2—13位的偶校验位
第 2—9 位:ID卡的HID码的低8位
第10—25位:ID卡的PID号码
第 26 位:为输出数据14-25位的奇校验位
数据输出顺序:
HID码和PID码均为高位在前,低位在后
例:一张ID卡内容为:
HID:32769 PID:34953 ( 卡面印:2147584137 001, 34953 )
相应的二进制为:
HID:1000 0000 0000 0001 ( 只输出低8位 )
PID:1000 1000 1000 1001
输出如下:
1 2 9 10 25 26
0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1
| HID_L | PID |
输出端D0、D1时序:
图示:
1、D0、D1在没有数据输出时均保持高电平;
2、输出数据位时间为420uS(TL),如输出为0,D0拉低420uS(TL)后为高电平,若输出为1,则D1拉低420uS(TL)后为高电平;
3、输出数据位之间的间隔时间为2mS(TL),如输出00:D0拉低420uS(TL)后为高电2mS(TL),再拉低为低电平420uS(TL),然后释放为高电平;
WG34协议
Wiegand 34格式
各数据位的含义:
第 1 位:为输出第2—17位的偶校验位
第 2-17 位:ID卡的HID码
第18—33位:ID卡的PID号码
第 34 位:为输出第18-33位的奇校验位
数据输出顺序:
HID码和PID码均为高位在前,低位在后
例:一张ID卡内容为:
HID:32769 PID:34953 ( 卡面印:2147584137 001, 34953 )
相应的二进制为:
HID:1000 0000 0000 0001
PID:1000 1000 1000 1001
输出如下:
1 2 17 18 33 34
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0
| HID_L | PID |
输出端D0、D1时序:
图示:
1、D0、D1在没有数据输出时均保持高电平;
2、输出数据位时间为420uS(TL),如输出为0,D0拉低420uS(TL)后为高电平,若输出为1,则D1拉低420uS(TL)后为高电平;
3、输出数据位之间的间隔时间为2mS(TL),如输出00:D0拉低420uS(TL)后为高电2mS(TL),再拉低为低电平420uS(TL),然后释放为高电平;
WG按键协议
WG按键格式
各数据位的含义:
第 1-4 位:按键值的16进制表示
0 发0000
1 发0001
2 发0010
.
.
.
* 发 1010
# 发 1011
数据输出顺序:
按键码均为高位在前,低位在后
例:一个按键内容为:
VALUE:9
相应的二进制为:
VALUE:1001
输出如下:
1 4
1 0 0 1
| VALUE |
输出端D0、D1时序
图示:
1、D0、D1在没有数据输出时均保持高电平;
2、输出数据位时间为420uS(TL),如输出为0,D0拉低420uS(TL)后为高电平,若输出为1,则D1拉低420uS(TL)后为高电平;
3、输出数据位之间的间隔时间为2mS(TL),如输出00:D0拉低420uS(TL)后为高电2mS(TL),再拉低为低电平420uS(TL),然后释放为高电平;
调试软件使用说明
搜索设备
1、点击自动检测按钮,搜索对应的串口号和调试板。
2、点击机器号的读取,如果机器号为0,写入需要设置的机器号(机器号范围1~255),出厂默认机器号为0。
3、设置对应的出厂日期。
模块参数设置
1、点击需要支持的卡片类型,然后写入到模块,默认支持全部卡片,WG输出WG26+WG34,高位在前。
2、韦根输出支持WG26+WG34(默认是WG26,模块的11引脚低电平输出WG34)和WG26+WG66(默认是WG26,模块的11引脚低电平输出WG66)两个模式,不需要韦根信号可以选择禁用。
3、韦根信号输出卡号格式支持高位在前和低位在前两种格式,选择好需要的功能写入到模块。
控卡设置
1、如果需要支持控卡功能则需要打开功能开关,默认关闭;(该功能只支持类IC卡)
2、选择控卡扇区的扇区号(范围0~15扇区),输入控卡的扇区密码,密码为16进制数据,验证方式选选择A秘钥或B秘钥,扇区密码是否加密,加密方式是RC4,加密算法参考附录I;
3、验证数据开关,验证数据的起始字节0~47(如果控卡扇区是0扇区,该起始字节必须从16字节开始)
4、输入需要验证的类容,数据是16进制方式输入,将以上所有数据配置好写入到模块。
自定义卡号
1、如果需要支持自定义卡号则需要打开功能开关,默认关闭;(该功能只支持类IC卡)
2、选择自定义卡号保存的扇区号(范围0~15扇区),输入自定义卡号的扇区密码,密码为16进制数据,验证方式选选择A秘钥或B秘钥,扇区密码是否加密,加密方式是RC4,加密算法参考附录I;
3、选择自定义卡号的长度(范围2~8),卡号数据在扇区的起始字节,将以上所有数据配置好写入到模块。
卡号输出设置
1、如果读卡时需要输出TTL或RS485信号则需要打开功能开关,默认关闭;
2、选择输出的时的波特率,波特支持1200,2400,4800,9600,14400,19200,38400,43000,56000,576000,115200。
3、奇偶校验有无,奇校验和偶校验三个选择,数据位目前只支持8位,停止位支持1,1.5,2三个选择,将配置的数据写入到模块。改配置只针对读卡是输出数据功能,对数据配置无影响。
通讯数据监控
1、监控读卡开启,将会解析调试板读到卡片数据。
2、初始化读卡模块,将会恢复到出厂设置。
3、停止所有命令,将会停止所有正在执行的命令。
卡读写操作
1、点击寻卡按钮,将会返回读取到的卡号。
2、如果需要读寻到卡片的数据则需要配置扇区号(0~15),块号(0~3),密码类型(A秘钥或B秘钥),扇区密码,读取字节数(1~64),点击读取,将会返回相应的扇区数据。
3、如果需要对寻到的卡片写入数据需要配置扇区号(0~15),块号(0~3),密码类型(A秘钥或B秘钥),扇区密码,读取字节数(1~64),在扇区数据方框内写入需要写入的数据,然后点击写入(请勿随意操作扇区的49~64字节数据,如果不当将会损坏改扇区)。
蜂鸣器设置
1、设置蜂鸣器鸣叫次数,该命令立马生效,不保存。
2、对LED灯开关设置,该命令立马生效,不保存。
IC卡加密设置
1、对整个IC卡操作,选择需要操作的扇区号,并输入对应的扇区密码,点击读取全部内容。
2、修改每个扇区的密码A,点击开始加密,可以加密IC卡。