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