基本上,我有一个非常简单的C++程序,试图打开一个串行端口(实际上是USB-> RS232转换器,应该由libserial支持),但是代码会冻结在Open()上。没有错误,没有异常(exception),什么也没有,它什么都不做。它似乎可以在除此特定端口之外的其他串行端口上工作。串行端口也可以与cutecom和其他终端一起使用(并且任何其他程序均不保留)。我尝试在打开端口之前和之后进行配置,但这似乎无关紧要。在libserial的(相当糟糕的)文档中或 header 中,我也看不到任何有关握手的信息,也许它正在等待握手之类的东西,我不知道... 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");
}
最佳答案
几年前,当我不得不将控制接口(interface)写入调制解调器以允许通过RS-232进行远程控制时,我看着libserial。最后,我使用了Boost的ASIO实现来利用串行端口。
不知道Boost.ASIO是否会为您工作。但根据我的经验,我还没有卡在我身上。
关于c++ - Libserial Open()在我的C++程序中卡住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4303995/