我将一个字符串放在"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;
}