簡體   English   中英

處理跨平台程序的COM端口的最佳方法?

[英]Best way to deal with COM ports for a cross-platform program?

我正在編寫一個需要將數據發送到連接到COM端口的串行設備的應用程序。 我對處理這種設備的最佳方法感到困惑?

我應該用C ++編寫通訊模塊還是應該用Java編寫通訊模塊?

我想在Windows和Linux上運行該應用程序。

在Linux上,我建議libserial 您也可以考慮使用Python。 有一個多平台的pySerial模塊。 如果決定使用Java,則rxtx是一個多平台庫。 在Windows上,您可以使用Windows API進行串行通信 ,並按@Dharma的建議使用#ifndef將其與libserial結合使用。

我推薦你:

提升ASIO

QextSerialPort (基於Qt)

您可以通過為Windows代碼指定#ifndef“ _WINDOWS_CODE”並為Linux代碼指定部分來用c ++編寫模塊。

在Vc ++中進行編譯時,將(_WINDOWS_CODE)宏放入項目設置中,在gc ++中從項目文件中刪除宏

COM端口只是一個普通的位管道。 這些API應該相當簡單。 在C ++中,世界在編寫端口方面擁有更多的經驗。

另一個問題是-您知道它是什么端口號嗎? 有幾種方法可以找出屬於您的一種,例如Windows上的setup API。

我的建議是,如果您想同時在Linux和Windows中運行應用程序,請使用JAVA!。 您無需編譯即可運行程序。 否則,您必須為Windows和Linux分發單獨的二進制文件。

Windows和Linux中的編程模型也都可以訪問C ++中的SerialPort。由於我是Windows C ++開發人員的初級人員,因此可以使用CreateFile WIn32 Api訪問串行端口。

我應該用C ++編寫通訊模塊還是用JAVA編寫通訊模塊?

您更熟悉哪個? 您是否限於這兩種語言? 您也可以將python與pyserial一起使用。

您是否將此作為個人項目進行? 是上班嗎? 有人在與您合作嗎? 他們更熟悉什么?

對於C ++,您可以使用Boost.Asio

對於Java ...我不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM