У меня проблемы с подключением через последовательное соединение. Я пытаюсь подключиться к роботу с помощью библиотеки LibSerial. Мой код, кажется, не открывает соединение правильно, и я не знаю почему. Робот автоматически отправляет несколько сообщений в секунду через последовательное соединение. Структура сообщения !number:number,
(восклицательный знак, за которым следуют число, двоеточие, другое число и запятая).
Я использовал и putty, и HTerm, чтобы убедиться, что робот действительно отправляет данные. Как прием, так и отправка команд работают нормально с HTerm, но ни прием, ни отправка не работают с моим кодом.
Это конфигурация последовательного соединения:
serial_connector_.Open("/dev/ttyUSB0");
serial_connector_.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_115200);
serial_connector_.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8);
serial_connector_.SetNumOfStopBits(1);
serial_connector_.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE);
serial_connector_.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE);
После этого serial_connector_.IsOpen()
возвращает истину.
Затем я пытаюсь прочитать из последовательного соединения, используя:
char read[100] = "";
if(serial_connector_.rdbuf()->in_avail() > 0){
serial_connector_.read(read, 100);
std::cout << "Read: " << read <<std::endl;
}
read
всегда остается пустой строкой и serial_connector_.rdbuf()->in_avail()
оценивается как 1, хотя это не имеет особого смысла, учитывая структуру сообщения. Чтение только одного символа не работает.
char next_byte;
serial_connector_.get(next_byte);
не имеет никакого эффекта Это первый раз, когда я работаю над последовательным соединением, поэтому возможно, что я сделал фундаментальную ошибку. Любая помощь о том, как заставить работать сообщение очень ценится!
Задача ещё не решена.
Других решений пока нет …