R503Pro条码识别模块的指令与通信协议

一:通信协议

1.1:物理层

物理层采用串口通讯,波特率 57600 8 位数据位, 1 位停止位,无奇偶校验位。

1.2:数据包格式

模块采用 UART 与上位机通讯,对命令、数据、结果的接收和发送,都采用数据包的形式。对于多 字节的,高字节在前低字节在后(如 2 bytes 00 06 表示 0006 ,不是 0600 )。数据包格式及其定义 (见表 4.1 和表 4.2 所示)。

1.3:指令集汇总表

1.4:数据包的接收与应答

指令只能由上位机下发给模块,模块向上位机应答。
模块收到指令后,会通过应答包,将有关命令执行情况与结果上报给上位机。应答包含有参数,并可 跟后续数据包。
指令后如果需要跟数据包,则上位机在发送指令包,并收到应答包后才能确认是否可以继续发数据包。
上位机只有在收到模块的应答包后才能确认模块的收包情况与指令执行情况。
应答包的内容包括一个字节的确认码(必须有)和可能有的返回参数。确认码见表 4.3
4.3 确认码定义表

二:指令系统

2.1:采集指纹图像 GetImage0x01

功能说明:探测手指,探测到后录入指纹图像存于 ImageBuffer ,并返回录入成功确认码;若探测不 到手指,直接返回无手指确认码( 模块对于每一条指令都快速反应,因此如连续探测,需进行循环处理,可 限定循环的次数或总时间)
输入参数:无
返回参数:确认码
指令代码: 0x01
确认码 =0x00 ,表示录入成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x02 ,表示传感器上无手指;
确认码 =0x03 ,表示录入不成功。

2.2:图像生成特征 GenChar0x02

功能说明:将 ImageBuffer 中的原始图像生成指纹特征。
输入参数: CharBufferID( 特征缓冲区号 )
返回参数:确认码
指令代码: 0x02
注:  1 :缓冲区 CharBufferID 1 ~ 6
        2 :建议指纹模块合成模板所需的指纹特征最少为 4 个,最多可为 6
确认码 =0x00 ,表示生成特征成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x06 ,表示指纹图像太乱而生不成特征;
确认码 =0x07 ,表示指纹图像正常,但特征点太少而生不成特征;
确认码 =0x15 ,表示图像缓冲区内没有有效原始图而生不成图像。

2.3:指纹比对 Match0x03

功能说明:将提取到的特征进行比对,并给出比对结果。
输入参数:无
返回参数:确认码 + MatchScore( 比对得分 )
指令代码: 0x03
确认码 =0x00 ,表示指纹匹配;
确认码 =0x01 ,表示收包有错;
确认码 =0x08 ,表示指纹不匹配。

2.4:指纹搜索 Search0x04

功能说明: 将提取到的特征,与指纹库中模板进行比对,并给出比对结果。
输入参数: CharBufferID( 特征缓冲区号 ) + StartID( 起始序号 ) + Num (个数)
返回参数:确认码 + ModelID( 模板序号 )+ MatchScore( 比对得分 )
指令代码: 0x04
注:缓冲区CharBufferID填0x01
确认码 =0x00 ,表示搜索到;
确认码 =0x01 ,表示收包有错;
确认码 =0x09 ,表示没搜索到

2.5:特征合成模板 RegModel0x05

功能说明:将多次( 4-6 次,用户自定义)采集的指纹特征生成模板。
输入参数:无
返回参数:确认码
指令代码: 0x05
确认码 =0x00 ,表示合并成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x0a ,表示合并失败(两枚指纹不属于同一手指)。

2.6:存储模板 StoreChar0x06

功能说明:将缓冲区中的模板数据存储到 Flash 指纹库中指定位置。
输入参数: CharBufferID( 特征缓冲区号 ) ModelID (指纹库位置号)
返回参数:确认码
指令代码: 0x06
确认码 =0x00 ,表示储存成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x0b ,表示 ModelID 超出指纹库范围;
确认码 =0x18 ,表示写 FLASH 出错。

2.7:读出模板 LoadChar0x07

