の形式のストリーム バッファに文字列を配置しています"000.3\r\n 000.3\r\n ..."
。数回の読み取りごとに".3\r\n 000.3\r\n ...
、フレームごとに 1 回だけバッファから読み取っているだけなので、画面に描画するときに急激な値のジャンプが顕著になります。バッファの読み取り準備ができているかどうかをテストするにはどうすればよいですか? 小数点の後に 000 があるかどうかを確認してください。または、正しいデータを確認するためのより良い方法はありますか?
ポートの初期化:
using namespace boost::asio;
serial_port_base::parity PARITY(serial_port_base::parity::none);
serial_port_base::stop_bits STOPBITS(serial_port_base::stop_bits::one);
serial_port_base::flow_control FLOWCONTROL(serial_port_base::flow_control::none);
port->set_option(serial_port_base::baud_rate(57600));
port->set_option(PARITY);
port->set_option(STOPBITS);
port->set_option(serial_port_base::character_size(8));
port->set_option(FLOWCONTROL);
ポートからの読み取り:
float Serial::ReadData()
{
boost::asio::streambuf buff;
read_until(*port, buff, "\r\n");
std::istream is(&buff);
float f;
if (is >> f)
{
buff.consume(sizeof(buff);
return f;
}
return 0;
}