43 ROS_ERROR_STREAM_NAMED(
"LibModbusClient",
"Could not establish modbus connection." << modbus_strerror(errno));
53 struct timeval response_timeout;
54 response_timeout.tv_sec = timeout_ms/1000;
55 response_timeout.tv_usec = (timeout_ms % 1000) * 1000;
61 struct timeval response_timeout;
63 return response_timeout.tv_sec * 1000L + (response_timeout.tv_usec / 1000L);
74 RegCont tab_reg(static_cast<RegCont::size_type>(nb));
80 std::ostringstream errStream;
81 errStream <<
"Failed to read " << nb;
82 errStream <<
" registers starting from " << addr;
83 errStream <<
" with err: " << modbus_strerror(errno);
93 const int read_addr,
const int read_nb)
102 throw std::invalid_argument(
"Argument \"read_nb\" must not be negative");
104 RegCont read_reg(static_cast<RegCont::size_type>(read_nb));
106 if (write_reg.size() > std::numeric_limits<int>::max())
108 throw std::invalid_argument(
"Argument \"write_reg\" must not exceed max value of type \"int\"");
113 write_addr, static_cast<int>(write_reg.size()), write_reg.data(),
114 read_addr, read_nb, read_reg.data());
115 ROS_DEBUG_NAMED(
"LibModbusClient",
"modbus_write_and_read_registers: writing from %i %i registers\ 116 and reading from %i %i registers",
117 write_addr, static_cast<int>(write_reg.size()), read_addr, read_nb);
120 std::string err =
"Failed to write and read modbus registers: ";
121 err.append(modbus_strerror(errno));
virtual ~LibModbusClient() override
See base class.
#define ROS_ERROR_STREAM_NAMED(name, args)
RegCont readHoldingRegister(int addr, int nb) override
See base class.
std::vector< uint16_t > RegCont
Convenience data type defining the data type for a collection of registers.
void close()
Close connection with server.
bool init(const char *ip, unsigned int port) override
See base class.
RegCont writeReadHoldingRegister(const int write_addr, const RegCont &write_reg, const int read_addr, const int read_nb) override
See base class.
#define ROS_DEBUG_NAMED(name,...)
void setResponseTimeoutInMs(unsigned long timeout_ms) override
See base class.
unsigned long getResponseTimeoutInMs() override
See base class.
modbus_t * modbus_connection_
Expection thrown by prbt_hardware_support::LibModbusClient::readHoldingRegister if a disconnect from ...