需求是用单片机扫描条形码后用来做后续网络业务。
但是用 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 对象为正确的条形码数据呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
data事件不是读了一部分就触发吗
问题解决了。
Linux Kernal 配置的时候忘记使能 HID (Human Interface Device) Raw Input
重新配置编译内核后 条形码扫描器映射到 /dev/hidraw-3 文件上
扫描后文件输出了 ASCII码