在 Birch 打印机上使用 ESC/POS 更改代码页
Change code page with ESC/POS on Birch printer
我正在使用 QZ Tray 工具使用 ESC/POS 命令将原始数据发送到热敏打印机。这是我正在使用的代码,它在大多数打印机上都按预期工作:
data = [
"\x1b\x40",
"\x1b\x74\x49", // ESC t 73 - switch to Windows-1251
text + "\r\n",
"\x1B\x74\x48", // ESC t 72 - switch to Windows-1250
text + "\r\n",
];
let config = qz.configs.create('printer_name', { encoding: 'windows-1251' });
qz.print(config, print_data).catch(function(e) {
console.error(e);
});
我遇到的问题与 Birch CP-Q3 打印机有关。如果 n 大于 33,这台打印机似乎不会执行 ESC t n
命令。就像那样,它无法识别那些代码页。如果 n 小于 33,命令 ESC t n
工作正常。
最奇怪的是,我可以使用打印机工具将代码页切换到 73,但是使用 ESC/POS 命令无法做到这一点。打印机自检也包含那些代码页。
是否有我应该在更改代码页或打印机配置之前执行的命令,我可以更改以便可以使用扩展代码页?
我给 Birch-POS 支持人员发了电子邮件,他们说了以下内容:
Please suggest customer to use command \x1F\x1B\x1F\xFF\x49
to set codepage to windows-1251.
与 OPs wireshark 评论相匹配,引用:
Using wireshark I managed to get the following HEX dump when setting code page 73 using printer tool: 1f 1b 1f ff 49 ...
不幸的是,JavaScript(特别是 UTF-8)does not like certain escape sequences over x7F
。
工作代码应如下所示:
var text = 'Привет мир';
// Use QZ's hex mode, which can workaround JavaScript not allowing certain hex values
var data = [
{
type: 'raw',
format: 'command'
flavor: 'hex',
data: 'x1Fx1Bx1FxFFx49', // Instruct Birch POS: Windows-1251
// data: 'x1Fx1Bx1FxFFx48', // Instruct Birch POS: Windows-1250
},
text + '\r\n'
];
// Tell Java to use a strict 8-bit encoding
var config = qz.configs.create('printer_name', { encoding: 'ISO-8859-1' });
qz.print(config, print_data).catch(function(e) {
console.error(e);
});
我正在使用 QZ Tray 工具使用 ESC/POS 命令将原始数据发送到热敏打印机。这是我正在使用的代码,它在大多数打印机上都按预期工作:
data = [
"\x1b\x40",
"\x1b\x74\x49", // ESC t 73 - switch to Windows-1251
text + "\r\n",
"\x1B\x74\x48", // ESC t 72 - switch to Windows-1250
text + "\r\n",
];
let config = qz.configs.create('printer_name', { encoding: 'windows-1251' });
qz.print(config, print_data).catch(function(e) {
console.error(e);
});
我遇到的问题与 Birch CP-Q3 打印机有关。如果 n 大于 33,这台打印机似乎不会执行 ESC t n
命令。就像那样,它无法识别那些代码页。如果 n 小于 33,命令 ESC t n
工作正常。
最奇怪的是,我可以使用打印机工具将代码页切换到 73,但是使用 ESC/POS 命令无法做到这一点。打印机自检也包含那些代码页。
是否有我应该在更改代码页或打印机配置之前执行的命令,我可以更改以便可以使用扩展代码页?
我给 Birch-POS 支持人员发了电子邮件,他们说了以下内容:
Please suggest customer to use command
\x1F\x1B\x1F\xFF\x49
to set codepage to windows-1251.
与 OPs wireshark 评论相匹配,引用:
Using wireshark I managed to get the following HEX dump when setting code page 73 using printer tool:
1f 1b 1f ff 49 ...
不幸的是,JavaScript(特别是 UTF-8)does not like certain escape sequences over x7F
。
工作代码应如下所示:
var text = 'Привет мир';
// Use QZ's hex mode, which can workaround JavaScript not allowing certain hex values
var data = [
{
type: 'raw',
format: 'command'
flavor: 'hex',
data: 'x1Fx1Bx1FxFFx49', // Instruct Birch POS: Windows-1251
// data: 'x1Fx1Bx1FxFFx48', // Instruct Birch POS: Windows-1250
},
text + '\r\n'
];
// Tell Java to use a strict 8-bit encoding
var config = qz.configs.create('printer_name', { encoding: 'ISO-8859-1' });
qz.print(config, print_data).catch(function(e) {
console.error(e);
});