2

基本上我有一个非常简单的 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");

}
4

2 回答 2

1

几年前,当我不得不为允许通过 RS-232 进行远程控制的调制解调器编写控制接口时,我查看了 libserial。我最终选择了 Boost 的 ASIO 实现来使用串行端口。

不确定 Boost.ASIO 是否适合您。但根据我的经验,我没有把它挂在我身上......

于 2010-11-29T18:00:20.447 回答
0

我还使用 USB 串行转换器 (pl2303) 发现了这个问题。看来设置 VTime 解决了这个问题。

于 2011-10-11T21:28:38.857 回答