首先使用NodeJS从GPIO读取不正确会导致错误的脉冲宽度[IR接收器]

时间:2019-07-05 21:07:33

标签: python node.js raspberry-pi

我最近开始使用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的问题(需要一些对应用程序的预热才能使其从开始就正确运行)吗?我应该注意什么?

0 个答案:

没有答案