一种打印机数据的压缩传输方法与流程

文档序号:17481623发布日期:2019-04-20 06:29阅读:903来源:国知局
一种打印机数据的压缩传输方法与流程

本发明涉及打印机技术领域,尤其涉及一种打印机数据的压缩传输方法。



背景技术:

智能终端作为上位机向作为下位机的打印机发送打印数据时,在现有蓝牙连接模式下,向打印机传输打印数据的速度差异性较大。最高7kbyte/s最低只有0.5kbyte/s,但在打印过程中实际需求的数据速率在3kbyte/s左右,较低的数据传输速率导致打印机的打印效率降低。为了提升打印数据的传输速度,需要在数据传输过程对原始数据进行必要的压缩或其他方式的处理。



技术实现要素:

本发明的目的在于针对现有技术的不足而提供一种打印机数据的压缩传输方法,采用上位机对原始打印数据先进行压缩处理后再向下位机发送,下位机程序在接收到打印数据后需要进行解压操作,已提高打印数据的传输速度。

达到上述目的,本发明通过以下技术方案来实现,

一种打印机数据的压缩传输方法,包括以下步骤:

步骤s1、确定上位机中原始数据中每列数据编码的段数s和字节数w;

步骤s2、根据每列数据编码的段数s和字节数w,判断该数据列是否进行压缩处理;如果该列数据判断为需要压缩,则执行s3步;否则该列数据直接发送至下位机进行打印;

步骤s3、在该数据列压缩形成的新数据列的初始位置设置压缩标识位,依次将数据列编码中连续相同编码的值和编码个数转换为以字节为单位的信息单元,与压缩标识位共同组成新的打印压缩数据列;

步骤s4、将步骤s3处理后数据发送至下位机进行解压并打印。

进一步地,步骤s1中,对确定当前数据中每列数据编码的段数s的方式为:以每列数据编码中相同连续的打印位编码为一段,相邻两段之间以至少一个打印空位编码为间隔。

进一步地,步骤s2中,数据列是否进行压缩处理的判断方式为:若2*s+3<w,则该数据列将进行压缩处理;若2*s+3≥w,则该数据列不进行压缩处理。

进一步地,步骤s3中,压缩标识位包含两个字节,第一个字节为0xaa,第二个字节为0x55。

进一步地,在步骤s3之前,判断该数据列与上一数据列是否相同,若不同,则直接进行步骤s3;若相同,则在该数据列压缩后的初始位置设置复制压缩标识位,表示该数据列为复制压缩数据列。

进一步地,该复制压缩数据列仅包含复制压缩标识位。

进一步地,复制压缩标识位包含两个字节,第一个字节和第二个字节均为0xaa。

进一步地,步骤s3中的转换方式:将数据列编码中连续相同编码的编码个数换算为二进制的字节单元,将字节单元的最高位替换为连续相同编码的值。

进一步地,步骤s4中,信息单元中包含一个或两个十六进制字节单元,当连续编码值的个数≤127,则字节单元为一个;当连续编码值的个数>127,则字节单元为两个。

进一步地,步骤s4中,下位机对打印数据的解压方法为压缩方法的逆运算,包括以下步骤:

y1、识别当前数据列的初始位置是否具有压缩标识位,若无压缩标识位,则直接打印,若具有压缩标识位,则进行解压处理;

y2、对待解压处理的数据列去掉初始位置的压缩标识位;

y3、将待解压处理的数据列中信息单元还原为相应的实际编码的编码值和编码值个数,对实际编码进行打印。

通过采用上述技术方案,本发明与现有技术相比较,该打印机数据的压缩传输方法使打印数据传输稳定,尤其在无线通讯等需要小数据包传输的场合,通过一定的算法实现了大数据包压缩为小数据包的数据传输;通过对打印数据的压缩过程实现对数据的加密。

附图说明

图1为本发明打印机数据的压缩传输方法的流程示意图。

具体实施方式

为了进一步描述本发明,下面结合附图进一步阐述一种打印机数据的压缩传输方法的具体实施方式,以下实施例是对本发明的解释和应用实例而本发明并不局限于以下实施例。

以标签打印机为例,打印数据以标签的左下角为起点,从下致上排列打印点,1为打印位编码,0为打印空位编码。每8个点组成1mm的打印图形单元,每一列的打印总点数应该是8的整数倍。数据列在水平方向从左至右排列,形成最终的打印图像。考虑到打印机最大打印宽度为192个点,每列数据最多为24个字节。只有压缩后的数据列包含小于24个字节,才有效果;若大于等于24个字节的数据,则没有压缩意义。因此本发明通过使用行程编码针对需压缩数据列进行压缩处理,不需要压缩部分的数据列正常传输

上位机通过应用程序将打印数据以一维字节数组形式,发送给下位机程序,如一个sg指令中的data域是一个一维数组,数组中包含了多列打印数据,在每列数据的初始位置会有两个字节的压缩标识位,来标识这列数据是按哪种方式进行存储的。

