0

在此处输入图像描述我正在为我的 rfid 使用 nodejs,它连接在我的树莓派上。我想要做的是当我点击 id“6f124628”时,除非 arduino 上的另一个引脚为高电平,否则 LED 不会打开。我正在使用firmata 协议进行arduino 通信。

JS:

function arduinoReady(err) {
  if (err) {
    console.log(err);
    return;
  }
  console.log('Firmware: ' + board.firmware.name +
    '-' + board.firmware.version.major +
    '.' + board.firmware.version.minor);

  var ledOn = true;
  board.pinMode(ledPin, board.MODES.OUTPUT);

  rc522(function(rfidSerialNumber) {

    console.log(rfidSerialNumber);
    if (rfidSerialNumber == "216264a9") {

      onjie.writeSync(1);

    }

    data = board.digitalRead(ledPin);
    if (rfidSerialNumber == "6f124628" && data == "board.HIGH") {

      LED1.writeSync(1);

      return;
    }
  });

但是我的代码不起作用并且 Typerror :

“listener”参数必须是一个函数

var http = require('http').createServer(handler);
app.listen(8080);

function handler (req, res) {
  fs.readFile(__dirname + '/firmata.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading firmata.html');
    }
 
    res.writeHead(200);
    res.end(data);
  });
}

4

1 回答 1

0

问题出在方法上createServer

您必须更改方法的初始化handler

尝试将handler声明更改为:

var handler = function(req, res) {
  fs.readFile(__dirname + '/firmata.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading firmata.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}  

现在,您可以使用以下命令声明您的服务器:

var http = require('http').createServer(handler);
于 2018-08-13T03:26:35.110 回答