2012-10-08 75 views
1

請幫助新手。Node.js錯誤Arduino串口監視器輸入

我正在嘗試學習Node.js,嘗試通過串口連接工作的Arduino示例。代碼如下:

var serialport = require("serialport"); // include the serialport library 
var SerialPort = serialport.SerialPort; // localize object constructor 

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

// listen for new web clients: 
server.listen(8080);   

// open the serial port. Change the name to the name of your port, just like in Processing and Arduino: 
var sp = new SerialPort("/dev/ttyACM0", { 
    // look for return and newline at the end of each data packet: 
    parser: serialport.parsers.readline("\r\n") 
}); 

// respond to web GET requests with the index.html page: 
app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

// listen for new socket.io connections: 
io.sockets.on('connection', function (socket) { 
    // if there's a socket client, listen for new serial data: 
    sp.on('data', function (data) { 
     // set the value property of scores to the serial string: 
     scores.value = data; 
     // for debugging, you should see this in Terminal: 
     console.log(data); 
     // send a serialdata event to the web client: 
     socket.emit('serialEvent', scores); 
    }); 
}); 

代碼成功地與下面的輸出執行:

info - socket.io started 
    debug - served static content /socket.io.js 
    debug - client authorized 
    info - handshake authorized Yh2i5KCqhagEnCIK41q3 
    debug - setting request GET /socket.io/1/websocket/Yh2i5KCqhagEnCIK41q3 
    debug - set heartbeat interval for client Yh2i5KCqhagEnCIK41q3 
    debug - client authorized for 
    debug - websocket writing 1:: 

我然後輸入一些進入我的Arduino的串口監視器和我的Node.js腳本以下錯誤崩潰:

/home/sisko/NodeJS/nodeSerialServer/serialServer.js:49 
     scores.value = data; 
     ^
ReferenceError: scores is not defined 
    at SerialPort.<anonymous> (/home/sisko/NodeJS/nodeSerialServer/serialServer.js:49:3) 
    at SerialPort.EventEmitter.emit (events.js:93:17) 
    at parsers.readline (/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:36:17) 
    at Array.forEach (native) 
    at Object.parsers.readline [as parser] (/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:35:13) 
    at process.nextTick.options.dataCallback (/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:89:15) 
    at EventEmitter.emit (events.js:93:17) 
    at ReadStream._emitData (fs.js:1365:10) 
    at afterRead (fs.js:1347:10) 
    at Object.wrapper [as oncomplete] (fs.js:362:17) 

我將不勝感激一些幫助,因爲我還沒有線索如何解決這個問題。

回答

1

您需要定義分數變量並初始化它。

var express = require('express'), 
    app  = express(), 
    http = require('http'), 
    server = http.createServer(app), 
    io = require('socket.io').listen(server), 
    scores = {}; 
+0

再次感謝您的幫助條例草案 – sisko