尝试解码 ESC/POS 时数据不足

问题描述 投票:0回答:1

尝试解码 ESC/POS 数据,其中我遇到了 GS 8 L 命令来发送光栅数据,根据 文档,宽度和高度应为 [40x22](这是 bin 的第 14 和 16 个字节)文件),但是仅存在 64 字节的数据。有趣的是,p1 变量是 64 字节,但我不明白为什么 xL、xH、yL、yH 位指向不同的大小。

当我尝试将这些字节发送到打印机时,我得到了所需的输出。但当自己尝试解析时,图像数据不足。我使用的是 Epson TM-T82x 打印机。 但奇怪的是,如果我修改 d1..dk 位中的任何数据,我不会得到任何输出(理想情况下我应该得到一些格式错误的输出)

这是有问题的二进制文件 - https://hexed.it#base64:t2-mod-2.bin;HThMQAAAADBwMQEBMSgAFgB4nGNgZxBgYLA/YMHAUH+ghoGhgAHIegASe8DAACOYf0AI+f8NEhACKEEKwfz/AJgAAGeMG4AdKEwCADAyHVZBAA==

我也尝试过使用 esc-pos 工具和各种其他 esc/pos 解码方法。所有错误都显示数据不足。 仅当我尝试从 Windows 打印时才会出现此问题,从 Linux 打印内容时,输出完全可读。

printing thermal-printer escpos python-escpos
1个回答
0
投票

即使有足够的数据长度也无法打印的原因是因为tone参数是一个未定义的值。

根据规范页,第 10 个字节“a”的唯一可能值指定了存储数据的音调。数据是 48(0x30) 或 52(0x34),但您提供的数据中指定了 49(0x31)。

因此,认为它不被视为有效的 ESC/POS 命令并被忽略。

除了图像数据量不足之外,Windows 上创建 ESC/POS 命令的程序似乎也有问题,请排查。


随着 .NET 8.0 的发布,我修复了我的工具在相关情况下中断异常的问题,以便它可以继续处理。
它只是显示一条消息,表明图形数据无效,但允许您继续处理。

© www.soinside.com 2019 - 2024. All rights reserved.