通过串口编程控制打印机

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

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

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

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

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

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

2、字体大小的设置

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

None.gif  ESC !                                        设置字符打印方式  
None.gif       格式:          ASCII      :ESC   !   n
None.gif                       十进制     : 27   33    n
None.gif                       十六进制   :1B    21    n                      
None.gif       说明: 
None.gif            ESC !n是综合性的字符打印方式设置命令,用于选择打印字符的大小。
None.gif       打印参数n 的每位定义为:
None.gif                      X  X  D5  D4  X  X  X  X
None.gif                
None.gif
None.gif
None.gif    
None.gif
None.gif
None.gif1:倍高打印
None.gif
None.gif               
None.gif                                       1:倍宽打印 
None.gif                                         
None.gif                n的默认值为0,即字符不放大。
None.gif

   这个命令我一直没有执行成功

    b.  设置字符倍宽打印
                     

None.gif  ESC  S0                                       设置字符倍宽打印 
None.gif           格式:        ASCII       :ESC     S0
None.gif                         十进制      : 27      14
None.gif                         十六进制    : 1B      OE                         
None.gif           说明:
None.gif                在一行内该命令之后的所有字符均以正常宽度的2倍打印;
None.gif                在该命令可以用回车或DC4命令删除。
None.gif

   这个命令招行了也是没有效果的。

      其实我想实现的就是设置字体的大小和加粗,不知这个倍宽是什么效果。
  对于文字的加粗就更不明白了,好像没有加粗的命令,但想想又不可能。这个打印机功能是很全面的。

3、图形打印
   
        我在程序中生成位图文件,然后通过打印机打印出来。命令格式如下:

    

ESC *                                                 设定点图命令 

格式:            ASCII   :ESC     *       m  n1  n2  [d]k

                  十进制   :27      <?xml:namespace prefix = st1 />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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值