我剛剛開始使用JavaScript,並且我仍然試圖讓我的腦海中圍繞它是如何工作的。Node.js函數,對象和變量
你能解釋爲什麼這工作
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');
我應該如何從我的串行端口的代碼中訪問我的socket對象(註釋線)?
感謝您與我的理解
喬
謝謝,這有助於澄清事情。我發現很難理解JavaScript是如何來自「傳統」C#背景的 – 2013-02-26 16:00:10
只要始終牢記,「一切都是對象」,可以將它分配給變量,甚至函數。它會全部落入:) – Graham 2013-02-26 16:11:41