本发明涉及打印机指令控制,尤其涉及一种基于逻辑表驱动法的打印机指令控制算法。
背景技术:
1、世面上常见的大部分票据打印机都是使用esc/pos指令,esc/pos指令是epson公司自己制定的针式打印机的标准化指令集,现在已成为票据打印机控制语言事实上的工业标准。但esc指令功能繁杂,指令有上百条,使用普通的逻辑判断语句(if…else或switch…case)需要编写的代码量很大,开发难度高,很容易产生冗余代码,后期增加功能需要动到整个代码架构,无形中增加了出错的可能性。
技术实现思路
1、本发明的目的在于提供一种基于逻辑表驱动法的打印机指令控制算法,从而解决现有技术中存在的前述问题。
2、为了实现上述目的,本发明采用的技术方案如下:
3、一种基于逻辑表驱动法的打印机指令控制算法,包括如下步骤,
4、s1、新建两级驱动表,表中每个参数对应到相应的功能函数;
5、s2、打印机创建用于循环解析指令的线程;
6、s3、判断打印机是否从上位机接收到指令数据,若是,则进入s4;否则继续等待直至接收到指令数据;
7、s4、打印机对接收到的指令数据进行解包分析;
8、s5、判断解包分析出的首字节在一级表格中是否存在,若是,则进入s6,否则返回s3;
9、s6、判断解包分析出的第二字节在二级表格中是否存在,若是,则查表并调用对应的功能函数,并返回s3;否则直接返回s3。
10、优选的,一级表格中存放各个指令大类,二级表格中存放每个指令大类中包含的功能函数。
11、优选的,步骤s4和s5之间还包括,判断解包分析出的首字节是否小于0x20,若是,则进入s5,否则,表示指令数据为可打印字符,打印机启动打印。
12、优选的,步骤s5中,若解包分析出的首字节在一级表格中存在,则表示指令数据为不可执行指令,返回步骤s3;否则表示指令数据为可执行指令,则根据可执行指令的类别执行步骤s6,调用相应的功能函数。
13、优选的,当可执行指令为lf指令,则打印机执行换行指令;
14、当可执行指令为esc指令,则判断解包分析出的第二字节在二级表格中是否存在,若是,则调用对应的esc功能,否则返回s3;
15、当可执行指令为fs指令,则判断解包分析出的第二字节在二级表格中是否存在,若是,则调用对应的fs功能,否则返回s3;
16、当可执行指令为gs指令,则判断解包分析出的第二字节在二级表格中是否存在,若是,则调用对应的gs功能,否则返回s3;
17、当可执行指令为dle指令,则判断解包分析出的第二字节在二级表格中是否存在,若是,则调用对应的dle功能,否则返回s3。
18、优选的,上位机和打印机规定传输帧格式,双方数据收发按照此格式进行;上位机按照传输帧格式进行组包,将指令数据通过有线或无线的方式传输到打印机,打印机接收到指令数据后进行校验并解包。
19、优选的,所述传输帧包括,起始字符、帧序号、数据域长度、状态码、数据长度、数据内容、crc校验。
20、优选的,步骤s4具体包括如下内容,
21、s41、指令数据接收完成后判断起始字节是否正确,若是,则进入s42;否则返回s3;
22、s42、对整包指令数据进行crc校验,确定crc校验结果是否正确,若是,则进入s43;否则,返回s3;
23、s44、判断帧序号是否加1,若是,则进入s45;否则返回s3;
24、s45、按照数据长度读出数据内容并执行,同时将打印机状态写入状态码;
25、s46、数据组包,帧序号保持相同,给上位机发送回去,并返回s3。
26、本发明的有益效果是:1、在卡片式或内存受限的系统中,使用本发明算法可以帮助缩小程序代码的尺寸并优化系统性能。此外,还可以减少代码的错误率,提高软件质量。2、使用本发明方法处理指令集,可以更容易地维护和修改代码。这种方法可以帮助开发人员更轻松地添加新功能或修改现有功能。
1.一种基于逻辑表驱动法的打印机指令控制算法,其特征在于:包括如下步骤,
2.根据权利要求1所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:一级表格中存放各个指令大类,二级表格中存放每个指令大类中包含的功能函数。
3.根据权利要求1所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:步骤s4和s5之间还包括,判断解包分析出的首字节是否小于0x20,若是,则进入s5,否则,表示指令数据为可打印字符,打印机启动打印。
4.根据权利要求1所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:步骤s5中,若解包分析出的首字节在一级表格中存在,则表示指令数据为不可执行指令,返回步骤s3;否则表示指令数据为可执行指令,则根据可执行指令的类别执行步骤s6,调用相应的功能函数。
5.根据权利要求4所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:当可执行指令为lf指令,则打印机执行换行指令;
6.根据权利要求1所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:上位机和打印机规定传输帧格式,双方数据收发按照此格式进行;上位机按照传输帧格式进行组包,将指令数据通过有线或无线的方式传输到打印机,打印机接收到指令数据后进行校验并解包。
7.根据权利要求6所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:所述传输帧包括,起始字符、帧序号、数据域长度、状态码、数据长度、数据内容、crc校验。
8.根据权利要求7所述的基于逻辑表驱动法的打印机指令控制算法,其特征在于:步骤s4具体包括如下内容,