【问题标题】:How to use ESC/POS command 'GS v 0'如何使用 ESC/POS 命令 'GS v 0'
【发布时间】:2016-06-14 10:20:40
【问题描述】:

谁能解释一下'GS v 0'命令?我想在我的热敏打印机上打印一些位图。我看不懂参数 xL xH yL ...

以下在编程指南中,但直到现在我都看不到解决方案。

ASCII: Gs v 0 十进制:29 118 48 m xL xH yL yH [d]k 十六进制:1D 76 30 m xL xH yL yH [d]k

0 ≤ m ≤ 3, 48 ≤ m ≤ 51 0≤xL≤255 0≤xH≤255 0≤yL≤255 0≤d≤255 k = ( xL + xH × 256) × ( yL + yH × 256) ( k ≠ 0)

xL, xH 指定水平方向 (xL + xH × 256) 字节 位图。 yL, yH 指定垂直方向的 (yL + yH × 256) 个点 位图。 [d]k 指定位图数据(光栅格式)。

【问题讨论】:

  • 似乎已被弃用,另一种打印方式是 ESC * 和 here,您可以找到相关信息

标签: bitmap thermal-printer


【解决方案1】:

首先让我说我知道这个问题已经过时了,这个命令被认为是过时的,但是接受这个命令的热敏打印机仍然有很大的市场。

此帐户的积分不足,无法对 @Fewl 的回答发表评论。

他对 yL 和 yH 的看法是对的,但对 xL 和 xH 却不是。

xL, xH 指定位图水平方向的 (xL + xH × 256) 字节

yL, yH 指定位图垂直方向的 (yL + yH × 256)

参考:https://www.epson-biz.com/modules/ref_escpos/index.php?content_id=94

假设您的位图是 384 像素宽和 260 像素高,那么:

xL = width % 2048 / 8;
xH = width / 2048;
// width = 384
// xL = 48
// xH = 0
// (xL + xH × 256) = 48 + 0 x 256 = 48 **bytes** in horizontal direction.


yL = height % 256;
yH = height / 256;
//height = 260
// yL = 4
// yH = 1
// (yL + yH × 256) = 4 + 1 x 256 = 260 **dots** in vertical direction

解释,示例位图在水平方向有 384 / 8 = 48 字节,因为 48

重要提示!我的示例宽度(384)可被 8 整除。如果不是,您将不得不通过四舍五入来解决这一问题并用零填充位数据......或者只需预先调整位图的大小以使其宽度可被整除8.

【讨论】:

  • 2048从何而来?
  • 我已经在我的解释中提到了这一点:“如果你的位图比 8 * 256 = 2048 点宽,你只需要计算 xH”,这就是 2048 的来源。如果位图宽度小于 2048 点,则不需要对 xL 进行模运算(只需将宽度除以 8),显然您不需要计算 xH,它将为 0。
【解决方案2】:

如前所述,命令 GS v 0 已过时,您应该尝试 ESC *GS ( L / GS 8 L .

但是,只是为了回答这个问题......

xL,xH指的是位图图像的宽度,yL,yH是高度,如你所知。

您说这些值必须在 0 到 255 之间,要实现这些值,请执行以下操作:

xL = width % 256
xH = width / 256
yL = height % 256
yH = height / 256

假设您有一张 300x200 的图片。这些值是:

xL = 44,xH = 1,yL = 200,yH = 0(十进制)

k = (44 + 1 * 256) * (200 + 0 * 256) = 60.000(也就是 300x200)

使用十六进制命令,您有:1D 76 30 m 2C 01 C8 00 [d]k,其中 m 是模式,[d]k 是 60.000 字节图像数据。

【讨论】:

  • 还有一个 ESC/P2 命令ESC. 可以获取完整的位图。无需将其切割成行。它是GSv0 的替代品吗?
  • 如果您想表示 0,您会为 m 使用哪个值? 0x30?
【解决方案3】:

使用 Hex 命令,您有:1D 76 30 m 2C 01 C8 00 [d]k,其中 m 是模式,[d]k 是 60.000 bites 图像数据或 937 字节( 8x8)。

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 2016-08-25
    • 2019-10-27
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2020-05-07
    • 2017-10-21
    相关资源
    最近更新 更多