Nodejs:将事件侦听器附加到Array如果包含值

时间:2017-08-15 16:22:27

标签: javascript arrays node.js

在我的项目中,我有四个对象(HW解码器的连接器),这显然是同步的。和解析的字符串数组(队列)。无论如何,如何检查数组是否包含Decoder对象的某些值?我想我可以通过EventEmitters来做,但我不知道如何。

感谢您的帮助

-Update

来自另一台服务器的传入值是64bites字符串,解码器返回15个bites值。使用此程序包SerialPort通过串行端口进行通信。我知道如何使用一个解码器进行通信,但不知道如何更多(以适当的方式)。

我与一个解码器进行通信的代码。

var SerialPort = require('serialport');
var ports = [];
ports.push( {device: new SerialPort('/dev/cu.usbmodem1411', { autoOpen: false }), enable: true});
ports.push( {device: new SerialPort('/dev/cu.usbmodem1421', { autoOpen: false }), enable: true});


//id: incoming encrypted value
module.exports.decryption = function (id, callback) {

    ports[0].enable = false;
    var idArray = [];
    idArray[0] = id.slice(0, 16);
    idArray[1] = id.slice(16, 32);
    idArray[2] = id.slice(32, 48);
    idArray[3] = id.slice(48, 64);

    ports[0].device.open(function (err) {
        if (err) {
            return console.log('Error opening port: ', err.message);
        }
        port[0].device.write('d01');
        let index = 0;
        var buffer = setInterval(function () {
            port[0].device.write(idArray[index]);
            if (index === idArray.length - 1) clearInterval(buffer);
            index++;
        }, 1);

    });

    ports[0].device.on('data', function (data) {
        callback( hex2a(data.toString('ascii')));
        ports[0].device.close(function (response) {
            console.log("device disconnected")
        },function (error) {  });
        ports[0].enable = true;
    });
};

function hex2a(hexx) {
    var hex = hexx.toString();//force conversion
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

0 个答案:

没有答案