PC机与高速打印机的配合

Author: Date: 1991-12-27

        一、高速打印机控制码在WS环境中的实现
        购买高速打印机时随付的操作手册中,一般都用BASIC语句举例说明其控制码的应用方法。参照操作手册的实例,我们不难在其它高级语言,包括数据库语言DBASE中加以变通套用。也就是说,高速打印机的控制码功能要在用高级语言编写的程序中实现是很直观和方便的。然而,高速打印机的控制码功能要在文字编辑软件中实现,就比较困难了。
        虽然,高速打印机在与带来硬盘和带有高级印刷排版系统的微机配用时,由于附加设备有自己独立的汉卡和独特的输出控制方式,因此将不存在配用时的障碍,目前国内推广的几种桌面印刷系统,在打印速度和质量上并不能令人满意。其原因是它们撇开了高效率的打印机硬字库。
        为此,在讨论PC机与高速打印机配用时,设定了二个前提:一是不附加任何高级印刷排版系统,甚至连硬盘也可以不要,而只是让高速打印机与可在最简单配置的PC机中都可以应用的文字编缉软件WORSTAR或EDLIN打交道;二是当微机启动时不装入任何打印驱动程序,其目的是为了利用高速打印机的硬字库,以提高打印速度。
        PC机与高速打印机配用时,编辑的文件可以在WS环境下用P命令打印输出,但文件中不能插入WS的字型控制码,因为高速打印机对它们不能识别;同样,也不能直接插入高速打印机的控制码,因为WS软件也不识别它们。这里显然存在一个不兼容的问题。由于高速打印机的功能控制码比WS丰富得多,所以我们需研究只能是以WS来适应高速打印机。
        另一种打印输出方法是在DOS环境下,用TYPE文件名>PRN的方式来打印输出编辑好的文件。这时,可在这些文件中的多处插入控制命令,以便对输出作各种控制,但这些控制命令并非直接采用高速打印机的控制码,而是它的转换形式。下面将介绍这种转换方法。
        分析高速打印机控制码的组成,可以找出一条规律。就是所有控制码都是以不可显示的控制符开头,其后紧跟着可显示的单一字符或数码。例如:设置倍宽
        打印的控制码为:ESC  W1。其中:ESC就是不可分割且不可显示的控制符。
        高速打印机控制码在WS环境中实现的关键就是寻拭控制符的转换方式。
        高速打印机控制码涉及到的控制符可归纳为表1。
        表1
        控制符    NUM   BEL   BS   HT   LF   VT   FF   CR   SO   SI   DCI
        ASCII码值   0   7    8    9  10   11   12 13   14   15 17
        控制符    DC2  DC3  DC4   CAN  EM   SUB  ESC FS   SP   DEL
        ASCII码值  18  19   20    24  25   26   27 28   32   127
        实践表明:以上控制符在WS环境中,应当用^P□的方式来实现转换。
        其中:^P代表〈CTRL〉+〈P〉键,我们称之为转换控制码的前导符。当键入前导符时,屏幕上有反应,但插入处无显示。
        □代表〈控制符的ASCII码值加上64后对应的字符〉键。键入后,插入处将有相应的显示。
        注意:当控制符的ASCII码值加上64后大于90,也就是对应的字母排在大写字母Z之后。那么在转换时,□将代表〈CTRL〉+〈控制符的ASCII码值加上64后对应的字符〉键。
        例:换页控制码为FF,对应的ASCII码值为12。
        12+64=76
        在ASCII码表中,76对应的字符为L,排在Z之前。那么,FF就可用^  PL来转换。
        又例:ESC对应的ASCII码值为27。
        27+64=91
        在ASCII码表中,91对应的字符为[,排在Z之后。那么,ESC就可用^P^[来转换。
        根据以上规律,控制码中的控制符可用表2所示的方式来转换。表2
        控制符   NUL   BEL   BS   HT   LF   VT   FF   CR
        WS下转换  ^P@ ^PG ^PH ^PI ^PJ  ^PK ^PL ^PM
        控制符   SO SI    DC1   DC2   DC3   DC4   CAN   EM
        WS下转换  ^PN ^PO  ^PQ  ^PR  ^PS ^PT  ^PX  ^PY
        控制符   SUB    ESC      FS       SP     DEL
        WS下转换  ^PZ   ^P^  ^P^\    ^P^_  ^P^?
        至于跟随在控制符后面的单一字符或数码,在转换过程中可以不加改变。
        例:ESCW1可用^P^[W1来转换。
        在用WS编辑文件完成并经检查无误后,若欲利用高速打印机对其进行字体、字型、行距和其它多方面的修饰,可以移动光标找到文件中的相应位置,先敲插入键后,再敲入已经换好了的相应的控制命令,然后再敲一次插入键后回车即可。
        例如,要将某字段的字体修饰为斜体字,可先查手册得知:设定斜体的控制码为ESCi1,撤消修饰打印的控制码为ESCi0。然后移动光标至此字段前插入^P^[i1,再移动光标至此字段尾插入^P^[i0即可。
        在控制码转换的过程中,有两点需要给予注意。一是控制命令插入后,由于其后的文字形体发生了相应的变化,使打印出来的字段位置也所变动,这就要求在试打印后给予相应的调整。二是除了“一行有效倍宽”等少数控制命令外,大多数控制命令都是配对使用的。例如:联机与脱机,设定粗打与撤消粗打等等。这些配对的控制命令若单一使用时,打印机会一直维持其控制状态,除非遇到相关的配对命令或遇到打印机的复位命令。因此在文件的何处插入配对命令是要有一定技巧的。一般来说,配对的命令应尽量紧夹着所作用的字段,以减少其对文件其它部份的影响。至于要设置对整篇文件起作用的控制命令,可以插入行的形式插在文件的开头。例如字体、行距、打印速度、打印质量、左右边限设定等命令。但要注意在文件结束处,需加上一条打印机复位命令^P@,以使打印机在打印完后恢复到开机时的原始设定状态。
        高速打印机的控制命令极为丰富。以CR-3200高速打印机为例,各类控制命令共达164条。但读者只要有高速打印机的操作手册,并理解以上所述的转换方式,就可将所有的控制码全部转换成可在WS环境下使用的控制命令。
        各种高速打印机的控制码虽然略有不同,但以上转换的原则都是类似的。同时,高速打印机控制码还可在除WS以外的其它编辑软件中实现转换。其区别只是转换的前导符有所不同罢了。例如在行编辑软件EDLIN中,将以^V□的方式来实现转换,这里的前导符由〈CTRL〉+〈V〉键所充任。
        二、高速打印机功能的方便设置
        依上所述,解决了高速打印机控制码在文字编辑中的转换应用。然而实际上,除了对文件个别字段的输出作某种控制之外,用户也经常需要对欲打印输出的整篇正文作多项的打印设置。
        据高速打印操作手册的介绍,打印机面板上众多的按键可以单独、也可以组合作多项的打印设置。例如设置打印字体类型,选择打印速度、密度,设置字间空距,实现联机、脱机,装纸、出纸、退纸,跳行,自检,微量正反向走纸,清除缓冲区等等。   对于以上提到的这些设置,我们可以直接在打印机面板上实现,也可通过在正文题头插入已转换的控制命令行来实现。
        但是,面板的设置毕竟是很有限的,而过多地依赖在正文题头插入转换控制命令,这对只会简单操纵而理论知识不足的操作人员来说是件繁琐且容易出错的事。为此可编一个“高速打印机功能设置”程序供打印时使用。
        三、高速打印机的分页打印
        WS环境下编辑的文件,若不插入高速打印机控制码转换的控制命令,是可以采用WS的P命令打印的。但若插入了转换控制命令,就不能再用WS的P命令打印,而只能在DOS下采用TYPE文件名>PRN的方式打印了。这样就给分页打印带来了一定的困难。
        解决的办法之一是在WS编辑时,在需要分页的地方插入页号行,人为键入“第××页”字样,然后在页号行后再插入跳页命令PL,就可实现分页打印。显然,这方法使用起来十分不便。
        高速打印机有较完善的缺纸脱机功能,每页纸打印完后,打印机会立即脱机报警,这时只要将新的一页纸装进,并按下联机按钮,打印就可继续进行。这虽然也基本达到分页的目的,但它有两个缺点:一是无法打印页号,这给页较多的文件的打印带来了识别、整理、装订的困难;二是无法控制页长和底栏空行数,这使打印效果既不够规范美观,也给打印蜡纸带来不便。为解决这个问题,可编一个既能选择打印范围又可打印页号的分页打印程序供使用。
        WS编辑的文件,每隔55行,会自动插入一个分页符号。当用P命令打印时,机器会提出“消除分页号?”的问题,若回答“Y”,打印时分页符号将不起作用。但在DOS下打印,若无适当的方法去除分页符号,那未高速打印机会把分页符号误认为其它含义而使打印结果发生我们不希望的错乱。
        PC机与高速打印机配用,除上述外,尚有“文件对折打印”,“可供装订成册的分页打印”,“多台PC机与单台高速打印机联用”等项目也很有实用价值。