42 using boost::asio::serial_port_base;
48 Comm(message_handler),
50 baud_rate_(baud_rate),
51 serial_port_(io_service_)
62 baud_rate_ = baud_rate;
65 serial_port_.set_option(serial_port_base::baud_rate(baud_rate_));
67 catch (boost::system::system_error e)
69 message_handler_.error(e.what());
76 bool Serial::is_open()
78 return serial_port_.is_open();
81 bool Serial::do_init()
85 serial_port_.open(port_);
86 serial_port_.set_option(serial_port_base::baud_rate(baud_rate_));
87 serial_port_.set_option(serial_port_base::character_size(8));
88 serial_port_.set_option(serial_port_base::parity(serial_port_base::parity::none));
89 serial_port_.set_option(serial_port_base::stop_bits(serial_port_base::stop_bits::one));
90 serial_port_.set_option(serial_port_base::flow_control(serial_port_base::flow_control::none));
92 catch (boost::system::system_error e)
94 message_handler_.error(e.what());
101 void Serial::do_close()
103 serial_port_.close();
106 void Serial::do_async_read(
const boost::asio::mutable_buffers_1 &buffer,
107 boost::function<
void (
const boost::system::error_code&,
size_t)> handler)
109 serial_port_.async_read_some(buffer, handler);
112 void Serial::do_async_write(
const boost::asio::const_buffers_1 &buffer,
113 boost::function<
void (
const boost::system::error_code&,
size_t)> handler)
115 serial_port_.async_write_some(buffer, handler);
Abstract base class for an asynchronous communication port.
Abstract base class for message handler.
Serial(std::string port, unsigned int baud_rate, MessageHandler &message_handler=default_message_handler_)
Open a serial port.
bool set_baud_rate(unsigned int baud_rate)
Set serial port baud rate.