来自 NodeJS 的 Epson 热敏打印机状态 ESC/POS

Epson thermal printer status from NodeJS with ESC/POS

我已经创建了一个 Electron 应用程序来配置和启动 NodeJS 打印机服务器。 NodeJS 部分使用 https://github.com/song940/node-escpos 将 ESC/POS 命令发送到串行端口上的 Epson 热敏打印机。很好,我可以打印一些东西了。

现在,我正在尝试从打印机获取实时状态(打印机状态或卷纸传感器状态或墨水状态)。有一个ESC/POS命令DLE EOThttps://www.epson-biz.com/modules/ref_escpos/index.php?content_id=118

我试过这样的事情,使用节点串行对象(节点escpos依赖)能够读取return(device.device.on(...)):

const escpos = require('escpos');
const _ = require('escpos/commands');

const device = new escpos.Serial('COM1');
const printer = new escpos.Printer(device);

device.open(function (err) {
    device.device.on('data', function (data) {
        console.log(data);
        console.log(data.toString('hex'));
    });

    device.write(_.DLE);
    device.write(_.EOT);
    device.write(String.fromCharCode(1));

    setTimeout(() => {
        printer.close();
    }, 1000);
});

但是结果好像和文档不符,我得到:

{ type: 'Buffer', data: [ 22 ] }
16

有人试过这个吗?我是不是误解了 Epson 的文档?

谢谢

看来得到的值是合适的。

你得到的Printer status (n = 1):的值为0x16,二进制为0b00010110,应用到文档的描述中如下。

0:Fixed
1:Fixed
1:Drawer kick-out connector pin 3 is HIGH
0:Online
1:Fixed
0:Not waiting for online recovery
0:Paper feed button is not being pressed
0:Fixed