我正在为挂在树莓派上的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:
“侦听器”参数必须是一个函数
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);
});
}
答案 0 :(得分: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);