У меня есть последовательный клиент, который использует пользовательский формат поверх протокола Modbus, поэтому я должен соответствующим образом декодировать ответы. Однако, похоже, я не могу зарегистрировать свою функцию в последовательном клиенте, так как получаю сообщение об ошибке:
AttributeError: 'ModbusSerialClient' object has no attribute 'register'
Изучение исходного кода показывает, что функция .register()
реализована только для TcpClient. Это по дизайну? И если да, то как мне работать с пользовательским форматом для SerialClient?
registers
? - person Bosz   schedule 12.12.2019.register()
- person TheKaltur   schedule 13.12.2019tcp
иserial
не имеют атрибутаregister
. Я полагаю, вы путаете ответ регистрации, который имеет атрибутregisters
. Например, см. github.com/riptideio/pymodbus/blob /мастер/примеры/общие/ - person Sanju   schedule 13.12.2019.register
, поэтому он должен быть.registers
, и проверьте.isError()
, прежде чем пытаться достичь.registers
. Проверьте этот пост. - person Benyamin Jafari   schedule 09.01.2020.register()
использовалась для регистрации пользовательского класса ответов, предположительно, в таблицах функций вfactory.py
. Я не мог заставить это работать сModbusSerialClient
, отсюда и вопрос. Я хотел использовать это, потому что не хотел редактировать библиотеки, а вставлять свои пользовательские классы во время выполнения, если это возможно. - person TheKaltur   schedule 10.01.2020