【问题标题】:How to draw line with ESC/POS?如何用 ESC/POS 画线?
【发布时间】:2013-02-25 16:38:00
【问题描述】:

我需要使用 ESC/POS 命令在我的收据上画一条水平线(实线,但虚线将是完美的!)。

现在我正在使用一些技巧,允许我通过使用带有一些空格字符的“UnderLine”命令来绘制一条水平线,但我不喜欢它,因为我需要为线条提供一些绘图属性,例如“高度” ":

PRINT #1, CHR$(&H1B);"-";CHR$(1); <==== set underline on
PRINT #1, "            "; CHR$(&HA);
PRINT #1, CHR$(&H1B);"-";CHR$(0); <==== set underline off

我相信位图命令会发生这种情况,但我不知道该怎么做。

提前致谢

【问题讨论】:

  • 虚线不是"--------------"吗?或者"- - - - - - - - - -"
  • 只打印下划线有什么问题? chr$(95)
  • 是的,这是最简单的方法,但我需要它自动全宽打印。并且还需要给线一个高度。
  • @Muhammad 您是否找到了一个好的解决方案?我需要在页面上画线(从左到右)。问题是,我不知道我应该使用多少个“破折号”(或“空格”,如果使用下划线)。现在,这是一个手动过程

标签: escaping line draw epson


【解决方案1】:

一个老问题,但我最近也很纠结。

大多数收据打印机仍然有旧的代码页,如 PC850、PC858、PC1119 等。这些页面中的大多数都有旧的 DOS 框字符(如╚ ╬ ┬ ┐)。

打印我发现的一行的最简单方法是使用 character(196) 并重复它 n times 以获取 ─────

通过这种老式方式,您还可以打印盒子等。

【讨论】:

    【解决方案2】:

    另一种打印特殊图形的方法是使用位图命令 0x1B 0x2A (ESC *) 然后设置整个页面的位数,然后生成一个 8 位高 x xx 字节宽的像素图。 8 位由 MSB(顶部)到 LSB(底部)表示,因此实心 8 像素高线为 0xFF。我经常使用数据字节 0x80 来绘制一条 1 像素的线,或者使用 0x01 来将线放在底部。另外,你可以参考这篇文章:http://nicholas.piasecki.name/blog/2009/12/sending-a-bit-image-to-an-epson-tm-t88iii-receipt-printer-using-c-and-escpos/ 玩得开心。

    【讨论】:

      【解决方案3】:

      使用mike42's escpos-php

      $printer->textRaw(str_repeat(chr(196), 40).PHP_EOL);
      

      【讨论】:

        【解决方案4】:

        您必须进入页面模式,并将字符间距设置为 0 + 使用小字体和粗体样式,以便下划线之间没有更多空间。要设置线高,唯一的解决方案是绘制几条堆叠在一起的线。这在页面模式下是可能的,因为您可以使用打印区域 (ESC W) 将数据放置在任何您想要的位置。

        另一个可能的技巧是使用徽标来绘制线条(仍处于页面模式)

        【讨论】:

          猜你喜欢
          • 2021-02-21
          • 2016-12-24
          • 2014-12-14
          • 2021-08-28
          • 1970-01-01
          • 2021-08-30
          • 2019-01-07
          • 2021-10-04
          • 2016-08-25
          相关资源
          最近更新 更多