处理跨平台程序的COM端口的最佳方法是什么?

时间:2010-07-13 06:05:00

标签: java c++ cross-platform serial-port

我正在编写一个需要将数据发送到连接到COM端口的串行设备的应用程序。 我很困惑,处理这种设备的最佳方法是什么?

我应该用C ++编写通信模块,还是用Java写这个?

我想在Windows和Linux上运行该应用程序。

6 个答案:

答案 0 :(得分:3)

在Linux上我会推荐libserial。您也可以考虑使用Python。有一个多平台pySerial模块。如果您决定使用Java,rxtx是一个多平台库。在Windows上,您可以使用Windows API for serial communications并使用#ifndef将其与libserial结合为@Dharma建议。

答案 1 :(得分:3)

我建议你:

Boost ASIO

QextSerialPort(基于Qt)

答案 2 :(得分:2)

你可以通过为windows代码指定#ifndef“_WINDOWS_CODE”来编写c ++模块,而不是linux代码的部分。

在Vc ++中编译时将(_WINDOWS_CODE)宏放入项目设置中 并在gc ++中从项目文件中删除宏

答案 3 :(得分:1)

COM端口只是一个普通的位管道。 API预计会相当简单。在C ++中,世界在写入端口方面拥有更多的经验。

其他问题是 - 你知道它是什么端口号吗?有几种方法可以找出哪一个是你的,比如在Windows上设置API。

答案 4 :(得分:0)

我的建议是,如果你想在Linux和Windows上运行你的应用程序,请转到JAVA!。你可以运行你的程序而无需编译。否则你必须为Windows和Linux分发单独的二进制文件。

在Windows和Linux中编程模型以便在C ++中访问SerialPort,因为我是Windows C ++开发人员的初步,你可以使用CreateFile WIn32 Api来访问串口。

答案 5 :(得分:0)

  

我应该写通讯模块   在C ++中还是我应该在JAVA中写这个?

你对哪个更熟悉?你只限于这两种语言吗?你也可以使用python和pyserial。

您是否将此作为个人项目?是为了工作吗?有人和你一起工作吗? 他们更熟悉什么?

对于C ++,您可以使用Boost.Asio

对于Java ......我不知道。