首页 > 解决方案 > 带有 ESC/POS 的 NodeJS 的 Epson 热敏打印机状态

问题描述

我创建了一个 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 依赖项)能够读取返回(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

有人试过这个吗?我是否误解了爱普生的文档?

谢谢

标签: node.jsprintingescpos

解决方案


看来得到的值是合适的。

得到的值为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

推荐阅读