Не могу прочитать из std :: cin при чтении из последовательного порта с помощью libserial

Я пытаюсь читать с последовательного порта с помощью 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

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]