通过串口编程控制打印机

        最近由于工作需要,一直在研究串口控制打印机. 我使用的打印机型号为: Epson M-T500 热敏打印机.手头有一份打印机的使用文档,各种命令介绍都有.但有几个命令的使用死活看不明白.

  • 绝对定位
  • 字体大小的设置(大小,加粗)
  • 图形打印
  • 字体的选择

  以下是我的打印机文档:http://files.cnblogs.com/cwbboy/终端打印机资料.rar

 1、绝对定位:
             首先,对绝对定位的概念不清楚,不指它指的绝对是以什么为参考值的。打印纸上有黑色条,打印机可以定位到黑色条,难道绝对定位是以黑色条开始计算的? 绝对定位是指往前移动指定的值,还是其他的什么? 我实在不明白。以下是文档中绝对定位的命令格式:
        

ESC    $                                            设定绝对打印位置
   格式:       ASCII: ESC         $        NL        NH
           十六进制: 1BH        24H        NL        NH
              十进制: 27        36        NL        NH                    
    说明:
NL NH 为绝对打印位置,用点数计算=(NH*256+NL)*0.125mm

   不知它为什么要弄得如此复杂?直接指定一个值就是更简单吗?

2、字体大小的设置

   在文档中有几处字体大小设置的命令:
 
    a. 设置字符打印方式
     

 ESC !                                        设置字符打印方式  
       格式:          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.  设置字符倍宽打印
                     

 ESC  S0                                       设置字符倍宽打印 
           格式:        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),点数(用n1n2)以及点图内容(用[d]k)。

     m =013233n1=0~255n2=0~3d=0~255.

      k=n1+256n2 (m=0,1)

      k=(n1+256n2) 3  (m=32,33)

      水平方向点数为n1+256n2

      ◆如果点数超过一行,起过其最大点数(与选择的点图方式有关,详

见下表)的部分被忽略。

      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中如何才能取得位图文件的颜色信息?

  在文档中,还有条码打印令。也不熟悉。先说到这里吧。 有相关经验的朋友还望能指点一二。谢了。
      

  
    

转载于:https://www.cnblogs.com/cwbboy/archive/2005/07/08/188437.html

你可能感兴趣的:(通过串口编程控制打印机)