喷墨打印机连续纸彩色实时绘图DOS时代并不是什么新鲜事,HP thinkjet做这事儿很方便,后来CANON也有类似的打印机,再后来EPSON stylus也能做这事儿,总结一下心得:
1. DOS时代是简单的色彩世界
在红绿蓝三基色上,混色出黄品青,而实际上墨水直接就是多色的。HP GL编程会使用SPn等笔编号画图,QBasic会用QBcolor,反正就那几种颜色。ESC/PK打印机控制码也会说明颜色是 黑、红、绿、黄、蓝、品、青,而白色就不提了,实际上,就是RGB(红值、绿值、蓝值),从ox000000到0xffffff
2. 打印机当作连续绘图仪
实时数据采集、处理、绘图,要么胶片,要么打印输出,其它方式会破坏图的连续性,而彩色打印机是再好不过的连续绘图设备了,比模拟记录仪还好用。但是,要让它连续做图,需要做些处理,一是设定足够小的页面长度,二是取消页面底部和顶部的空白,这样一张接一张的画就是连续图。
彩色处理还是那几种颜色,其实绘图也不需要太多颜色,将多种混色按0x000000至0xffffff值进行阶跃量化成黑、红、绿、黄、蓝、品、青就可以了,不要过渡色。这点与现在多彩绘图是完全不同的,ESC/P也好、HP PCL也好,也没找不到更多的编程颜色选择。
3. GDI帮助更方便
Windows GDI还是很方便的,随便放个PICTURE框,从FORM中产生个画板,就可以画线画园画封闭图形,通过DDI送打印机就出图了。但要自己连续做图,DDI环节就自己来了,实际上就是不打印机装驱动程,读屏幕上的颜色点,换成Byte值送打印机,就直接做图了。在屏幕上,Point读点很容易,Pset放置点也很容易,要放到打印机上就别Pset了,直接用ESC/P或PCL指令转换数据成点就行了。
4. 行打是必然选择
Page Discription页面描述很适合激光打印机,尽管最早的激光打印机也是连续穿孔纸的。即打即停,或是即绘即停,则是实时绘图输出的要点。有Tractor拖纸架的打印机最好,没有的话靠摩擦轮送纸也可以,只是时间长了容易跑偏、要人为干预。
哎,老调重谈,个人心得而已,或许在ms的unidrv上可以做点文章,再慢慢Study吧。