Название: libmodbus errno ETIMEDOUT на win32 Отправлено: kotofos от Сентябрь 28, 2015, 11:47 Здравствуйте.
Есть необходимость опрашивать устройство по модбасу. Решил использовать libmodbus http://libmodbus.org/ QT 5, windows 7, kits: win32, mingw; libmodbus v3.1.2 Пока устройство отвечает всё ок, но стоит разорвать связь (выдернуть провод из ком порта) modbus_read_registers возвращает -1, что и должно. errno устанавливается в ETIMEDOUT что тоже ок. Но errorStr = modbus_strerror(errno) возвращает "Unknown error". В коде modbus_strerror для ETIMEDOUT вызывается default: Код: switch(errnum) { Если так, то libmodbus не полностью кроссплатформа? И нужно добавлять case ETIMEDOUT? errno.h подключен, ETIMEDOUT в нём задефайнен как 138 Код modbus_strerror Код: const char *modbus_strerror(int errnum) { Название: Re: libmodbus errno ETIMEDOUT на win32 Отправлено: sergek от Сентябрь 30, 2015, 20:05 На мой взгляд, информативность сообщения о таймауте не больше "неизвестной ошибки".
Название: Re: libmodbus errno ETIMEDOUT на win32 Отправлено: kotofos от Октябрь 06, 2015, 08:00 Разобрался. Действительно так оно и есть. https://stackoverflow.com/questions/13523532/strerror-with-mingw-w64 (https://stackoverflow.com/questions/13523532/strerror-with-mingw-w64)
|