18 #include <boost/chrono/chrono_io.hpp> 22 using boost::asio::ip::udp;
29 const uint32_t& host_udp_port,
30 const unsigned short scanner_port_write,
31 const unsigned short scanner_port_read)
32 : socket_write_(io_service_, udp::endpoint(udp::v4(), host_udp_port + 1))
33 , socket_read_(io_service_, udp::endpoint(udp::v4(), host_udp_port))
34 , udp_write_endpoint_(
boost::asio::ip::address_v4::from_string(scanner_ip), scanner_port_write)
35 , udp_read_endpoint_(
boost::asio::ip::address_v4::from_string(scanner_ip), scanner_port_read)
52 catch (
const boost::system::system_error& ex)
67 catch (
const boost::system::system_error& ex)
81 catch (
const boost::system::system_error& ex)
94 const std::chrono::steady_clock::duration timeout)
96 const auto start_time{ std::chrono::steady_clock::now() };
99 if ((std::chrono::steady_clock::now() -
start_time) > timeout)
103 std::this_thread::sleep_for(std::chrono::milliseconds(TIMEOUT_LOOP_SLEEP_DURATION_MS));
106 std::size_t bytes_read{ 0 };
112 catch (
const boost::system::system_error& ex)
PSENscanUDPInterface(const std::string &scanner_ip, const uint32_t &host_udp_port, const unsigned short scanner_port_write=PSEN_SCAN_PORT_WRITE, const unsigned short scanner_port_read=PSEN_SCAN_PORT_READ)
std::size_t read(boost::asio::mutable_buffers_1 &buffer, const std::chrono::steady_clock::duration timeout) override
Receive data from the scanner.
bool isUdpMsgAvailable() const
boost::asio::ip::udp::socket socket_write_
static const uint64_t TIMEOUT_LOOP_SLEEP_DURATION_MS
boost::asio::ip::udp::endpoint udp_write_endpoint_
boost::asio::ip::udp::endpoint udp_read_endpoint_
virtual ~PSENscanUDPInterface()
void close() override
Closes the connection to the scanner device.
boost::asio::ip::udp::socket socket_read_
void open() override
Opens the connection to the scanner device.
void write(const boost::asio::mutable_buffers_1 &buffer) override
Sends data to the scanner device.