如何使用boost::asio::serial_port支持硬件流控制
How do I use boost::asio::serial_port support for hardware flow control?
我正在使用Boost的asio::serial_port库与一个虚拟串行端口(FTDI芯片)交谈。我想使用硬件流控制(即RTS/CTS),但我似乎找不到太多关于如何将其与Boost一起使用的文档。我得到的代码是:
serialPort.set_option(boost::asio::serial_port::
flow_control(boost::asio::serial_port::flow_control::hardware));
这一行到位后,程序将不会运行。上面写着:
libc++abi.dylib: terminate called throwing an exception
Abort trap: 6
如果我将...flow_control::hardware
更改为...flow_control::software
或...flow_control::none
,串行端口工作正常(但显然没有硬件流控制)。我花了很多时间寻找这方面的文档,但没有找到。有人知道如何使用Boost的流量控制吗,或者知道这是在哪里记录的吗?我在Mac OS 10.8.2上使用来自Fink的Boost。谢谢
这是一个旧链接,但考虑到它是谷歌上两个不同序列数据搜索的首选项,我觉得它需要一个答案。
线路本身不是问题所在。问题可能是由于在错误的时间调用函数而引发的异常。
信不信由你,你需要先打开端口,然后设置流量控制。上面的行并没有给出相对于其他行调用这些行的完整画面。当端口打开时,将setoption放在后面,它应该可以工作。
还有一个版本的set_option将boost::system_error作为参数。无论出于何种原因,如果该版本不起作用,它将返回一个错误。如果您不使用带有system_error参数的版本,那么您应该包装一个函数,该函数可以并且将在try/catch块中抛出异常。
此外,terminate是由于未处理的异常(编码问题),因此是terminate处的神秘异常。如果您处理异常,异常本身将指向串行配置问题(运行时问题),这可能是由于缺乏设置权限或端口未打开,因此RTS可用性验证失败,等等。
- 编译时未启用intel oneApi CUDA支持
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用CMake检测支持的C++标准
- 为什么istream不支持右值提取
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 扩展光电二极管探测器以支持多个传感器
- MSVC是否支持C++11样式的属性而不是__declspec
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 哪个C++规范开始支持 std::vector
- 如何检测VS C++编译器是否支持C++11?
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 将 IPv6 支持添加到雨量计
- 为什么C++不支持对未初始化变量进行智能分析?
- LMDB 是否支持随机读取?
- 在 c++ 中连接字符串和整数,以便在 C++ 11 不支持计算机的情况下读取多个文件
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错