功能说明:将 flash 数据库中指定 ID 号的指纹模板读入到缓冲区。
输入参数: CharBufferID( 特征缓冲区号 ) ModelID (指纹库位置号)
返回参数:确认码
指令代码: 0x07
确认码 =0x00 ,表示读出成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x0b ,表示 ModelID 超出指纹库范围;
确认码 =0x0C ,表示读出有错或模板无效。

2.8:上传模板 UpChar0x08

功能说明:将缓冲区中的数据上传给上位机。
输入参数: CharBufferID (特征缓冲区号)
返回参数:确认码
指令代码: 0x08
确认码 =0x00 ,表示接着发送后续数据包;
确认码 =0x01 ,表示收包有错;
确认码 =0x0f ,表示不能发送后续数据包;
确认码 =0x0d ,表示指令执行失败。
上位机发送指令包,模块先发送应答包,再发送若干个数据包。 包内容字节数 N 由“包内容长度”参数决定,出厂时“包内容长度”设置为 128 Bytes

2.9:下载模板 DownChar0x09

功能说明:上位机下载模板到模块缓冲区。
输入参数: CharBufferID (特征缓冲区号)
返回参数:确认码
指令代码: 0x09
确认码 =0x00 ,表示可以接收后续数据包;
确认码 =0x01 ,表示收包有错;
确认码 =0x0e ,表示不能接收后续数据包。
上位机先发送指令包,模块应答后,上位机再发送若干个数据包。
包内容字节数 N 由“包内容长度”参数决定,出厂时“包内容长度”设置为 128 Bytes

2.10:上传图像 UpImage0x0A

功能说明:将模块图像缓冲区 ImageBuffer 中的数据上传给上位机。每一个像素 4bit
输入参数:无
返回参数:确认码
指令代码: 0x0A
确认码 =0x00 ,表示接着发送后续数据包;
确认码 =0x01 ,表示收包有错;
确认码 =0x0f ,表示不能发送后续数据包
上位机发送指令包,模块先发送应答包,再发送若干个数据包。
包内容字节数 N 由“包内容长度”参数决定,出厂时“包内容长度”设置为 128 Bytes

2.11:下载图像 DownImage0x0B

功能说明:上位机下载图像数据到模块图像缓冲区 ImageBuffer 。每个像素 4bit
输入参数:无
返回参数:确认码
指令代码: 0x0B
应答包格式:
确认码 =0x00 ,表示可以接收后续数据包;
确认码 =0x01 ,表示收包有错;
确认码 =0x0e ,表示不能接收后续数据包
上位机先发送指令包,模块应答后,上位机再发送若干个数据包。
包内容字节数 N 由“包内容长度”参数决定,出厂时“包内容长度”设置为 128 Bytes

2.12:删除模板 DeleteChar0x0C

功能说明:删除模块指纹库中指定的一段(指定 ID 号开始的 N 个指纹模板)模板。
输入参数: StartID( 起始序号 ) + Num ( 删除的模板个数 )
返回参数:确认码
指令代码: 0x0C
确认码 =0x00 ,表示删除成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x10 ,表示删除失败。
确认码 =0x18 ,表示写 FLASH 出错。

2.13:清空指纹库 Empty0x0D

功能说明:清空指纹库中所有模板。
输入参数:无
返回参数:确认码
指令代码: 0x0D
确认码 =0x00 ,表示清空成功;
确认码 =0x01 ,表示收包有错;
确认码 =0x11 ,表示清空失败。
确认码 =0x18 ,表示写 FLASH 出错。

2.14:设置系统参数 SetSysPara0x0E

功能说明:设置系统参数。每次只能设置一个参数。
输入参数:参数序号 + 内容
返回参数:确认码
指令代码: 0x0E
确认码 =0x00 表示操作成功;
确认码 =0x01 表示收包有错。
确认码 =0x1A 表示参数序号有误。
确认码 =0x18 ,表示写 FLASH 出错。

2.15:读取系统参数 ReadSysPara0x0F

功能说明:读取系统参数
输入参数:无
返回参数:确认码 + 参数列表
指令代码: 0x0F
确认码 =0x00 表示操作成功;
确认码 =0x01 表示收包有错。
确认码 =0x18 ,表示读写 FLASH 出错。

2.16:设置口令 SetPwd0x12

