2017-09-11 14 views
7

आग नहीं करता है मैं कंप्यूटर बंदरगाहों से कनेक्ट करने के लिए नोडजेएस के SerialPort पैकेज का उपयोग कर रहा हूं।सीरियलपोर्ट 'क्लोज' ईवेंट कभी भी

पैकेज के बारे में close ईवेंट here

मैं इस कोड बनाया है, मैं जानना चाहता क्यों close/disconnect ईवेंट सक्रिय करें मैं COM

const express = require('express'); 
const router = express.Router(); 
// 
const cors = require('cors'); 
router.use(cors()); 
// 
const SerialPort = require('serialport'); 
const Readline = SerialPort.parsers.Readline; 
const port = new SerialPort('COM7',function (err) { 
    if (err) { 
     return console.log('Error: ', err.message); 
    } 
}); 
const parser = port.pipe(new Readline()); 
/* 
var lastresult = ''; 
var count = 0; 
*/ 

port.on('open', function() { 
    console.log('~Port is open.'); 
    parser.on('data', console.log); 
}); 

port.on('disconnect', function() { 
    console.log('disconnected'); 
}); 
port.on('close', function() { 
    console.log('closed'); 
}); 

router.get('/', function (req, res) { 
    res.send('index'); 
}); 

module.exports = router; 

मैं अगर मैं का उपयोग यह गलत है क्योंकि मैं havn't सोचने के लिए कोशिश कर रहा हूँ डिस्कनेक्ट कभी नहीं होगा इस घटना का उपयोग करने के लिए उदाहरण देखा।

मदद के लिए धन्यवाद :)

+0

क्या आपने वहां कुछ पॉप अप करने के लिए 'त्रुटि' घटना को सुनने की कोशिश की है? – tiblu

+0

बेशक, कुछ भी नहीं खुलता है, यह आपके लिए काम करता है? – itzikb

+0

देखें: https://stackoverflow.com/questions/13408476/detecting-when-a-serialport-gets- डिस्कनेक्ट –

उत्तर

2

मैं टाइमस्टैम्प हर बार बनाया है मैं COM, से डेटा recive और interval() हर बार के साथ की जाँच करें।

setInterval(function() { 
    if (Date.now() - lastDataTime > 1000 || !comStatus) { 
     comStatus = false; 
     port.close(); 
     port = new SerialPort(comPort, function (err) { 
      if (err) { 
       error = 'Error: ' + err.message; 
       return console.log(error); 
      } 
     }); 
    } 
}, 1000); 
संबंधित मुद्दे