以独立于平台的方式访问串口[关闭]

Posted

技术标签:

【中文标题】以独立于平台的方式访问串口[关闭]【英文标题】:Access the serial port in a platform-independant way [closed] 【发布时间】:2012-08-23 08:53:45 【问题描述】:

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

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

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

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

【问题讨论】:

boost.org/doc/libs/1_51_0/doc/html/boost_asio/reference.html 串口? @ForEveR,我怀疑这方面的事情可能会出现。 Boost 似乎是地球上所有问题的答案 :) 既然您正在寻找可移植性,您是否考虑过脚本语言? Python 及其 pySerial 可能是一个不错的选择 - pyserial.sourceforge.net @therefromhere,我只“说”bash,这远非便携。如果有人告诉我“这只是为了完成任务”,我会学习另一种语言,但目前我没有任何方向的线索。 【参考方案1】:

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

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

【讨论】:

:( 半年以来我一直在寻找学习python的借口,现在你又阻止了一个。我怪你!我会试试Boost,如果它可以处理USB转换器我接受这个答案。 抱歉(巨大的!)延迟。如果你有时间请看这个:webalice.it/fede.tft/serial_port/serial_port.html 非常感谢。这就是我要走的路。 不客气。祝你的项目好运。【参考方案2】:

你可以看看JavaCommunication Api

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

【讨论】:

使用 Cygwin 意味着一点性能成本,但有时可以忽略不计

以上是关于以独立于平台的方式访问串口[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式打开和关闭控制台

是否可以以独立于平台的方式在 Google Chrome 扩展程序中捕获用户名? [复制]

从 Mac 访问 Parallels Windows localhost [关闭]

C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间

以编程方式访问 Graphite 数据的最佳方式是啥? [关闭]

2个java项目如何访问一个独立于项目之外的公有文件夹?