node.js - 带有 ESC/POS 的 NodeJS 的 Epson 热敏打印机状态
问题描述
我创建了一个 Electron 应用程序来配置和启动 NodeJS 打印机服务器。NodeJS 部分使用https://github.com/song940/node-escpos将 ESC/POS 命令发送到串行端口上的 Epson 热敏打印机。这很好,我可以打印一些东西。
现在,我正在尝试从打印机获取实时状态(打印机状态或卷纸传感器状态或墨水状态)。有一个 ESC/POS 命令DLE EOT
:https ://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
有人试过这个吗?我是否误解了爱普生的文档?
谢谢
解决方案
看来得到的值是合适的。
得到的值为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
推荐阅读
- ruby-on-rails - 如何使用带有 Active Record 查询接口的 Link 表
- android - 使用 PendingIntent 进行 Android BLE 扫描
- python - 在查询函数中传递 %s 时出现问题
- spring-boot - AuditEvent AUTHORIZATION_SUCCESS 未在 OAuth2 资源服务器中触发
- c++ - 如何从文本文件中读取数值直到遇到 char 类型?
- makefile - make fclean && make all works, make re 不行
- c - c指针字符串的问题
- css - VS Code 扩展以突出显示重复的 CSS 属性
- python - 导入 gdal 时遇到此错误-->>DLL 加载失败:找不到指定的模块
- android - Android:将 LiveData ArrayList 转换为 Gson 并再次返回