一种热敏打印机的点行压缩算法的制作方法

文档序号:21317801发布日期:2020-06-30 20:47阅读:743来源:国知局
一种热敏打印机的点行压缩算法的制作方法

本发明涉及打印机技术领域,具体涉及一种热敏打印机的点行压缩算法。



背景技术:

手机app通过蓝牙与热敏打印机连接后,app端发送数据给打印机(如图1),打印机接收到数据后进行打印操作。由于手机款式不同,蓝牙各有优劣,在蓝牙传输速度慢时,偶尔会遇到打印图片时卡顿、图片数据错乱、失真、打印有白线等问题。

手机与打印机交互时,遇到传输速度变慢(特别是ble单包最大传输长度更小,大概就一百字节),当单包数据过大时,数据会被蓝牙自动拆分成小包,这样会造成打印机接收数据缓慢,延迟,缺失等,打印时出现了卡顿、图片数据错乱(如图2)、失真、打印有白线(如图3)等问题。而使用普通压缩方法起不到很好的效果,如压缩太厉害又会造成打印模糊,清晰度不够



技术实现要素:

针对现有技术的不足,本发明公开了一种热敏打印机的点行压缩算法,用于解决手机app通过蓝牙与热敏打印机连接后,app端发送数据给打印机,打印机接收到数据后进行打印操作。由于手机款式不同,蓝牙各有优劣,在蓝牙传输速度慢时,偶尔会遇到打印图片时卡顿、图片数据错乱、失真、打印有白线等问题。

本发明通过以下技术方案予以实现:

本发明公开一种热敏打印机的点行压缩算法,包括以下步骤:

s1获取图片数据并转化为点行数据存储到列表中;

s2从列表中依次取出各点行数据;

s3对点行中的点位数据做计数累加处理;

s4当点位数据计数累加到6时,比较前6个点位数据,并做相应处理;

s5重复s3,直至整个列表结束,得到点行压缩数据。

更进一步的,所述s3中取出一点行数据后,点行左边为起始位,从第0位开始依次取出各点位数据进行比较该位数据是1还是0,并定义一个变量index用于计数,index从0开始累加。

更进一步的,所述s4中,当6个点位数据位全0时index加1,继续取下一位数据,并用当前位与前一位数据比较。

更进一步的,如果当前位与前一位数据不相同,计下当前index值,数据做置0处理,index与3f进行&位运算,再加上0x40,index值重置为0,继续从下一位取出数据比较,并执行s4。

更进一步的,如果当前位与前一位数据相同,index继续加1,当index值达到61时,则61位全为0,数据做置0处理,index与3f进行&位运算,再加上0x40,应为0x7d,index值重置为0,继续从下一位取出数据比较,并执行s4。

更进一步的,所述s4中,当6个点位数据全1时,index加1,继续取下一位数据,并用当前位与前一位数据比较。

更进一步的,如果当前位与前一位数据不相同,计下当前index值,数据做置1处理,index与3f进行&位运算,再加上0x80,index重置为0,继续从下一位取出数据比较,并执行s4。

更进一步的,如果当前位与前一位数据相同,index继续加1,当index值达到61时,则61位全为1,数据做置1处理,index与3f进行&位运算,再加上0x80,应为0xbd,index值重置为0,继续从下一位取出数据比较,并执行s4。

更进一步的,所述s4中,当6个点位数据不是全0或全1时,把6个点位数据置为原始数据,与3f进行&位运算;index值重置为0,继续从下一位取出数据比较,并执行s4。

更进一步的,当一点行数据都比较完毕后,最后字节填充如为原始数据位数不足6位时,则低位补零。

本发明的有益效果为:

本发明点行压缩法简单,方便使用。根据热敏打印机特性,位图数据特点以点行为压缩单位,方便打印机传输;可对一般压缩后的图片进行再次压缩,且压缩占比大,极大幅度的减少图片数据的发送数量,并且对数据做到无损。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是背景技术app端发送数据给打印机示意图;

图2是背景技术打印时出现了卡顿、图片数据错乱的示意图;

图3是背景技术是打印失真、打印有白线示意图;

图4是本发明原理框图;

图5是实施例对比用原始图;

图6是实施例对比用普通压缩后数据前10行图;

图7是实施例对比用用点行压缩后数据前10行图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例公开如图4所示的点行压缩算法,原理主要是根据热敏打印机打印时的特性,热敏打印机打印机头片每次加热单位是一点行,例如分辨率203dpi,纸张宽度48mm的热敏纸,一行大概384个加热点,所以每一行最大打印显示的点阵数量的字节384/8=48个字节的点阵数据。每一个字节共有八位加热数据位,数据为1的位最终加热打印成黑色,数据为0则不加热,即为本身白色。根据加热数据不同,最终显示不同的加热效果,也就是不同的灰白图片。选择以每一个点行为一个压缩单位,进行压缩,这样不会损坏打印机的结构,方便打印机操作数据,而且压缩效果明显,无损图片原本数据。

点行压缩法把打印位图数据每个字节分为两部分,高两位为属性部分,低六位为数据部分。属性部分分别为00,01,10,11分别代表后面数据部分为原始数据,数据部分为0的位数,数据部分为1的位数,预留。当高两位为00时,数据部分代表原始数据;当高两位为01时,数据部分代表0的个数;当数据部分为10时,数据部分代表1的个数;当高两位为11时,暂无定义。下面举几个例子。

