reactjs - 使用 Express JS 服务器和 Johnny-Five 控制 Arduino
问题描述
我想从 Web 界面控制我的 Arduino,所以我在 ReactJS 中创建了客户端,在 ExpressJS 中创建了服务器端(包括 Johnny-Five)。
我只想根据用户输入实时更新闪烁 LED 的间隔。这是我的服务器代码:
const express = require('express');
const bodyParser = require('body-parser');
const five = require('johnny-five');
const app = express();
const board = new five.Board();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
board.on('ready', function () {
app.post("/api/led-flash", function (req, res) {
let led = new five.Led(13);
led.blink(req.body.interval);
});
});
app.listen("5000", () => {
console.log("App listening on port 5000");
});
该代码似乎只适用于一开始的几个请求。这样做的正确方法是什么?
解决方案
您需要在开发板准备好后启动服务器。所以类似于以下内容:
const express = require('express');
const bodyParser = require('body-parser');
const five = require('johnny-five');
const app = express();
const board = new five.Board();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post("/api/led-flash", function (req, res) {
// perform some initial cleanup work if needed like resetting LEDs.
// ...
let led = new five.Led(13);
led.blink(req.body.interval);
res.json({ message: 'success!'})
// Some additional work after success
// ...
});
function startServer() {
app.listen("5000", () => {
console.log("App listening on port 5000");
});
}
board.on('ready', startServer);
以上内容未经测试,但如果找到解决方案,请发布解决方案!
推荐阅读
- image - 如何使用引导程序“flex”类将文本包装在图像周围,严格不使用浮点数?
- angular - 我想以角度分享表单(文本区域)值
- javascript - 在滚动功能上隐藏导航栏
- javascript - 如何在一个语句中使用vs code emmet javascript 变量、变量名和方法
- c# - 无法将数据网格绑定到我的类对象的可观察集合
- php - 我如何让这个函数在 PHP 中运行一次?
- reactjs - 当 url 查询参数相对于浏览器点击发生变化时,不会调用 React 16、React-Router、生命周期方法
- javascript - 使空值在 Richembed 中可接受
- android - 自定义日期选择器在大型设备上看起来很糟糕
- racket - 更改 DrRacket REPL 中数字的打印