Написание драйвера протокола на rs-485

Продолжаю свои эксперименты с написании своего правила по опросу железки с несовсем modbus’ом. Возникли сложности, небольшие сложности, не могу понять как правильно в цикле получать ответ после запроса

var pathRPC = "/rpc/v1/wb-mqtt-serial/port/Load/"; 
var modbusPort = "/dev/ttyRS485-1";
var modbusSpeed = 9600;
var modbusParity = "N";
var modbusStopbit = 2;
var message = "E0300C8000644C9"; //тест
var MainDevName = "Virtual-device_n2";


var period = 5000;
var CountCh=0;

var DevCh = new Array(100);
for (var i = 0; i < 100; i++) {
DevCh[i] = new Array(2);
}


function requestRPC(modbusPort, modbusSpeed, modbusParity, modbusStopbit, clientID, requiestID, messageType, addr, responseSize){

  strJson = JSON.stringify({params: {response_size: responseSize, format: messageType, path: modbusPort, baud_rate: modbusSpeed, parity: modbusParity, "data_bits" : 8, "stop_bits" : modbusStopbit, "msg": message}, "id" : requiestID});

  log("-------------------------------");
  log("strJson =", strJson, " / addr = ", addr);
  publish(pathRPC+DevCh[addr][0], strJson, 1, false); 

  trackMqtt(pathRPC+DevCh[addr][0]+"/reply", function(message){
      if (message.value!=""){
        log(message.value, " / ", addr);
      }
    }); 
  
  
  dev[MainDevName + "/" + DevCh[addr][0]] = dev["wb-adc/V5_0"]; // тест. заполнение виртуального устройства получеными данными 
};


getDevice(MainDevName).controlsList().forEach(function(ctrl) { //функция разбора витруального устройства и наполнение массива индексами топиков для цикличной обработки
    DevCh[CountCh][0] = ctrl.getId();
    DevCh[CountCh][1] = ctrl.getTitle();
    CountCh++;
});


cycle_req();


function thread_req(hex, i) {
  setTimeout(function () {
    requestRPC(modbusPort, modbusSpeed, modbusParity, modbusStopbit, clientID, 1, "HEX", i, 8);     
  }, 500 * i);
}

function cycle_req() { 
setInterval(function() {      
       for (var i =0; i < CountCh; i++){              
          thread_req("HEX", i);                       
        };
}, period);  
};