功能说明:设置模块口令(若修改过默认口令,则模块上电后必选先验证口令才能执行其他指令)
输入参数: PassWord
返回参数:确认码
指令代码: 0x12
确认码 =0x00 表示 OK
确认码 =0x01 表示收包有错。
确认码 =0x21 表示必须验证口令。
确认码 =0x18 ,表示读写 FLASH 出错。

2.17:验证口令 VfyPwd0x13

功能说明:验证模块口令(若修改过默认口令,则模块上电后必选先验证口令才能执行其他指令)
输入参数: PassWord
返回参数:确认码
指令代码: 0x13
确认码 =0x00 表示口令验证正确;
确认码 =0x01 表示收包有错;
确认码 =0x13 表示口令不正确。

2.18:获取随机数 GetRandomCode0x14

功能说明:令模块生成一个随机数返回给上位机
输入参数:无
返回参数:确认码 + RandomCode (随机数)
指令代码: 0x14
确认码 =0x00 表示获取成功;
确认码 =0x01 表示收包有错。

2.19:设置模块地址 SetAddr0x15

功能说明:设置模块地址
输入参数: Addr
返回参数:确认码
指令代码: 0x15
确认码 =0x00 表示设置地址成功;
确认码 =0x01 表示收包有错。
确认码 =0x18 ,表示读写 FLASH 出错。

2.20:读取信息页 ReadInfPage0x16

功能说明:读取信息页( 512 字节)。
输入参数:无
返回参数:确认码
指令代码: 0x16
指令包格式:
确认码 =0x00 ,表示接着发送后续数据包;
确认码 =0x01 ,表示收包有错;
确认码 =0x0f ,表示不能发送后续数据包
上位机发送指令包,模块先发送应答包,再发送若干个数据包。
包内容字节数 N 由“包内容长度”参数决定,出厂时“包内容长度”设置为 128 Bytes

2.21:写记事本 WriteNotepad0x18

功能说明:用于写入用户的 32 bytes 数据到指定的记事本页(参见“ 3.6 记 事 本”)
输入参数: NotePageNum , UserContent
返回参数:确认码
指令代码: 0x18
确认码 =0x00 表示写入成功;
确认码 =0x01 表示收包有错。
确认码 =0x18 表示读写 FLASH 出错。

2.22:读记事本 ReadNotepad0x19

功能说明:用于读取记事本页中的数据内容(参见“ 3.6 记 事 本”)
输入参数: NotePageNum (记事本页号) ,
返回参数:确认码 + UserContent (用户信息)
指令代码: 0x19
确认码 =0x00 表示读取成功;
确认码 =0x01 表示收包有错。

2.23:读取有效模板个数 ValidTemplateNum0x1D

功能说明:读取模块内已存储的有效指纹模板个数
输入参数:无
返回参数:确认码 + 有效模板个数 Num
指令代码: 0x1D
确认码 =0x00 表示操作成功;
确认码 =0x01 表示收包有错。

2.24:读取指纹模板索引表 ReadIndexTable0x1F

功能说明:读取模块指纹模板索引表,每次最多读取 256 个指纹模板的索引表 (32 字节 )
输入参数:索引页
返回参数:确认码 + 指纹模板索引表
指令代码: 0x1F
索引表按页读取,每页 256 个模板
索引页 0 代表读取 0 255 指纹模板索引表
索引页 1 代表读取 256 511 指纹模板索引表
索引页 2 代表读取 512 767 指纹模板索引表
索引页 3 代表读取 768 1023 指纹模板索引表
确认码 =0x00 表示读取成功;
确认码 =0x01 表示收包有错。
索引表数据“ 0 ”代表对应位置无有效模板;“ 1 ”代表对应位置有有效模板。

2.25:取消指令 Cancel(0x30)

功能说明:取消命令
输入参数:无
返回参数:确认码
指令代码: 0x30
确认码 =0x00 表示取消设置成功;
确认码 = 其他 表示取消设置失败。

2.26:握手 HandShake0x40

