首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Raspberry Node-js GPIO控制

Raspberry Node-js GPIO控制
EN

Stack Overflow用户
提问于 2021-01-05 22:49:16
回答 1查看 152关注 0票数 0

我想打开GPIO4上的LED和按钮。但什么都没发生。日志什么也不会显示。我想我没能打开这个函数或者写这个函数。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 23:10:15

你好,欢迎来到这里,

试试这个:

代码语言:javascript
复制
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函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65587674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档