摘要:
用户可从主机发送串口指令对识读模块进行设置。识读模块与主机设备间必须在通讯参数配置完全匹配时才能实现正常通讯。识读模块默认的串行通讯参数:波特率 9600bps ,无校验, 8 位数据位, 1 位停止 位,无流控。
一:CRC 算法
校验和 CRC 计算 : CRC_CCITT 校验值( 2 bytes )。计算的范围: Types 、 Lens 、 Address 、 Datas 计算的方法为 CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 , 对于单个字节来说最高位先计算,不需要取反直接输出。C 的参考代码如下:
注:当用户不需要 CRC 校验功能时,可在 CRC 字节处填写 0xAB 0xCD ,免校验。
二:读标志位操作
对于设备标志位的读操作,最多可一次读取 256 个字节的标志位。
命令格式:
输入: {Head1} {Types} {Lens} {Address} {Datas} {CRC}
其中 Head1 : 0x7E 0x00 ( 2 bytes )
Types :0x07 ( 1 byte )
Lens :0x01 ( 1 byte )
Address : 0x0000~0x00FF ( 2 bytes ),表示要读取的标志位的起始地址。
Datas :0x00~0xFF ( 1 byte ),表示要连续读取的标志位的字节数。
CRC :CRC_CCITT 校验值( 2 bytes )。计算的范围: Types 、 Lens 、 Address 、 Datas 计
算的方法为 CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 ,对 于单个字节来说最高位先计算,不需要取反直接输出。C 的参考代码
如下
注:当用户不需要 CRC 校验功能时,可在 CRC 字节处填写 0xAB 0xCD ,免校验。
返回: {Head2} {Types} {Lens} {Datas} {CRC}
1 )读成功并返回读数据
其中 Head2 : 0x02 0x00
Types :0x00 (读成功)
Lens :表示上传的 Datas 的字节个数
Datas :0x00~0xFF ,表示读上来的数据
CRC : CRC_CCITT 校 验 值 。 计 算 的 范 围 : Types 、 Lens 、 Datas 计 算 的 方 法 为
CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 ,对于单个字节来说最高位先计算,不需要取反直接输出(参考代码同上)
2 )下发 CRC 校验失败
无回应命令
3 )未知命令应答
无回应命令
示例:
对标志位中地址为 0x000A 的 1 个地址进行读操作
1 )读成功并返回数据,返回的数据为 0x3E
输入: 0x7E 0x00 0x07 0x01 0x00 0x0A 0x01 0xEE 0x8A
返回: 0x02 0x00 0x00 0x01 0x3E 0xE4 0xAC
2 )下发的 CRC 错误
输入: 0x7E 0x00 0x07 0x01 0x00 0x0A 0x01 0x11 0x22
返回:无
3 )当发送的指令长度不够或发送 0x7e 0x00 后等待时间超过 400ms 时,当成未知命令处理
输入: 0x7E 0x00 0x07 0x01 0x00 0x0A 0x01
返回:无
三:写标志位操作
对于设备标志位的写操作最多可一次写入 255 个字节的标志位。
写标志操作修改的内容在断电后会丢失,若需要掉电后保持,则需要进行将标志位保存带内部
Flash( 9.4 ) 的操作。
命令格式:
输入: {Head1} {Types} {Lens} {Address} {Datas} {CRC}
其中 Head1 : 0x7E 0x00 ( 2 bytes )
Types :0x08 ( 1 byte )
Lens :0x00~0xFF ( 1 byte ),表示该命令中 Datas 字段的字节数,同时也表示要进行连续
写操作的次数
Address : 0x0000~0xFFFF ( 2 bytes ),表示要写入的标志位的起始地址
Datas :0x00~0xFF ( 1~255 bytes ),表示写入标志位的数据,配置多个标志位时,必须按照
地址从低到高的顺序填充数据域。
CRC :CRC_CCITT 校验值( 2 bytes )。计算的范围: Types 、 Lens 、 Address 、 Datas 计
算的方法为 CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 ,对 于单个字节来说最高位先计算,不需要取反直接输出。C 的参考代码
如下:
注:当用户不需要 CRC 校验功能时,可在 CRC 字节处填写 0xAB 0xCD ,免校验。
返回: {Head2} {Types} {Lens} {Datas} {CRC}
1 )写成功
其中 Head2 : 0x02 0x00
Types :0x00 (写成功)
Lens :0x01
Datas :0x00
CRC :CRC_CCITT 校验值( 0x33 0x31 )
2 )下发 CRC 校验失败
无回应命令
3 )未知命令应答
无回应命令
示例:
向地址为 0x000A 的标志位写入 0x3E
1 ) 设置成功
输入: 0x7E 0x00 0x08 0x01 0x00 0x0A 0x3E 0x4C 0xCF
返回: 0x02 0x00 0x00 0x01 0x00 0x33 0x31
2 ) 下发的 CRC 错误
输入: 0x7E 0x00 0x08 0x01 0x00 0x0A 0x3E 0x11 0x22
返回:无
3 ) 当发送的指令长度不够或发送 0x7e 0x00 后等待时间超过 400ms 时,当成未知命令处理
输入: 0x7E 0x00 0x08 0x01 0x00 0x0A 0x3E
返回:无
四:标志位保存到内部 Flash 指令
若要将设备标志位列表保存到内部 Flash 中则需要发送保存命令。
注意:设备无法单独保存单个标志位配置,必须同时保持整个列表。
命令格式:
输入: {Head1} {Types} {Lens} {Address} {Datas} {CRC}
其中 Head1 : 0x7E 0x00
Types :0x09
Lens :0x01
Address : 0x0000
Datas :0x00
CRC :CRC_CCITT 校验值( 0xDE 0xC8 )
返回: {Head2} {Types} {Lens} {Datas} {CRC}
1 )保存成功
其中 Head2 : 0x02 0x00
Types :0x00 (写成功)
Lens :0x01
Datas :0x00
CRC :CRC_CCITT 校验值( 0x33 0x31 )
2 )下发 CRC 校验失败
无回应命令
3 )未知命令应答
无回应命令
五:标志位恢复到出厂设置
若要将设备标志位的内容恢复到出厂设置,并保存到外挂的 EERPOM 中则需要发送恢复出厂命令。
命令格式:
输入: {Head1} {Types} {Lens} {Address} {Datas} {CRC}
其中 Head1 : 0x7E 0x00
Types :0x09
Lens :0x01
Address : 0x0000
Datas :0xFF
CRC :CRC_CCITT 校验值
返回: {Head2} {Types} {Lens} {Datas} {CRC}
1 )保存成功
其中 Head2 : 0x02 0x00
Types :0x00 (写成功)
Lens :0x01
Datas :0x00
CRC :CRC_CCITT 校验值( 0x33 0x31 )
2 )下发 CRC 校验失败
无回应命令
3 )未知命令应答
无回应命令
六:程序擦除操作
对于设备中程序的擦除,可选择擦除引导程序和用户程序,须使用擦除命令。
命令格式:
输入: {Head1} {Types} {Lens} { NotUse } {Datas} {CRC}
其中 Head1 : 0x7E 0x00 ( 2 bytes )
Types :0x05 ( 1 byte )
Lens :0x01 ( 1 byte ),表示该命令中 Datas 字段的字节数,同时也表示要进行连续写操作
的次数
NotUse : 0x0000 ( 2 bytes ),两个字节的 0x00
Datas : 0x11/0x22/0x33 ( 1 bytes ),表示写入的数据 ; 其中 0x11 代表擦除引导程序; 0x22
代表擦除用户程序, 0x33 代表擦除引导程序跟用户程序
CRC :CRC_CCITT 校验值( 2 bytes )。计算的范围: Types 、 Lens 、 NotUse 、 Datas 计算 的方法为 CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 ,对于 单个字节来说最高位先计算,不需要取反直接输出。C 的参考代码
如下:
注:当用户不需要 CRC 校验功能时,可在 CRC 字节处填写 0xAB 0xCD ,免校验。
返回: {Head2} {Types} {Lens} {Datas} {CRC}
1 )擦除成功
其中 Head2 : 0x02 0x00
Types :0x00 (写成功)
Lens :0x01
Datas :0x00
CRC :CRC_CCITT 校验值( 0x33 0x31 )
2 )下发 CRC 校验失败
无回应命令
3 )未知命令应答
无回应命令
示例:
擦除用户程序 ,设备在擦除用户程序后会自动进入引导程序等待新用户程序的下载
4 ) 擦除成功
输入: 0x7E 0x00 0x05 0x01 0x00 0x00 0x22 xx xx
返回: 0x02 0x00 0x00 0x01 0x00 0x33 0x31
5 ) 下发的 CRC 错误
输入: 0x7E 0x00 0x05 0x01 0x00 0x00 0x22 xx xx
返回:无
6 ) 当发送的指令长度不够或发送 0x7e 0x00 后等待时间超过 400ms 时,当成未知命令处理
输入: 0x7E 0x00 0x05 0x01 0x00 0x00 0x22
返回:无
七:标志位列表