在我的项目中,我有四个对象(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;
}