我想打开GPIO4上的LED和按钮。但什么都没发生。日志什么也不会显示。我想我没能打开这个函数或者写这个函数。
var http = require('http');
var Gpio = require('onoff').Gpio;
var LED = new Gpio(4, 'out');
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<button onclick="LEDon()">ON</button>');
res.write('<button onclick="LEDoff()">OFF</button>');
function LEDon(){
LED.writeSync(1);
console.log('1');
}
function LEDoff(){
LED.writeSync(0);
console.log('2');
}
res.end();
}).listen(8080);发布于 2021-01-05 23:10:15
你好,欢迎来到这里,
试试这个:
var http = require('http');
var HttpDispatcher = require('httpdispatcher');
var Gpio = require('onoff').Gpio;
var dispatcher = new HttpDispatcher();
var LED = new Gpio(4, 'out');
function handleRequest(request, response){
try {
// log the request on console
console.log(request.url);
// Dispatch
dispatcher.dispatch(request, response);
} catch(err) {
console.log(err);
}
}
dispatcher.onGet('/', function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(`
<form action="/on" method="post">
<input type="submit" value="On" />
</form>
`);
res.write(`
<form action="/off" method="post">
<input type="submit" value="Off" />
</form>
`);
});
dispatcher.onPost('/on', function(req, res) {
LED.writeSync(1);
console.log('1');
});
dispatcher.onPost('/off', function(req, res) {
LED.writeSync(0);
console.log('2');
});
http.createServer(handleRequest).listen(8080);还需要通过运行httpdispatcher来安装npm i httpdispatcher --save包。
您的代码不能工作的原因是您试图通过浏览器调用节点中的函数,这是不可能的,因此这里我们通过一些表单进行调用,并将调用发送到HTTP服务器,然后触发您的GPIO函数。
https://stackoverflow.com/questions/65587674
复制相似问题