如图1所示一种打印机数据的压缩传输方法,包括以下步骤:

步骤s1:确定上位机中原始数据中每列数据编码的段数s和字节数w。对上位机的原始打印数据中的数据列编码进行分段,并获取当前数据列的段数s和当前数据列的原始字节数w。在具体实施例中,步骤s1中,对当前数据列的分段方式为:以当前数据列中连续的打印位编码为一段,相邻两段之间以至少一个打印空位编码为间隔。

步骤s2:根据每列数据编码的段数s和字节数w,判断该数据列是否进行压缩处理;如果该列数据判断为需要压缩,则执行s3步;否则该列数据直接发送至下位机进行打印。优选地,步骤s2中,当前数据列是否进行压缩处理的判断方式为:若2*s+3<w,则当前数据列将进行压缩处理;若2*s+3≥w,则当前数据列不进行压缩处理。

步骤s3:在该数据列压缩形成的新数据列的初始位置设置压缩标识位,依次将数据列编码中连续相同编码的值和编码个数转换为以字节为单位的信息单元,与压缩标识位共同组成新的打印压缩数据列。在打印机的打印数据一般都是有连续的0或1组成,组成10101010或01010101的数据元极其稀有,尤其是在标签的边缘。因此将0xaa(10101010)作为压缩数据的初始位置的压缩标识位。

具体地,将数据列编码中连续相同编码的编码个数换算为二进制的字节单元,将字节单元的最高位替换为连续相同编码的值。以字节单元的最高位为连续编码的编码值标识位,字节单元的低7位为连续编码值的个数。当字节单元为两个时,连续编码值的个数为第一个字节的低7位加上第二个字节的低7位的和。

在步骤s3中,压缩标识位包含两个字节:若第一个字节为0xaa,第二个字节为0x55(01010101),则当前数据列为压缩模式数据列,表示当前数据列编码经过压缩处理;

优选地,在步骤s3之前,判断该待压缩的数据列与上一数据列是否相同,若不同,则直接进行步骤s3;若相同,则在该数据列压缩后的初始位置设置复制压缩标识位,表示该数据列为复制压缩数据列。

优选地,该复制压缩数据列仅包含复制压缩标识位。复制压缩标识位包含两个字节,第一个字节和第二个字节均为0xaa。若第一个字节和第二个字节均为0xaa,则当前数据列为复制压缩数据列,表示当前数据列复制相邻的上一压缩数据列。

相应的,若当前数据列的初始位置无压缩标识位,则无需考虑是否是连续的打印空位0或打印位1,直接将每8个连续的编码(0或1)存入一个字节单元,比如五个0和三个1存储到一个字节中为0x07(00000111),并直接进行数据传输。

将待压缩处理的数据列中连续编码的编码值和编码值个数存储至由字节单元组成的信息单元中,形成新的打印压缩数据列。优选地,该步骤中信息单元中包含一个或两个十六进制字节单元,当连续编码值的个数≤127,则字节单元为一个;当连续编码值的个数>127,则字节单元为两个。

如一实施例中,当连续的打印空位0的个数小于127的情况下,该连续的打印空位数据存储到包含一个字节单元的信息单元中:该字节单元最高位为0,表示当前存储的都是0;低7位表示一共有多少个0,比如连续的5个0对应的字节存储为0x05(00000101)。

当连续的打印位1的个数小于127的情况下,该连续的打印位数据存储到包含一个字节单元的信息单元中:该字节单元最高位为1,表示当前存储的都是1;低7位表示一共有多少个1,比如连续的15个1对应的字节存储为0x8f(10001111)。

当连续的打印空位0的个数大于127的情况下,该连续的打印空位数据存储到包含两个字节单元的信息单元中:第一个字节和第二个字节的最高位都是0,表示当前存储的都是0;第一个字节的低7位加上第二个字节的低7位的和,共同表示一共有多少个0,比如连续的128个0对应的字节存储为0x7f0x01(0111111100000001)。

当连续的打印位1的个数大于127的情况下,该连续的打印位数据存储到包含两个字节单元的信息单元中:第一个字节和第二个字节的最高位都是1,表示当前存储的都是1;第一个字节的低7位加上第二个字节的低7位的和,共同表示一共有多少个1,比如连续的128个1对应的字节存储为0xff0x81(1111111110000001)。

步骤s4:将处理后的全部打印数据列发送至下位机进行解压并打印。优选地,下位机对打印数据的解压方法为压缩方法的逆运算,包括以下步骤:

y1、识别当前数据列的初始位置是否具有压缩标识位,若无压缩标识位,则直接打印,若具有压缩标识位,则进行解压处理;

y2、对待解压处理的数据列去掉初始位置的压缩标识位;

y3、将待解压处理的数据列中信息单元还原为相应的实际编码的编码值和编码值个数,对实际编码进行打印。

显然,本发明的上述实施方式仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无法对所有的实施方式予以穷举。凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1