功能说明:向模块发送握手指令,若模块工作正常,将返回确认码 0x00, 上位机可继续向模块发送指 令;若确认码为其他或无应答,表示设备异常。
输入参数:无
返回参数:确认码
指令代码: 0x40
确认码 =0x00 表示设备正常,可以接收指令;
确认码 = 其他,表示设备异常。
另外,模块上电后会自动发送 0x55 作为握手标志,单片机检测到 0x55 后,可以立刻发送命令进入工 作状态。确认码=0x00 表示设备正常,可以接收指令。

2.27:获取算法库版本 GetAlgVer(0x39)

功能说明:获取算法库版本
输入参数:无
返回参数:确认码 +AlgVer( 算法库版本字符串)
指令代码: 0x39
确认码 =0x00 表示获取成功;
确认码 =0x01 ,表示收包错误。

2.28:获取固件版本 GetFwVer(0x3A)

功能说明:获取算法版本
输入参数:无
返回参数:确认码 +FwVer( 固件版本字符串)
指令代码: 0x3A
确认码 =0x00 表示获取成功;
确认码 =0x01 ,表示收包有错。

2.29:光环控制 AuraLedConfig(0x35)

功能说明:光环 LED 控制
输入参数:控制码 Ctrl, 速度 Speed, 颜色索引 ColorIndex, 次数 Times
返回参数:确认码
指令代码: 0x35
速度: 0x00-0xff, 256 档,最慢 5s 一个周期。对呼吸灯和闪烁灯、渐开、渐灭有效。
循环次数: 0- 无限次, 1-255 次。对呼吸灯和闪烁灯、渐开、渐灭有效。
三彩灯闪烁顺序:蓝色→红色→绿色
七彩灯闪烁顺序:青色→白色→红色→绿色→黄色→蓝色→紫红色
示例:设置七彩呼吸灯
EF 01 FF FF FF FF 01 00 07 35 01 50 30 00 00 BE (速度 50)
确认码 =0x00 表示设置成功;
确认码 =0x01 ,表示收包有错。

2.30:自动注册模板 AutoEnroll (0x31)

采用自动注册模板进行录入指纹时,系统录入一次指纹模板共需录入 6 次指纹图像,采集指纹图像时 蓝灯闪烁。指纹图像采集成功后黄灯长亮,指纹特征生成成功绿灯闪烁。如果要求采集图像过程中手指必 须离开,则需要抬起手指后图像才会重新采集,在等待手指离开过程中,白灯闪烁。6 次采集指纹图像, 生成特征成功后,进行合成特征,存储模板指纹操作。操作成功后绿灯亮,失败则红灯亮。在每次采集指 纹图像时,如果手指离开传感器超过 10 秒左右,会自动退出自动注册模板流程。
输入参数: ModelID 指纹库位置号
Config1 是否允许覆盖 ID
Config2 是否允许重复指纹
Config3 模块在关键步骤是否返回状态
Config4 是否允许要求手指离开
返回参数:确认码 ModelID (指纹库位置号)
指令代码: 0x31
指令包格式:
Model ID : 位置号 ID 0x0000 -0x05DB
                                     0x05DC-0xFFFF 为自动填充( ID 号由系统分配,系统会从 0 号模板开始搜索空模板)
