首页 理论教育 深入剖析点阵出针规格化程序

深入剖析点阵出针规格化程序

时间:2023-10-30 理论教育 版权反馈
【摘要】:图6-8 虚拟点阵图注:M为一行待打印的点阵图;M′为辅助运算的点阵图;MM′为合并后实际出针的点阵图。

深入剖析点阵出针规格化程序

除了针数较少的九针打印头外,大部分型号的打印头中的打印针并不是完全呈一列对齐排列,所以需要对其进行规格化处理。

1.双列针规格化程序

对于双列直线排列的打印头,可建立两个缓冲器,分别接收奇数针号和偶数针号的点阵信息,出针时,其中一个缓冲器的数据要迟一些(由奇偶针之间的距离而定)送到出针存储器中。

978-7-111-33336-4-Chapter06-12.jpg

图6-7 字符“1”字模在字库里的信息

这里有几个概念需要注意:

1)虽然在打印过程中(对于从左至右的打印而言)是偶数针先打,奇数针再到位补打,这仅仅是对同一列的点的打印而言的。而在针数据的建立过程中,同一次24位针数据的形成却是奇数针的针数据先建立,再建立偶数针数据的,只是此时刻奇、偶数据不是同一单元里的内容而已,这一点已由硬件电路和监控程序决定了。

2)“偶数针先打,奇数针再到位补打”,这句话是有一个打印方向作为前提的,也就是说,在实际打印过程中,对于从左至右的打印方向来说,奇数针是先打印,反过来则是偶数针先打印的。

3)对从左至右的打印而言,在开始打印的某几列和结束打印的某几列(列数取决于奇偶针之间的距离)中,分别是由偶数针和奇数针单独打印的。因为对于一行字符的打印,会出现偶数针已在打印,而奇数针还未进入印区和偶数针已走出印区而奇数针还在补打的情况。当然,对于从右至左的反向打印同样有类似情况。

2.多列针规格化程序

对于更复杂的针排列的打印头,其规格化就更复杂一些,下面以打印头从左向右进行打印为例子进行说明。

假设打印头一共有n根针。(www.xing528.com)

以最右边的打印针为基准,测量出每根打印针距离基准打印针的水平距离,距离不以毫米或英寸等为单位,而是以字车移动的标准步距为单位,数值为标准步距的倍数,例如对于180DPI的打印,标准步距为1/180in,假设某根针的距离的尺寸值为3/180in,则其距离为3。这些数值以数组A[i]存放,即A[1]对应1号针距离基准打印针的距离,A[2]对应2号针距离基准打印针的距离,A[i]对应i号针距离基准打印针的距离,直至n号针(基准针也是有距离,明显的它的值为0)。

在这里对于打印的宽度也以上述的标准步距的倍数来表示,例如对于80列的打印宽度,实际打印幅面的尺寸为80×0.1in=8in,则相对标准步距有8/(1/180),即1440个标准步距,在这里设定m=1440。

对上述数组进行求最大值运算,求出最大值MAX

当要打印时,打印机的处理器根据输入的数据进行处理,在内存里暂存一行的待打印内容,并用一个二维数组M来表示,M的行数等于打印头的针数,列数则为上述打印打印幅面相对于标准步距的倍数,在这里假设等于m,如图6-8所示,打印点的点阵M的每一行的所有的点用一系列的二进制数表示,0表示空白,1表示有需打印的点,为了方便处理,每8个点用一个字节存放。

处理器在内存中生成一个虚拟点阵M′,点阵的行数与M一样,列数为上述的MAX,里面的所有的值都暂时设为0。

978-7-111-33336-4-Chapter06-13.jpg

图6-8 虚拟点阵图

注:M为一行待打印的点阵图;M′为辅助运算的点阵图;MM′为合并后实际出针的点阵图。

MM′合并为一个点阵MM′,然后对MM′的每一行进行整体的右移运算,其中第1行右移的位数为A[1],第2行右移的位数为A[2],如此类推,第i行右移的位数为A[i],直至所有行都运算完毕。

打印机的处理器驱动字车运动,同时对MM′的每一列进行扫描,然后驱动打印头的所有的针,列中有对应打印针的数为0的不出针,数为1的则出针,字车每走过一个单步距,就扫描一次,驱动打印头的所有打印针一次,一直到把MM′的所有列都扫描完毕进行打印,此时就结束了打印内容的一行的打印。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