Здравствуйте!
Имеем ТРМ138, подключенный к ПК с помощью библиотеки owen_io. Обнаружил некорректную работу функции ReadStoredDotS. При чтении значения уставки C.SP функция возвращает неправильное значение.
Пример. На ЦПУ-2 для канала 1 горит значение "30.0". При прогоне такого кода:
res = ReadStoredDotS(0, ADRTYPE_8BIT, "C.SP", value, -1);
printf("%f\n", value);
на экране ПК получим "439.600006".
Аналогично при чтении значения "45.0" на ЦПУ-2, на экране ПК получим "454.600006".

Если же предварительно записать целое значение уставки, а потом прочитать его с помощью такого кода:
float value=30.0;
res = WriteStoredDotS(0, ADRTYPE_8BIT, "C.SP", value, -1);
res = ReadStoredDotS(0, ADRTYPE_8BIT, "C.SP", value, -1);
printf("%f\n", value);
, то на ЦПУ-2 загорается "30" (без точки и нуля), а на экране ПК получим "30.000000".

На сколько я понял, функция ReadStoredDotS возвращает некорректное значение, если считываемый параметр отображается на ЦПУ-2 как не целое число.

Среда разработки c++ builder, поэтому файл owen_io.lib конвертировал с помощью coff2omf.exe.

Поэтому вопрос: это действительно ошибка в библиотеке, проблема из-за конвертации lib файла, или я что-то недопонял?