送端口打印程序的难题(200分)

  • 主题发起人 主题发起人 gzsamlee
  • 开始时间 开始时间
G

gzsamlee

Unregistered / Unconfirmed
GUEST, unregistred user!
1.程序只能用送端口方式(客户要求速度快)

a.纯文本用这种方式已经实现,具体是先生成一个包含打印控制码的.txt文件然后
用type .txt >prn进行打印。

b.但某些需要打印文本加图形的就很难用端口方式实现,图形主要是一个邮戳
即是一个圆圈+一些旋转的汉字

难点:如何用送端口方式画圆+旋转汉字
备注:打印机自带了汉字库

大伙有什么好主意吗?






 
真有人现在还需要这种程序?

我在8年前就做过,当时用C,方法是把要打印的内容生成bmp,
然后利用打印机的“图像打印”功能,(就是按像素打印),
发送相应特殊指令后,把图像按照3*8个点一组的方式发送过去
(因为是24点阵打印机),就可以出来图像了。

那时候的代码早就跑到不知道那个阴沟去了,但原理确实如此,
也是替邮局做的邮戳自动打印系统。
 
”图像按照3*8”如何实现,要知道BMP文件的格式吗,能贴个例程吗?
谢谢
 
3*8就是把bmp图像的像素点当作一个2维数组,
读取第1,2,3列各8个点,发送到打印机上,然后是第4,5,6列。
bmp的宽度需要能被3整除,这样读完第一个高度为8的“行”的时候。
发送回车,然后开始读第二“行”,同理,bmp的高度应该能被8整除。
实际上就是自造字符,发送给打印机。

例如,bmp为96*96的图像:pix[0..95,0..95],
则pix[0,0]...[7,0],pix[0,1]...[7,1],pix[0,2]...[7,2]为第一组,
pix[0,3]...[7,3],pix[0,4]...[7,4],pix[0,5]...[7,5]为第二组,
以此类推,具体怎样发送,要看打印机手册。
 
谢谢。看来这里高手不少,有空要多来来。
可惜就是有点慢。
 
这么快就解决了?恐怕没有吧,建议你解决问题之后再给分。
当然,如果你放弃了这种方法,那就没问题了... :-)
 
后退
顶部