利用嵌入式系统中9针打印机打印二维码的方法和装置制造方法及图纸

技术编号:10202544 阅读:185 留言:0更新日期:2014-07-12 00:44
本发明专利技术实施例提供了一种利用嵌入式系统中9针打印机打印二维码的方法和装置。该方法主要包括:根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,根据逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵。根据9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流。本发明专利技术实施例可以在一个中低端的嵌入式环境下,用9针打印机打出符合精度要求和图形面积要求的二维码图形,同时保证较高的识读率。

【技术实现步骤摘要】
利用嵌入式系统中9针打印机打印二维码的方法和装置
本专利技术涉及二维码打印
,尤其涉及一种利用嵌入式系统中9针打印机打印二维码的方法和装置。
技术介绍
二维码相比于一维条形码具有信息容量大、保密性高、抗损性强、备援性大等优点,因此近些年来在各类商业表单、票据、证件等领域有广泛的应用,可以说如今二维码的应用已经在生活中无处不在。嵌入式系统在近年飞速发展,它以其便捷性、成本低等特点在很多使用环境下具有比台式电脑更广的适用性。基于上述背景,若能在一个系统资源比较缺乏的中低端嵌入式环境下打印二维码,将会在很多领域的应用中具有优势。嵌入式系统所使用的打印机,多采用比较小巧便宜的热敏或者9针打印机。其中热敏打印机因为打印内容无法长时间保存,故不适合用于诸如发票打印一类的领域。9针打印机的问题主要是打印分辨率低(一般横向(160dpi,纵向(144dpi ),且横纵向分辨率不同,当对二维码的信息容量要求较大时,在满足可识读的情况下9针打印机打印出二维码的面积也会增加的较大,致使无法满足很多场合下的应用需求。现有技术中的一种解决9针打印机打印二维码面积过大的问题的方法为:使用图像处理类的标准算法对二维码图像进行处理后,再将二维码图像由9针打印机打印。该方法的缺点为:该方法所需要的算法库往往比较庞大复杂,不适合向中低端嵌入式系统移植。
技术实现思路
本专利技术的实施例提供了一种利用嵌入式系统中9针打印机打印二维码的方法和装置,以实现用9针打印机有效地打印二维码。一种利用嵌入式系统中9针打印机打印二维码的方法,包括:根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,所述逻辑矩阵的每个矩形单元代表了所述二维码中的一个基本单兀;根据所述逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵;根据所述9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流。一种利用嵌入式系统中9针打印机打印二维码的装置,包括:打印点数计算模块,用于根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,所述逻辑矩阵的每个矩形单元代表了所述二维码中的一个基本单元;矩阵转换处理模块,用于根据所述逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵;打印处理模块,用于根据所述9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流。由上述本专利技术的实施例提供的技术方案可以看出,本专利技术实施例通过根据逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将逻辑矩阵转换为9针打印机的打印像素矩阵,可以在一个中低端的嵌入式环境下,用9针打印机打出符合精度要求和图形面积要求的二维码图形,同时保证较高的识读率。【附图说明】为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例一提供的一种利用嵌入式系统中9针打印机打印二维码的方法的处理流程示意图;图2为本专利技术实施例二提供的一种利用嵌入式系统中9针打印机打印二维码的装置的具体结构示意图。【具体实施方式】为便于对本专利技术实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本专利技术实施例的限定。实施例一该实施例提供的一种利用嵌入式系统中9针打印机打印二维码的方法的处理流程示意图如图1所示,包括如下的处理步骤:步骤11、根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,所述逻辑矩阵的每个矩形单元代表了所述二维码中的一个基本单元。对于矩形二维码来讲,生成算法所提供的是一个M*N的逻辑矩阵,该逻辑矩阵中每一个元素代表了二维码中的一个基本单元,在图像上表现为黑或者为白。当二维码规定其每个基本单元均为等面积的矩形方块时(目前多数主流的二维码都是这样规定的),上述逻辑矩阵中每一个元素为一个黑色或白色的矩形方块,该矩形方块就是二维码打印的基本图像元素,称之为矩形单元。打印时所要处理的就是依据9针打印机的DPI (Dots Per Inch,打印分辨率)来确定每个矩形单元需要在横向和纵向各打出几针。设9针打印机的打印区域尺寸为P*Q,即要求在P*Q面积的一个区域内打印上述二维码。根据9针打印机的DPI得到九针打印机打印的横向最小点距为dpx,纵向打印针距(物理排列间距)为dpy,则横向上上述逻辑矩阵的每个矩形单元对应的打印针数为x=P/M/dpx,纵向上由于目前9针打印机都支持最小半针间距的进纸,所以上述逻辑矩阵的每个单元对应的打印针数为y=Q/N/ (dpy/2)。当χ或y不为整数时,可采用每隔i个矩形单元多打一点或少打一点的方法来近似的满足打印要求。i的算法为,设round (χ)为对χ的四舍五入运算,若round(x)〈x时,i=round (I/ (x-round(x) ))-1,此时为每打i个χ点的矩形单元后,打一个 x+1 点的矩形单元;若 round (χ) > χ 时,i=round (I/ (round(x)-x))-1,此时为每打i个χ点的矩形单元后,打一个x-Ι点的矩形单元。这样可以保证以很小的偏差打印出二维码。实际测试中对于i,若其值横向上大于M/4或纵向上大于N/4,即χ或y比较接近整数时,则可以忽略其影响。反之,X或y越接近小数中值,则i越小,从而使打印补点操作的影响越大。9针打印机受打印分辨率所限而无法打印出很精细的图像,所以χ与I值不能太低,约在低于3.2时,打印机无法打出清晰且容易识读的二维码图像,换算成mil则是每个矩形单元精度不能低于21mil。9针打印机能够打印的二维码图像的面积,取决于二维码种类(码制)和所包含的信息量,例如一个80字节信息量的QR 二维码按21mil精度打印面积为2.2cm2,可满足大多数应用场合的需求。步骤12、根据所述逻辑矩阵的每个矩形单元对应的打印点数,通过位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵。构建一个9针打印机的打印像素矩阵,该打印像素矩阵中的每个矩阵单元对应9针打印机的一个打印点,出于节省嵌入式系统内存资源的考虑。采用bitvector (位图)数据结构可以很方便的实现从逻辑矩阵转换生成打印像素矩阵的复杂过程。设置上述bitvector数据结构的具体接口为:void(*write)(void*pHandle,int row, int col, int value),其中,pHandle 表不位图数据结构指针,row表示位图元素行坐标,col表示位图元素列坐标,value表示位图元素值(本文档来自技高网...

【技术保护点】
一种利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,包括:根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,所述逻辑矩阵的每个矩形单元代表了所述二维码中的一个基本单元;根据所述逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵;根据所述9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流。

【技术特征摘要】
1.一种利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,包括: 根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,所述逻辑矩阵的每个矩形单元代表了所述二维码中的一个基本单元; 根据所述逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵; 根据所述9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流。2.根据权利要求1所述的利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,所述的根据9针打印机的打印区域尺寸和打印分辨率,计算出需要打印的二维码的逻辑矩阵的每个矩形单元对应的打印点数,包括: 设所述9针打印机的打印区域尺寸为P*Q,所述逻辑矩阵的行列数为M*N,所述九针打印机打印的横向最小点距为dpx,纵向打印针距为dpy, 横向上所述逻辑矩阵的每个矩形单元对应的打印针数为 x=P/M/dpx, 纵向上所述逻辑矩阵的每个矩形单元对应的打印针数为 y=Q/N/(dpy/2)03.根据权利要求2所述的利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,所述的方法还包括: 当所述X或I不为整数时,则每隔i个矩形单元多打一点或少打一点,所述i的算法为:设 round (X)为对 x 的四舍五入运算,若 round (x) <x 时,i=round( l/(x-round (x) ))-1,此时为每打i个X点的矩形单元后,打一个x+1点的矩形单元; ground(x) > x 时,i=round (I/ (round (χ)-χ))-1,此时为每打 i 个χ 点的矩形单元后,打一个x-Ι点的矩形单元。4.根据权利要求3所述的利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,所述的根据所述逻辑矩阵的每个矩形单元对应的打印点数,利用位图数据结构将所述逻辑矩阵的每个矩形单元映射到9针打印机的打印像素矩阵的对应矩阵单元,从而将所述逻辑矩阵转换为9针打印机的打印像素矩阵,包括: 构建所述9针打印机的打印像素矩阵,该打印像素矩阵中的每个矩阵单元对应9针打印机的一个打印点; 设置位图数据结构的具体接口为:void(*write) (void*pHandle, int row, int col,int value),其中,pHandle表示位图数据结构指针,row表示位图元素行坐标,col表示位图元素列坐标,value表示位图元素值,为O或I ; 通过所述位图数据结构将逻辑矩阵中的每个矩形单元映射成x*y个位点,将该x*y个位点按照所述位图数据结构中包含的行、列坐标值填充到打印像素矩阵中相应的x*y个矩形单元,通过这种方式遍历逻辑矩阵中的每个矩形单元,并按坐标逐个填充到打印像素矩阵中的对应矩形单元,从而实现逻辑矩阵转换成打印像素矩阵。5.根据权利要求1至4任一项所述的利用嵌入式系统中9针打印机打印二维码的方法,其特征在于,所述的根据所述9针打印机的命令格式,将所述9针打印机的打印像素矩阵转换为打印机的字节流,包括: 设所述打印像素矩阵的行和列为S*P,按照从左往右的顺序将所述打印像素矩阵的每一纵列的第I位到第T位逐个取值,一直到将所述打印像素矩阵的所有纵列都取值,形成9针打印机输入字节流的第O字节、1字节、2字节、、、一直到第P-1字节,所述T小于所述S ;按照从左往右的顺序将所述打印像素矩阵的每一纵列的第T+1位到第2T位逐个取值,一直到将所述打印像素矩阵的所有纵列都取值,形成9针打印机输入字节流的第P字节、第P+1字节、第P+2字节、、、一直到第2P-1字节; 重复执行上述处理过程,一直到将所述打印像素矩阵的所有行和列都取值,在每个字节的空位的地方填充O; 通过一维字节型数组来存储...

【专利技术属性】
技术研发人员:陈懿陈皓聂慧萍张磊高阳张亚明黄海东
申请(专利权)人:航天信息股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1