【发布时间】:2016-05-27 16:25:17
【问题描述】:
我使用streambuf作为串口通信的存储
io_service io;
serial_port sp(io);
sp.open("COM4");
sp.set_option( serial_port_base::baud_rate( 115200 ) );
sp.set_option( serial_port_base::character_size( 8 ) );
sp.set_option( serial_port_base::stop_bits( serial_port_base::stop_bits::one ) );
sp.set_option( serial_port_base::parity( serial_port_base::parity::none ) );
sp.set_option( serial_port_base::flow_control( serial_port_base::flow_control::none ) );
boost::asio::streambuf buffer;
// Fill buffer here
auto size = buffer.size();
std::cout << boost::format("Buffer size: %d") % size << std::endl;
boost::asio::write( sp, buffer );
size = buffer.size();
std::cout << boost::format("Buffer size: %d" ) % size << std::endl;
输出:
Buffer size: 8
Buffer size: 0
为什么方法size()返回不同的值?
【问题讨论】:
-
你能详细说明为什么在你写出缓冲区之后,你希望它有一个非零大小吗?
-
@MarkB 我希望串行端口或套接字上的写操作不会修改我的存储缓冲区。通常任何写入方法都不会修改源代码。也许我对 sreambuf 的解释不正确?
标签: c++ boost boost-asio