2010-07-13 63 views
0

我正在寫一個應用程序,它需要將數據發送到連接到COM端口的串行設備。 我很困惑,處理這種設備的最佳方式是什麼?處理跨平臺程序的COM端口的最佳方法?

我應該用C++編寫通信模塊還是應該用Java編寫這個模塊?

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

回答

1

COM端口只是一個普通的管道。 API預計相當簡單。在C++中,世界有更多的寫入端口的經驗。

其他問題將是 - 你知道它是什麼端口號?有幾種方法可以找出哪一個是你的,比如在Windows上設置API。

+0

SOrry中斷,但我認爲他的應用程序是基於多操作系統... C++在這種情況下有很大的負面影響! – thatsalok 2010-07-13 06:11:19

+0

@thatsalok:我不同意。我總是製作使用COM端口的多操作系統C++軟件。 'C++'完全適合這個任務。 – ereOn 2010-07-13 06:29:40

0

我的建議是,如果你想運行你的應用程序在Linux和Windows,去爲JAVA !.你可以在不需要編譯的情況下運行你的程序。否則你必須爲Windows和Linux分發單獨的二進制文件。

同時在windows和linux中用於訪問C++中的SerialPort的編程模型,因爲我初步是一個Windows C++開發人員,您可以使用CreateFile WIn32 Api訪問串行端口。

+0

您希望使用單個二進制文件在Linux和Windows上使用哪種串行通信庫? – 2010-07-13 06:25:30

+0

我沒有任何關於!那就是爲什麼推薦使用JAVA進行跨平臺開發。 有一種叫做minigw的東西,但你仍然編譯你的應用程序! – thatsalok 2010-07-13 06:40:24

2

你可以通過指定windows代碼的#ifndef「_WINDOWS_CODE」來編寫C++模塊,否則就可以編寫linux代碼的一部分。

而在VC++編譯擺在projecty設置 和GC的(_WINDOWS_CODE)宏++從項目文件

3

刪除宏在Linux上,我會建議libserial。你也可以考慮使用Python。有一個多平臺pySerial模塊。如果您決定使用Java,rxtx是一個多平臺庫。在Windows上,您可以使用Windows API for serial communications,並使用#ifndef與libserial結合使用,如@Dharma建議的那樣。

+0

我在過去使用過rxtx跨平臺,它工作正常。 – Catchwa 2010-07-13 06:19:20

+0

rxtx是完美的。在我的情況下,我遇到了一些麻煩,因爲我在Win 7 64位上下載了64位版本。但是由於我的Java安裝是32位的,我不得不使用32位版本來運行它。 – BetaRide 2012-01-08 16:56:18

0

將我寫的通訊模塊 C++或應我寫這篇文章的JAVA?

你更熟悉哪些?你受限於這兩種語言嗎?你也可以在pyserial中使用python。

你是做這個個人項目嗎?是爲了工作嗎?有人正在與你一起工作嗎? 他們更熟悉哪些?

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

對於Java ...我不知道。