是否允许覆盖 ID 号: 0 不允许 1 允许
是否允许重复指纹注册: 0 不允许 1 允许
注册过程中是否返关键步骤状态: 0 不允许 1 允许
注册过程中是否要求手指离开才能进入下一次指纹图像采集: 0 不要求离开 1 必须离开
示例: EF 01 FF FF FF FF 01 00 09 31 05 DC 00 01 01 01 01 1F(允许返回步骤状态)
应答: EF 01 FF FF FF FF 07 00 06 00 01 00 03 00 11 EF 01 FF FF FF FF 07 00 06 00 02 00 03
00 12 EF 01 FF FF FF FF 07 00 06 00 03 00 03 00 13 EF 01 FF FF FF FF 07 00 06 00 04 00 03 00
14 EF 01 FF FF FF FF 07 00 06 00 05 00 03 00 15 EF 01 FF FF FF FF 07 00 06 00 06 00 03 00 16
EF 01 FF FF FF FF 07 00 06 00 07 00 03 00 17 EF 01 FF FF FF FF 07 00 06 00 08 00 03 00 18 EF
01 FF FF FF FF 07 00 06 00 09 00 03 00 19 EF 01 FF FF FF FF 07 00 06 00 0A 00 03 00 1A EF 01
FF FF FF FF 07 00 06 00 0B 00 03 00 1B EF 01 FF FF FF FF 07 00 06 00 0C 00 03 00 1C EF 01 FF
FF FF FF 07 00 06 00 0D 00 03 00 1D EF 01 FF FF FF FF 07 00 06 00 0E 00 03 00 1E EF 01 FF FF
FF FF 07 00 06 00 0F 00 03 00 1F (指纹 ID)
参数 1 :步骤过程
0x01: 第一次采集图像
0x02: 第一次生成特征
0x03: 第二次采集图像
0x04: 第二次生成特征
0x05: 第三次采集图像
0x06: 第三次生成特征
0x07: 第四次采集图像
0x08: 第四次生成特征
0x09: 第五次采集图像
0x0A: 第五次生成特征
0x0B: 第六次采集图像
0x0C: 第六次生成特征
0x0D: 重复指纹检查
0x0E: 合并特征
0x0F: 存储模板
如果注册过程中是否返关键步骤状态设置为 0 ,则只返回最后一条应答包
确认码 =0x00 表示设置成功
确认码 =0x01 表示设置失败
确认码 =0x07 生成特征失败
确认码 =0x0a 合并模板失败
确认码 =0x0b ID 号超出范围
确认码 =0x 1f 指纹库已满
确认码 =0x22 指纹模板为空
确认码 =0x26 超时
确认码 =0x27 指纹已存在

2.31:自动验证指纹 AutoIdentify (0x32)

       在使用自动验证指纹指令进行搜索验证指纹时,系统会自动采集一次指纹图像、生成特征,然后同指 纹库中的指纹存在的指纹模板进行比对,如果比对成功,返回对应的模板 ID 号和比对得分,如果比对失败则返回对应的错误码。
       在获取指纹图像时,指纹头亮白色呼吸灯,采集图像成功后会亮黄色灯,在比对成功后会亮绿灯进行 提示。中途如果有指纹图像采集错误或者没有搜索到指纹,则会亮红灯进行提示。如果在发送完指令后, 或者报错后再次采集指纹图像时,系统超过 10 秒没有检测到手指,则会自动退出该条指令。
        输入参数:safeGrade 安全等级(1-5 级)
                          startID 搜索起始位置
                          num 搜索数量
                          Config1 模块在关键步骤是否返回状态
                          Config2 指纹搜索报错次数
       返回参数:确认码 ModelID (匹配的指纹库位置号) 、 MarchScore (得分)
       指令代码: 0x32
       指令包格式:
安全等级: 1-5
起始位置: 0-1499
搜索数量: 1-1500
返回搜索步骤:0 不允许
                        1 允许
指纹搜索报错次数: 0-0xff 0 : 一直进行采集图像搜索特征操作,若搜索到指纹库内有相同特征 ID 号,则退出( 0 为一直循环,直到找到能匹配的 ID 或断电才能退出)
1-0xff :对采集到的图像进行生成特征和指纹搜索,若匹配成功则返回匹配的 ID 号和得分,同时
退出这条指令;若匹配失败,需重新进行以上操作,重复次数 1-0xff 。 对应报错次数后退出。
无论是何种方式,在发送完指令后或者再次采集图像时,如果超过 10 秒系统没有检测到手指,都会退出该条指令。
示例:EF 01 FF FF FF FF 01 00 0A 32 03 00 00 05 DC 01 01 01 23(从 0 开始,搜索 1500 枚)
应答:EF 01 FF FF FF FF 07 00 08 00 01 00 00 00 00 00 10 EF 01 FF FF FF FF 07 00 08 00 02
00 00 00 00 00 11 EF 01 FF FF FF FF 07 00 08 00 03 00 02 00 BD 00 D1
(指纹 ID 号及得分)
确认码 =0x00 表示设置成功
确认码 =0x01 表示设置失败
确认码 =0x09 没有搜索到指纹
确认码 =0x0b ID 号超出范围
确认码 =0x22 指纹模板为空
确认码 =0x24 指纹库为空
确认码 =0x26 超时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值