Node.js错误Arduino串行监视器输入

Node.js错误Arduino串行监视器输入,node.js,runtime-error,Node.js,Runtime Error,我试图学习Node.js,试图通过串口与正在工作的Arduino示例连接。代码如下: var serialport = require("serialport"); // include the serialport library var SerialPort = serialport.SerialPort; // localize object constructor var express = require('express'), app = express()

我试图学习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)
/home/sisko/NodeJS/nodeSerialServer/serialServer.js:49
分数。价值=数据;
^
ReferenceError:未定义分数
在串行端口。(/home/sisko/NodeJS/nodeSerialServer/serialServer.js:49:3)
在SerialPort.EventEmitter.emit上(events.js:93:17)
在parsers.readline(/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:36:17)
at Array.forEach(本机)
在Object.parsers.readline[作为解析器](/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:35:13)
位于process.nextTick.options.dataCallback(/home/sisko/NodeJS/nodeSerialServer/node_modules/serialport/serialport.js:89:15)
在EventEmitter.emit(events.js:93:17)
在ReadStream._emitData(fs.js:1365:10)
复读时(财政司司长:1347:10)
在Object.wrapper[as oncomplete](fs.js:362:17)

您需要定义分数变量并对其进行初始化

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

您需要定义scores变量并初始化它

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

再次感谢你的帮助比尔再次感谢你的帮助比尔