javascript - node 读取 Linux设备文件 到 buffer 后如何解码?

 书友59082326 发布于 2022-11-12 18:15

需求是用单片机扫描条形码后用来做后续网络业务。
但是用 node 读取条形码的设备文件时遇到了问题。

在单片机上架了 Linux
交叉编译 node
连接条形码扫描器到单片机的 usb口
每次扫描条形码成功,都会输出字串到 /dev/input/eventN 文件
尝试用 node 脚本读取该文件,获取扫描的条形码数据。

node 代码

var fs = require('fs');

var scannerFile = '/dev/input/event0';
var readStream = fs.createReadStream(scannerFile);

readStream.on('data', function (data) {
    var scannedText = data.toString('ascii');
    console.log(data);
    console.log('scannedText: ' + scannedText);
    console.log('----------------------------');
});

运行 node脚本

# node ./scanner_watcher.js

扫描了 "0123456789012"

按 ASCII 解码的终端输出

换成 utf-8 解码的输出也是乱码

Buffer 数据如下



该如何解码这个 Buffer 对象为正确的条形码数据呢?

2 个回答
  • 问题解决了。

    Linux Kernal 配置的时候忘记使能 HID (Human Interface Device) Raw Input

    重新配置编译内核后 条形码扫描器映射到 /dev/hidraw-3 文件上

    扫描后文件输出了 ASCII码

    2022-11-12 18:15 回答
  • data事件不是读了一部分就触发吗

    2022-11-12 18:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有