Tag Archives

2 Articles

boost::asio::serial_port::read_someでEnd Of File Exceptionが出る際の対処法

boost::asio::serial_portread_some を使って
シリアルポートから読んだ際に,一瞬にしてEOF Exceptionが
投げられました.デバイスファイルのパスもボーレートも権限も
正しいはずなのになんでだろう??と思って調べたのでメモ.

what():  read_some: End of file

解決法1

stackoverflow.com/questions/45896414/boost-asio-serial-port-end-of-file

$ stty -F /dev/ttyUSB0 raw

解決法2

read_some の第2引数に boost::system::error_code を与えてやる.

auto port = boost::asio::serial_port{};
port.open("/dev/ttyUSB0");
port.set_option(boost::asio::serial_port_base::baud_rate(115200));
auto dest_ptr = get_dest_ptr();
auto dest_size = get_dest_size();
auto err_code = boost::system::error_code{};
port.read_some(boost::asio::buffer(&dest_ptr, dest_size), err_code);