47 ROS_ERROR_STREAM(
"Precheck for connection to " << ip <<
":" << port <<
" failed. " << modbus_strerror(errno)
59 "Could not establish modbus connection. " << modbus_strerror(errno) <<
".");
71 uint32_t tv_sec =
static_cast<uint32_t
>(timeout_ms / 1000);
72 uint32_t tv_usec =
static_cast<uint32_t
>((timeout_ms % 1000) * 1000);
81 return static_cast<unsigned long>(tv_sec * 1000L + (tv_usec / 1000L));
92 RegCont tab_reg(
static_cast<RegCont::size_type
>(nb));
98 std::ostringstream err_stream;
99 err_stream <<
"Failed to read " << nb;
100 err_stream <<
" registers starting from " << addr;
101 err_stream <<
" with err: " << modbus_strerror(errno);
119 throw std::invalid_argument(
"Argument \"read_nb\" must not be negative");
121 RegCont read_reg(
static_cast<RegCont::size_type
>(read_nb));
123 if (write_reg.size() >
static_cast<unsigned int>(std::numeric_limits<int>::max()))
125 throw std::invalid_argument(
"Argument \"write_reg\" must not exceed max value of type \"int\"");
129 rc = modbus_write_and_read_registers(
modbus_connection_, write_addr,
static_cast<int>(write_reg.size()),
130 write_reg.data(), read_addr, read_nb, read_reg.data());
131 ROS_DEBUG_NAMED(
"LibModbusClient",
"modbus_write_and_read_registers: writing from %i %i registers\
132 and reading from %i %i registers",
133 write_addr,
static_cast<int>(write_reg.size()), read_addr, read_nb);
136 std::string err =
"Failed to write and read modbus registers: ";
137 err.append(modbus_strerror(errno));