我正在使用 QZ 托盘使用 ESC/P(不是 ESC/POS)打印机 9pin [1] 进行原始打印。基本上一切正常,直到我必须设置绝对水平位置(ESC $)。
与 [2] 的问题相同,但它使用 Java,QZ 托盘使用 JavaScript 作为其示例 [3],并使用十六进制转义序列 (\xFF) [4] 声明所有命令,字符从 0 到 255 (\x00 - \xFF)。
这是有关问题的详细信息:
在 9 针 ESC/P [1] 中设置绝对水平位置
ASCII: ESC $ nL nH Hex: 1B 24 nL nH 0 <= nH <= 127 0 <= nL <= 255
如果 nL 值为 0 到 127,则将数据发送到 QZ 托盘没有问题。
var data = [ '\x1B' + '\x40', // init '\x1B' + '\x24' + '\x10' + '\x00', // set horizontal '0x10' + '\x0D' + '\x0A', // print position ok '\x1B' + '\x24' + '\x7F' + '\x00', // set horizontal '0x7F' + '\x0D' + '\x0A', // print position ok '\x1B' + '\x24' + '\x80' + '\x00', // set horizontal '0x80' + '\x0D' + '\x0A', // print position PROBLEM '\x1B' + '\x24' + '\x00' + '\x01', // set horizontal '1x00' + '\x0D' + '\x0A', // print position ok ]
如果 '\x80' + '\x00' 不正确,如何使用十六进制转义序列表示字符 128?
我尝试使用 JavaScript 类型数组 Uint8Array 和 Uint16Array,没有成功打印,我认为是因为 ESC/P 协议希望它作为字符(数组)。
我曾尝试在 QZ 组和 stackoverflow 上进行搜索,但很难找到正确的关键字。
任何帮助,将不胜感激。谢谢你。
[1] https://files.support.epson.com/pdf/general/escp2ref.pdf
[2] ESC/P 设置绝对水平打印位置
[3] https://qz.io/wiki/2.0-raw-printing
[4] https://mathiasbynens.be/notes/javascript-escapes#hexadecimal