2012-03-09 253 views
4

我正在嘗試爲Java應用程序編寫一個插件。該插件應該能夠告訴Java應用程序新事件已被識別(Observer Design Pattern,Polling ...那不是重點)。問題是這些事件是來自Microsoft Kinect控制器的跟蹤手勢(我正在使用C++和Microsoft Kinect SDK,因爲我必須)。這意味着我必須在Java應用程序和我的Kinect應用程序之間進行通信。 我想到了一個像Java應用程序「包括」接口(C++頭文件,dll等)的適配器設計模式。首先我想到了JNI,但是後來我必須編寫一個將在這兩個應用程序端使用的DLL,對吧?我想到的另一件事是通過像UDP協議(或更輕量級?)提供手勢數據。我聽說的最後一件事是編寫一個COM +程序集......但說實話,我對COM +的瞭解還很少。Java應用程序和C++應用程序之間的通信

JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION 

回答

3

我已經發現了一些例子,如hereherehere其中建議您要麼使用共享存儲器結構或者用的插座。

我認爲在這種情況下,讓你的程序通過套接字進行通信將是最好的主意,因爲你的應用程序不會緊密耦合,所以你只需要公開一個IP,一個端口和一組命令。

根據this,似乎可以在Kinect上創建一個C++服務器,但除此之外,我不能說很多,因爲我從來沒有在Kinect相關的項目上工作過。

+0

哦,當然...插座!我會仔細看看。 TY! – seveves 2012-03-09 06:38:45

+0

工程就像一個魅力!我決定使用UDP ...似乎很好;)...謝謝! – seveves 2012-03-09 17:32:10

+0

@SeveFriede:請記住,儘管速度更快,UDP並不保證包裹的交付。如果你決定讓你的應用程序在更遠的距離上通信,這可能會有問題;) – npinti 2012-03-09 17:39:04

4

可能你應該看看谷歌的Protocol Buffers

由於您正在考慮JNI。 我建議你參考IBM tutorial

JNI允許java應用程序調用c/C++方法,反之亦然。

也看看這個 question,如果你從C++調用java。

相關問題