我正在尝试使用 libserial 从串行端口读取数据。该代码设置与传感器(arduino)的串行端口通信,然后要求用户输入以从串行端口读取数据固定次数。
代码编译并运行。但是,它忽略了从 std::cin 获取用户输入并继续运行到完成的行。它不会暂停使用 cin 捕获数据。每次我运行时,要从 cin 读取的值都设置为一些垃圾值,例如 -344969024、-1750564672、139065363 等。代码和示例输出如下:
我在 ubuntu 14.04,gcc-4.8.4。初始化串行端口后无法从标准输入中读取此行为也已报告
#include <SerialStream.h>
#include "SerialPort.h"
#include <iostream>
//#include <unistd.h>
//#include <cstdlib>
#include <fstream>
#include <string>
using namespace LibSerial;
int main(int argc,char * argv[])
{
SerialPort serial_port ("/dev/ttyUSB0") ;
serial_port.Open() ;
serial_port.SetBaudRate( SerialPort::BAUD_115200 );
serial_port.SetCharSize( SerialPort::CHAR_SIZE_8 );
std::ofstream out("output.txt");
int i=0;
for (i=0;i<4;i++)
{
std::cout << serial_port.ReadLine() ; // necessary to read headers from sensor connected to serial port
}
serial_port.WriteByte( 'S' ); // necessary to initiate the communication from sensor connected to serial port
int num_readings;
std::cout <<"enter number of readings to take" << std::endl;
std::cin>>num_readings;
int j=0;
while(j<num_readings)
{
std::cout << serial_port.ReadLine() ;
j++;
std::cout << "came inside loop"<< std::endl;
}
return 0;
}
样本输出:
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop
quat -0.98 0.06 0.16 -0.10
came inside new loop