最近由于工作需要,一直在研究串口控制打印机. 我使用的打印机型号为: Epson M-T500 热敏打印机.手头有一份打印机的使用文档,各种命令介绍都有.但有几个命令的使用死活看不明白.
- 绝对定位
- 字体大小的设置(大小,加粗)
- 图形打印
- 字体的选择
以下是我的打印机文档:http://files.cnblogs.com/cwbboy/终端打印机资料.rar
1、绝对定位:
首先,对绝对定位的概念不清楚,不指它指的绝对是以什么为参考值的。打印纸上有黑色条,打印机可以定位到黑色条,难道绝对定位是以黑色条开始计算的? 绝对定位是指往前移动指定的值,还是其他的什么? 我实在不明白。以下是文档中绝对定位的命令格式:
格式: ASCII: ESC $ NL NH
十六进制: 1BH 24H NL NH
十进制: 27 36 NL NH
说明:
NL NH 为绝对打印位置,用点数计算=(NH*256+NL)*0.125mm
不知它为什么要弄得如此复杂?直接指定一个值就是更简单吗?
2、字体大小的设置
在文档中有几处字体大小设置的命令:
a. 设置字符打印方式
格式: ASCII :ESC ! n
十进制 : 27 33 n
十六进制 :1B 21 n
说明:
ESC !n是综合性的字符打印方式设置命令,用于选择打印字符的大小。
打印参数n 的每位定义为:
X X D5 D4 X X X X
1:倍高打印
1:倍宽打印
n的默认值为0,即字符不放大。
这个命令我一直没有执行成功
b. 设置字符倍宽打印
格式: ASCII :ESC S0
十进制 : 27 14
十六进制 : 1B OE
说明:
在一行内该命令之后的所有字符均以正常宽度的2倍打印;
在该命令可以用回车或DC4命令删除。
这个命令招行了也是没有效果的。
其实我想实现的就是设置字体的大小和加粗,不知这个倍宽是什么效果。
对于文字的加粗就更不明白了,好像没有加粗的命令,但想想又不可能。这个打印机功能是很全面的。
3、图形打印
我在程序中生成位图文件,然后通过打印机打印出来。命令格式如下:
ESC * 设定点图命令
格式: ASCII :ESC * m n1 n2 [d]k
十进制 :27 42 m n1 n2 [d]k
十六进制 :1B 2A m n1 n2 [d]k
说明:
设定点图方式(用m),点数(用n1,n2)以及点图内容(用[d]k)。
m =0,1,32,33。n1=0~255,n2=0~3。d=0~255.
k=n1+256╳n2 (m=0,1)
k=(n1+256╳n2) ╳3 (m=32,33)
◆水平方向点数为n1+256╳n2
◆如果点数超过一行,起过其最大点数(与选择的点图方式有关,详
见下表)的部分被忽略。
◆d为点图数据字节,相应位为1则表示该点打印,相应位为0,则表示
该点不打印。(k表示数据个数)
◆m用于选择点图方式。
M
Mode
纵向
横向
点数
点密度
点密度
最多点数
0
8点单密度
8
68DPI
101DPI
288
1
8点双密度
8
68DPI
203DPI
576
32
24点单密度
24
203DPI
101DPI
288
33
24点双密度
24
203DPI
203DPI
576
8点方式 24点方式
点图数据(位图) 点图数据(位图)
其中的d[k] 总是让人糊涂,不知是什么形式的数据。后来在贴子中http://community.csdn.net/Expert/topic/4130/4130818.xml?temp=.8703272,有人指点可以对取得位图的颜色信息的字节数组。
不知在.net中如何才能取得位图文件的颜色信息?
在文档中,还有条码打印令。也不熟悉。先说到这里吧。 有相关经验的朋友还望能指点一二。谢了。