Как преобразовать 4 регистра Modbus (каждый 16-битный) в двойное число с плавающей запятой в C? - PullRequest
0 голосов
/ 31 октября 2018

Я использую libmodbus и у меня есть массив 16-битных целых чисел, где хранятся мои регистры Modbus. Я пытался с MODBUS_GET_INT64_FROM_INT16 (mod_arr, 0), но значение (конечно) целое число. Использование (double) до того, как MAKRO не работает.

modbus_get_float_dcba (mod_arr) чтение только 2 регистров, а не 4 регистров.

Существует ли функция / макрос для чтения 4-х регистров Modbus как двойных (64 бит)?

1 Ответ

0 голосов
/ 02 ноября 2018

Конечно. :-) Мое решение:

temp [0] = modbus [3];

temp [1] = modbus [2];

temp [2] = modbus [1];

temp [3] = modbus [0];

memcpy (& mb_double, & temp, 8);

...