以独立于平台的方式访问串行端口

时间:2012-08-23 08:53:46

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

使用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命令)。

希望这能解决你的问题,因为它解决了我的问题。

答案 1 :(得分:1)

您可以查看Java Communication Api

对于C / C ++,您可以在linux,MacOS和Cygwin(适用于Windows)下使用 / dev / ttySx 设备。 如果USB-RS232转换器基于FTDI芯片,您可以查看libFTDI。 最后,您最终可以查看RS-232 for Linux and Windows