2015-03-17 2 views
0

J'ai un projet où le serveur node.js parle avec l'arduino vrai d'une socket TCP. Il reçoit toutes ses données d'une page Web true a socket.io et les transfère ensuite sur le socket TCP. Tout fonctionne bien. Sauf quand:Node.js avec socket TCP à arduino

Je télécharge mon arduino avec un nouveau logiciel, Ou quand je débranche mon câble Ethernet, Lorsque j'ouvre mon moniteur série deux fois sur l'Arduino. J'ai eu events.js: 85 throw er; // Unhandled 'erreur' événement Erreur: lire ECONNRESET à exports._errnoException (util.js: 746: 11) à TCP.onread (net.js: 550: 26)

Est-ce que tout savoir quel est le problème . Comment puis-je le réparer en particulier une fonction de connexion automatique.

var express = require('express'); 
var app  = express(); 
var hbs  = require('hbs'); 
var port = 3000; 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
net = require('net'); 
var tcpGuests = []; 

app.set('view engine', 'html'); 
app.engine('html', hbs.__express); 
app.use(express.bodyParser()); 
app.use(express.static('public')); 


app.get('/', function(req, res) { 
    res.render('index', {title:"HTML5-SuperTemplate"}); 
}); 

app.get('/about', function(req, res) { 
    res.render('about', {title:"About Me"}); 
}); 

app.get('/instructions', function(req, res) { 
    res.render('instructions', {title:"Instructions"}); 
}); 

app.get('/buttons', function(req, res) { 
    res.render('buttons', {title:"Buttons"}); 
}); 

app.get('/Lists', function(req, res) { 
    res.render('Lists', {title:"Lists"}); 
}); 

app.get('/menus', function(req, res) { 
    res.render('menus', {title:"Menus"}); 
}); 

app.get('/tables', function(req, res) { 
    res.render('tables', {title:"Tables"}); 
}); 

app.get('/tooltips', function(req, res) { 
    res.render('tooltips', {title:"Tooltips"}); 
}); 

app.get('/typography', function(req, res) { 
    res.render('typography', {title:"Typography"}); 
}); 

app.get('/hr', function(req, res) { 
    res.render('hr', {title:"Horizontal Rules"}); 
}); 

app.get('/icons', function(req, res) { 
    res.render('icons', {title:"ICONS"}); 
}); 

app.get('/code', function(req, res) { 
    res.render('code', {title:"CODE & PRE"}); 
}); 

app.get('/tabs', function(req, res) { 
    res.render('tabs', {title:"TABS"}); 
}); 

app.get('/breadcrumbs', function(req, res) { 
    res.render('breadcrumbs', {title:"Breadcrumbs"}); 
}); 

app.get('/grids', function(req, res) { 
    res.render('grids', {title:"Grid System"}); 
}); 

app.get('/images', function(req, res) { 
    res.render('images', {title:"IMAGES"}); 
}); 

app.get('/slideshow', function(req, res) { 
    res.render('slideshow', {title:"Slideshow"}); 
}); 

app.get('/forms', function(req, res) { 
    res.render('forms', {title:"Forms"}); 
}); 

app.get('/classes', function(req, res) { 
    res.render('classes', {title:"Classes"}); 
}); 

io.on('connection', function(socket){ 
    socket.on('chat message', function(msg){ 
    io.emit('chat message', msg); 
    console.log('received on io-socket:'+msg); 
    }); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

// socket.io, I choose you 
io.on('connection', function(socket){ 
    socket.on('chat message', function(msg){ 
    io.emit('chat message', msg); 
    console.log('received on io-socket:'+msg); 
    for (g in tcpGuests) { 
     tcpGuests[g].write(msg); 
    } 
    }); 
}); 

//tcp socket server 
var tcpServer = net.createServer(function (socket) { 
    console.log('tcp server running on port 1337'); 
    console.log('web server running on http://localhost:3000'); 
}); 

tcpServer.on('connection',function(socket){ 
    socket.write('connected to the tcp server\r\n'); 
    console.log('num of connections on port 1337: ' + tcpServer.connections); 

    tcpGuests.push(socket); 


    socket.on('data',function(data){ 
     console.log('received on tcp socket:'+data); 
     socket.write(' msg received\r\n'); 


     //send data to guest socket.io chat server 
     for (g in io.clients) { 
      var client = io.clients[g]; 
      client.send({message:["arduino",data.toString('ascii',0,data.length)]}); 
      } 
    }) 
}); 
tcpServer.listen(1337); 

Répondre

0

Vous ne gérez pas les erreurs. Le message d'erreur que vous recevez est envoyé par node.js chaque fois qu'il y a une erreur de connexion (débranchement inattendu du câble). Vous pouvez attraper ces erreurs afin que l'application ne se ferme pas.

Ajoutez quelques gestionnaires d'erreurs. tcpServer.on('error', ...), socket.on('error', ...), io.on('error', ...), etc. Peut-être d'autres gestionnaires d'erreur.