c++ - Libserial Open() 在我的 C++ 程序中卡住

标签 c++ serial-port freeze libserial

基本上我有一个非常简单的 C++ 程序,我试图打开一个串口(实际上是一个 USB->RS232 转换器,libserial 应该支持)但是代码在 Open() 上卡住。没有错误没有异常(exception),什么都没有,它什么都不做。它似乎适用于除此特定串口之外的其他串口。串行端口也可以与 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");

}

最佳答案

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

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

关于c++ - Libserial Open() 在我的 C++ 程序中卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303995/

相关文章:

c - 使用 C 在 Linux COM 上进行 XBee 串行通信

c++ - 在 C++ 和 Linux 中通过超时写入和读取串口

java - Java线程: 'join' froze my program

c# - 使用 usbser.sys 在 SerialPort.Open/DeviceIoControl/GetcommState 上卡住

c++ - Visual Studio 在添加 if 语句后显示 C++ 歧义错误

c++ - 我应该在学习 C++ 之前学习 C 吗?

c++ - pthread_join 段错误

c++ - 将字节数组转换为 in_addr 或 in6_addr 和字节序

c++ - Linux下使用c++进行串口通信

c# - 如何避免 GUI 卡住?