我在我的流缓冲区中放置了一个字符串,格式为"000.3\r\n 000.3\r\n ..."
. 每隔几个读数我就会捕捉到一个".3\r\n 000.3\r\n ...
因为,我每帧只从缓冲区读取一次,当绘制到屏幕上时,值的突然跳跃变得明显。我应该如何测试缓冲区是否准备好读取?只需检查我的小数点后是否有 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;
}