GM65条码识别模块常用的串口指令

摘要:

用户可从主机发送串口指令对识读模块进行设置。识读模块与主机设备间必须在通讯参数配置完全匹配时才能实现正常通讯。识读模块默认的串行通讯参数:波特率 9600bps ,无校验, 8 位数据位, 1 位停止 位,无流控。

一:CRC 算法

校验和 CRC 计算 : CRC_CCITT 校验值( 2 bytes )。计算的范围: Types Lens Address Datas 计算的方法为 CRC_CCITT ,特征多项式: X16+X12+X5+1 ,即多项式系数为 0x1021 ,初始值为全 0 , 对于单个字节来说最高位先计算,不需要取反直接输出。C 的参考代码如下:
GM65条码识别模块常用的串口指令_第1张图片
注:当用户不需要 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 的参考代码
如下
GM65条码识别模块常用的串口指令_第2张图片
注:当用户不需要 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 的参考代码
如下:
GM65条码识别模块常用的串口指令_第3张图片
注:当用户不需要 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 的参考代码
如下:
GM65条码识别模块常用的串口指令_第4张图片
注:当用户不需要 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
返回:无

七:标志位列表

GM65条码识别模块常用的串口指令_第5张图片

GM65条码识别模块常用的串口指令_第6张图片

GM65条码识别模块常用的串口指令_第7张图片

GM65条码识别模块常用的串口指令_第8张图片

GM65条码识别模块常用的串口指令_第9张图片

GM65条码识别模块常用的串口指令_第10张图片

GM65条码识别模块常用的串口指令_第11张图片

GM65条码识别模块常用的串口指令_第12张图片

GM65条码识别模块常用的串口指令_第13张图片

GM65条码识别模块常用的串口指令_第14张图片

GM65条码识别模块常用的串口指令_第15张图片

GM65条码识别模块常用的串口指令_第16张图片

GM65条码识别模块常用的串口指令_第17张图片

GM65条码识别模块常用的串口指令_第18张图片

GM65条码识别模块常用的串口指令_第19张图片

GM65条码识别模块常用的串口指令_第20张图片

GM65条码识别模块常用的串口指令_第21张图片

GM65条码识别模块常用的串口指令_第22张图片

GM65条码识别模块常用的串口指令_第23张图片

GM65条码识别模块常用的串口指令_第24张图片

你可能感兴趣的:(嵌入式硬件)