例如0x06,高两位为00,解压后为000110;

例如0x50,高两位为01,数据部分为010000,解压后为16个0,即0x00,0x00。如为0x7d,则为61个0;

例如0x8f,高两位为10,数据部分为001111,解压后为15个1。

具体实现步骤以打印机分辨率为300dpi,热敏纸张宽度为48mm,一点行也就是576点为例进行说明:

步骤一、把图片数据转化为点行数据,并存储到列表中;

步骤二、从列表中依次取出各点行数据;

步骤三、取出一点行数据后,点行左边为起始位,从第0位开始依次取出各点位数据进行比较该位数据是1还是0,并定义一个变量index用于计数,index从0开始累加;

步骤四、当index累加到6时,判断前面6个点位数据,应只有以下三种情况:

1、6个点位数据位全0时index加1,继续取下一位数据,并用当前位与前一位数据比较?如果不相同,计下当前index值,数据做置0处理,index与3f进行&位运算,再加上0x40即可,index值重置为0,继续从下一位取出数据比较,执行步骤四;如果相同,index继续加1,当index值达到61时,则61位全为0,数据做置0处理,index与3f进行&位运算,再加上0x40,应为0x7d,index值重置为0,继续从下一位取出数据比较,执行步骤四;

2、6个点位数据全1时,index加1,继续取下一位数据,并用当前位与前一位数据比较?如果不相同,计下当前index值,数据做置1处理,index与3f进行&位运算,再加上0x80即可,index重置为0,继续从下一位取出数据比较,执行步骤四;如果相同,index继续加1,当index值达到61时,则61位全为1,数据做置1处理,index与3f进行&位运算,再加上0x80,应为0xbd,index值重置为0,继续从下一位取出数据比较,执行步骤四;

3、其它情况,即6个点位数据不是全0或全1时,把6个点位数据置为原始数据,与3f进行&位运算即可;index值重置为0,继续从下一位取出数据比较,执行步骤四;

步骤五,当一点行数据都比较完毕后,最后字节填充如为原始数据位数不足6位时,则低位补零。例如最后数据为位1001,补充后为100100。

步骤六,重复步骤三,直至整个列表结束。

本实施例点行压缩法简单,方便使用。根据热敏打印机特性,位图数据特点以点行为压缩单位,方便打印机传输;可对一般压缩后的图片进行再次压缩,且压缩占比大,极大幅度的减少图片数据的发送数量,并且对数据做到无损。

实施例2

本实施例公开一种热敏打印机的点行压缩算法,用于解决手机app通过蓝牙与热敏打印机连接后,app端发送数据给打印机,打印机接收到数据后进行打印操作。由于手机款式不同,蓝牙各有优劣,在蓝牙传输速度慢时,偶尔会遇到打印图片时卡顿、图片数据错乱、失真、打印有白线等问题。

本发明通过以下技术方案予以实现:

本发明公开一种热敏打印机的点行压缩算法,包括以下步骤:

s1获取图片数据并转化为点行数据存储到列表中;

s2从列表中依次取出各点行数据;

s3对点行中的点位数据做计数累加处理;

s4当点位数据计数累加到6时,比较前6个点位数据,并做相应处理;

s5重复s3,直至整个列表结束,得到点行压缩数据。

s3中取出一点行数据后,点行左边为起始位,从第0位开始依次取出各点位数据进行比较该位数据是1还是0,并定义一个变量index用于计数,index从0开始累加。

s4中,当6个点位数据位全0时index加1,继续取下一位数据,并用当前位与前一位数据比较。

如果当前位与前一位数据不相同,计下当前index值,数据做置0处理,index与3f进行&位运算,再加上0x40,index值重置为0,继续从下一位取出数据比较,并执行s4。

如果当前位与前一位数据相同,index继续加1,当index值达到61时,则61位全为0,数据做置0处理,index与3f进行&位运算,再加上0x40,应为0x7d,index值重置为0,继续从下一位取出数据比较,并执行s4。

s4中,当6个点位数据全1时,index加1,继续取下一位数据,并用当前位与前一位数据比较。

如果当前位与前一位数据不相同,计下当前index值,数据做置1处理,index与3f进行&位运算,再加上0x80,index重置为0,继续从下一位取出数据比较,并执行s4。

如果当前位与前一位数据相同,index继续加1,当index值达到61时,则61位全为1,数据做置1处理,index与3f进行&位运算,再加上0x80,应为0xbd,index值重置为0,继续从下一位取出数据比较,并执行s4。

s4中,当6个点位数据不是全0或全1时,把6个点位数据置为原始数据,与3f进行&位运算;index值重置为0,继续从下一位取出数据比较,并执行s4。

当一点行数据都比较完毕后,最后字节填充如为原始数据位数不足6位时,则低位补零。

本实施例效果如下,图5-原图,图6-普通压缩后数据前10行,图7-用点行压缩后数据前10行,第1行,普通压缩如图6一行长度为72字节,用点行压缩法再次压缩后如图7为10字节,压缩比达到7.2。图5整张图普通压缩后总大小为3024字节,再用点行压缩后总大小为1743字节,压缩比为1.73.点行压缩法压缩占比大,能很好的解决了打印机收到的数据慢,延迟,缺失,并造成打印机打印图片时,遇到打印卡顿、图片数据错乱、失真、打印有白线等问题。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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