基本上,我有一个非常简单的C++程序,其中我试图打开一个串行端口(实际上是一个USB->RS232转换器,应该由libserial支持),但代码在Open()上冻结。没有错误,没有异常,什么都没有,它什么也不做。它似乎可以在除此特定端口之外的其他串行端口上工作。串行端口也可以与cutecom和其他终端一起工作(并且它不被任何其他程序保留)。我在打开端口之前和之后都尝试过配置,但这似乎无关紧要。我也看不到任何关于握手的东西,在libserial的(相当糟糕的)文档中,或者在头文件中,也许它在等待握手或其他什么,我不知道……Libserial0版本0.6.0和Ubuntu10.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");
}发布于 2010-11-30 02:00:20
几年前,当我不得不编写一个调制解调器的控制接口,允许通过RS-232进行远程控制时,我研究了libserial。我最终使用了Boost的ASIO实现来利用串口。
不确定Boost.ASIO是否适用于您。但根据我的经验,我还没有把它挂在身上……
发布于 2011-10-12 05:28:39
我在使用USB串行转换器(pl2303)时也发现了这个问题。设置VTime似乎就解决了这个问题。
https://stackoverflow.com/questions/4303995
复制相似问题