【问题标题】: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

【问题讨论】:

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

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


【解决方案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 意味着一点性能成本,但有时可以忽略不计
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多