Libserial Open()在我的C ++程序中冻结

时间:2010-11-29 13:04:05

标签: c++ serial-port freeze libserial

基本上我有一个非常简单的C ++程序,我试图打开一个串口(实际上是一个USB-> RS232转换器,应该由libserial支持),但代码冻结在Open()上。没有错误没有例外,没有,它什么都不做。它似乎适用于其他串行端口,除了这个特定的端口。串口也可以与cutecom和其他终端一起使用(并且它不被任何其他程序保留)。我在打开端口之前和之后尝试过配置,但似乎并不重要。我也看不到关于libserial(或相当差的)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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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