Я читаю данные от Satec PMEH130 Plus. Когда я разбираю ответы modbus, каждое число является правильным, за исключением отрицательных, оно должно возвращать что-то вроде -997, но оно возвращает 655xx .. Есть ли исправление для разбора отрицательных чисел?Ошибка деления на шине Modbus
Вот мой код:
Я посылаю этот запрос на устройство:
} else if (testCount == 2) {
buffer[0] = 0x01;
buffer[1] = 0x03;
buffer[2] = 0x34;
buffer[3] = 0x18;
buffer[4] = 0x00;
buffer[5] = 0x0c;
buffer[6] = 0xcb;
buffer[7] = 0xf8;
lab = 'KVAL1, KVAL2, KVAL3, PFL1, PFL2, PFL3';
Устройство возвращает MODBUS строку:
010318000000000000000000000000fc1dfffffc20fffffc1bffff4fa1
Это мой Modbus синтаксического анализа функции:
function parseModbus(hexString, type)
{
var LVAL = hexString.substr(4,2);
LVAL = parseInt(LVAL, 16);
var values = hexString.substr(6, (LVAL*2)).match(/.{1,4}/g);
switch(type)
{
case 2:
if(values) {
//console.log(values.length);
kVAL1 = parseInt(values[0], 16);
kVAL2 = parseInt(values[2], 16);
kVAL3 = parseInt(values[4], 16);
PFL1 = parseInt(values[6], 16);
PFL2 = parseInt(values[8], 16);
PFL3 = parseInt(values[10], 16);
}
break;
}
Неверные значения указаны в PFL1, PFL2 и PFL3. Благодарю.