c++ - 以与平台无关的方式访问串口

标签 c++ c serial-port platform-independent

我的任务是创建一个程序,从桌面工作站通过 RS-232 控制设备。目前我正处于规划阶段,需要一些一般帮助来选择语言和解决问题的总体方法。

该程序应该在 Linux(主要是 Ubuntu)和 Windows(XP、7)下的 32 位和 64 位 Intel 处理器上构建和运行。工作站可能有物理 COM 端口或(更有可能)USB-RS232 转换器。

目前我最好的选择是使用 CMake 有条件构建的 C++ 程序。是否有某种方法,使用某种语言来配置和访问与平台无关的串行端口(包括通过 USB 模拟)?如果不是,解决这个问题的好方法是什么?

到目前为止的建议:
* C++ with Boost
* python with pySerial

最佳答案

使用Boost Asio(使用C++)!

( http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio.html )

保证独立于平台:http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/using.html

它比任何其他库都要好得多的是它支持异步通信。我认为该功能在您的设备控制软件中非常有用。并且不要忘记它是 Boost 的一部分,其库非常可靠。

我已经在我的短信程序中使用了它(使用通过串行/COM 端口发送的 AT 命令)。

希望这能解决您的问题,就像解决我的问题一样。

关于c++ - 以与平台无关的方式访问串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088071/

相关文章:

c++ - 使用 BNF 在 Bison 中实现循环

c - 如何将文件中的行存储到动态数组中并打印?

java - JSSC 串行接口(interface)上​​的 UnsatsifiedLinkError(处理)

c# - 如何用多项式 x16 + x12 + x5 + 1 计算 CRC 16

c++ - 来自 c++11 的 std::thread 问题

c++ - 从具有行优先顺序的数组创建特征矩阵

c++ - 使用 CMake 编译 CUDA 时出现错误 "undefined reference to ` __cudaRegisterLinkedBinary"

C 编程 HWND

c - 是否可以随我的应用程序分发更新版本的 libc?

python - 使用Python串口库处理从串口读取的原始数据?