Libserial Open() зависает в моей программе на C++
По сути, у меня есть действительно простая программа на C++, где я пытаюсь открыть последовательный порт (который на самом деле является конвертером USB->RS232, должен поддерживаться libserial), но код зависает в Open(). Без ошибок, без исключений, ничего, просто ничего не происходит. Похоже, работает на других последовательных портах, кроме этого конкретного. Последовательный порт также работает с Cutecom и другими терминалами (и он не зарезервирован какой-либо другой программой). Я пытался настроить до и после открытия порта, но это не имеет значения. Я также не вижу ничего о рукопожатии в (довольно плохой) документации libserial или в заголовках, возможно, это ожидание рукопожатия или чего-то еще, я не знаю... Libserial0 версии 0.6.0 и Ubuntu 10.10. Что не так или как я могу попытаться отладить это...? Любые другие предлагаемые библиотеки / способы использования последовательного порта с C++?
#include <SerialStream.h>
#include <iostream>
int main() {
LibSerial::SerialStream device_;
device_.SetBaudRate(LibSerial::SerialStreamBuf::BAUD_9600);
device_.SetCharSize(LibSerial::SerialStreamBuf::CHAR_SIZE_8);
device_.SetNumOfStopBits(1);
device_.SetParity(LibSerial::SerialStreamBuf::PARITY_NONE);
device_.SetFlowControl(LibSerial::SerialStreamBuf::FLOW_CONTROL_NONE);
device_.Open("/dev/ttyUSB1");
}
2 ответа
Я смотрел на libserial пару лет назад, когда мне приходилось писать интерфейс управления для модема, который позволял осуществлять дистанционное управление через RS-232. Я закончил с реализацией ASIO Boost для использования последовательного порта.
Не уверен, что Boost.ASIO будет работать для вас или нет. но по моему опыту я не держал это на себе....
Я также нашел эту проблему, используя USB-последовательный преобразователь (pl2303). Похоже, что установка VTime решает проблему.