Ich verwende streambuf als Speicher für Kommunikation über serielle SchnittstelleBoost-streambuf und schreiben seltsames Verhalten
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;
Ausgang:
Buffer size: 8
Buffer size: 0
Warum Methode size()
unterschiedliche Werte zurückgeben?
Können Sie näher erläutern, warum, nachdem Sie den Puffer ausgeschrieben haben, Sie erwarten, dass er eine von Null verschiedene Größe hat? –
@MarkB Ich erwarte, dass der Schreibvorgang am seriellen Port oder Socket meinen Speicherpuffer nicht ändert. Normalerweise ändern keine Schreibmethoden die Quelle. Vielleicht interpretiere ich sreambuf falsch? – Jeka