gpt4 book ai didi

javascript - Node.js 函数、对象和变量

转载 作者:搜寻专家 更新时间:2023-11-01 00:18:52 25 4
gpt4 key购买 nike

我刚刚开始使用 javascript,我仍在努力了解它是如何工作的。

你能解释一下为什么会这样吗

serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
console.log('data received: ' + data);
//socket.emit('test', { arduinotest: 'Arduino Connected'});
});
});

这不是,我收到“数据未定义错误”

serialPort.on("open", function () {
console.log('open');
serialPort.on('data', received(data));
});

function received(data) {
console.log('data received: ' + data);
//socket.emit('test', { arduinotest: 'Arduino Connected'});
}

我不喜欢有很多嵌套函数,应该如何将函数分离出来?

这是我的全部代码

var app = require('express')()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server)
, SerialPort = require('serialport').SerialPort;

//SERIAL
var portName = '/dev/ttyACM0';
var serialPort = new SerialPort(portName, {
baudRate: 115200,
dataBits: 8,
stopBits: 1,
parity: 'none',
});

serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
console.log('data received: ' + data);
//socket.emit('test', { arduinotest: 'Arduino Connected'});
});
});

//SERVER
app.get('/', function (req, res){
res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket){
socket.emit('test', { servertest: 'Server Connected' });
socket.on('value', function (data){
switch(data.key)
{
case "Right":
if(data.state == "True")
{
serialPort.write("d180\n");
console.log("test RT");
}
else if(data.state == "False")
{
serialPort.write("d90\n");
console.log("test RF");
}
break;
case "Left":
if(data.state == "True")
{
serialPort.write("d0\n");
console.log("test LT");
}
else if(data.state == "False")
{
serialPort.write("d90\n");
console.log("test LF");
}
break;
case "Up":
if(data.state == "True")
{
serialPort.write("s0\n");
console.log("test UT");
}
else if(data.state == "False")
{
serialPort.write("s90\n");
console.log("test UF");
}
break;
case "Down":
if(data.state == "True")
{
serialPort.write("s180\n");
console.log("test DT");
}
else if(data.state == "False")
{
serialPort.write("s90\n");
console.log("test DF");
}
break;
}
});
});

server.listen(9081, '192.168.1.158');

我应该如何从我的串行端口代码(注释掉的行)中访问我的套接字对象?

感谢帮助我理解

最佳答案

在第二个示例中,您编写了 serialPort.on('data', received(data)); 它将立即调用 received 函数,并将on 监听器的第二个参数的结果。

相反,您只想执行 serialPort.on('data', received); 传递 received 函数本身,这意味着监听器可以在准备就绪时调用它.

关于javascript - Node.js 函数、对象和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com