我最近开始使用Raspberry Pi 4。
我有一个支持NEC协议的IR接收器和遥控器。我想创建一个简单的应用程序,该程序读取远程信号的宽度,然后将其解码为二进制值。
在本文link to the article之后,我创建了两个脚本。
一个脚本仅来自用Python语言编写的链接文章,另一个脚本是使用JavaScript编写的。下面的代码段:
var Gpio = require('onoff').Gpio;
var ir = new Gpio(18, 'in', 'both');
let value = 1;
let readValue = 1;
let time = null;
let counter = 0;
console.log("Ready...");
while(true) {
value = 1;
while(value) {
value = ir.readSync();
}
time = process.hrtime();
while(true) {
if (value != readValue) {
console.log(value, readValue, process.hrtime(time)[1]/1000);
time = process.hrtime();
}
value = readValue;
readValue = ir.readSync();
}
}
根据从IR接收器读取的NEC协议,相应地,在9ms和4.5ms左右,其前0和1应该相应。
问题是使用NodeJS应用程序时,从应用程序中读取的值与正确的值完全不同。应用程序的下一次读取是正确的。
在运行用python编写的相同应用程序时,将从IR接收器读取的所有内容均正确读取并显示。
这可能是NodeJS的问题(需要一些对应用程序的预热才能使其从开始就正确运行)吗?我应该注意什么?