javascript - node 读取 Linux设备文件 到 buffer 后如何解码?
PHP中文网
PHP中文网 2017-04-11 11:17:11
[JavaScript讨论组]

需求是用单片机扫描条形码后用来做后续网络业务。
但是用 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 对象为正确的条形码数据呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
PHPz

data事件不是读了一部分就触发吗

伊谢尔伦

问题解决了。

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

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

扫描后文件输出了 ASCII码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号