Всем привет! Собрал modbus-utils под armv6 (Raspberry Pi первого поколения), наступил на некоторое количество проблем, решил, что:
Стоит оформить мои заметки либо в отдельный раздел в статье, либо в отдельную статейку со ссылкой оттуда, но обнаружил, что не могу редактировать раздел “Подготовка к работе”
Узнать у вас актуален ли этот код вообще, какие там требования к контрибьюторам, найти время, написать cmake для упрощения сборки libmodbus и modbus-utils и занести merge-request-ов
Отсюда вопрос - это кому-то нужно, стоит тратить время?
Актуальность - не особо велика, сейчас есть более свежие реализации Modbus_client в том числе сразу пакетами.
Но если хотя бы паре человек поможет - уже большое дело.
Внимательно следите за ошибками при запуске ./autogen.sh перед сборкой libmodbus - там внутри вообще нет проверок, оно в любом случае напечатает Initialized build system. You can now run ./configure.
Например тут, очевидно, забыли поставить пакет libtool:
configure.ac:33: installing 'build-aux/compile'
configure.ac:56: installing 'build-aux/config.guess'
configure.ac:56: installing 'build-aux/config.sub'
configure.ac:32: installing 'build-aux/install-sh'
configure.ac:32: installing 'build-aux/missing'
src/Makefile.am:3: error: Libtool library used but 'LIBTOOL' is undefined
src/Makefile.am:3: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
src/Makefile.am:3: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
src/Makefile.am:3: If 'LT_INIT' is in 'configure.ac', make sure
src/Makefile.am:3: its definition is in aclocal's search path.
src/Makefile.am: installing 'build-aux/depcomp'
autoreconf: automake failed with exit status: 1
Для удобного использования можно добавить в конец ~/.bash_profile или ~/.bashrc:
MODBUS_UTILS="Полный путь до загруженного репозитория"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${MODBUS_UTILS}/libmodbus/src/.libs/"
PATH="${PATH:+${PATH}:}${MODBUS_UTILS}/modbus_client:${MODBUS_UTILS}/modbus_server"
BUS=/dev/ttyACM0 # Пример для Raspberry Pi B+
alias modbus_client="modbus_client -mrtu -b9600 -pnone -s2 $BUS"
Заметка: не забудьте дать вашему пользователю/группе прав на чтение/запись в устройство $BUS. Как вариант для Raspberry Pi - можно просто закинуть себя в группу dialout: usermod -aG dialout $(whoami). Для совсем хлебушков, посмотреть права на устройство: ls -l $BUS.
Пример использования alias:
mak@metroid:~ # modbus_client --debug -a151 -t0x03 -r128
Opening /dev/ttyACM0 at 9600 bauds (N, 8, 2)
[97][03][00][80][00][01][98][D4]
Waiting for a confirmation...
<97><03><02><00><97><B1><F7>
SUCCESS: read 1 of elements:
Data: 0x0097
Есть, но только бородатой версии и только под amd64 и armel. Да и вопрос что будет быстрее - качать и распаковывать .deb и доставать из него бинарь под какой-нибудь альмой или собрать из репозитория по готовому руководству.