我想知道是否有可能在引發硬件中斷時自動調用Java方法。Java硬件中斷處理
回答
原則上是的,但它需要一些C代碼和JNI才能將其與Java結合。如果你非常幸運,也許已經有人已經爲你感興趣的平臺建立了合適的庫。
底線:如果它可以在C中完成,你可以將它鉤到Java。
@djna,謝謝你的回答。我一直在尋找這樣的Java庫,但徒勞無功。 – 2009-11-19 08:13:03
@Sigh - 您需要一個與您的操作系統和硬件環境相匹配的本地庫。 JNI部分沒有魔法,網上有一些教程。 – 2009-11-19 08:27:50
可能有其他選擇。
我正在做類似的事情:在一個應用程序中,我監視4只老鼠的點擊。這些點擊會產生中斷,但我很高興不會直接從Java處理它們。在Linux下
,原來有設備文件(/dev/input/mouse#
),其噴出一串字符的東西時,用鼠標發生。我有一個線程與讀取阻塞的FileReader每個人。一旦字符到達,相關線程解鎖,我可以做任何我喜歡的處理。
所以這個想法是:如果可能的話,找到一種方法來獲取設備驅動程序,以便以文件/設備形式訪問您的數據,然後您可以使用來自Java庫的IO調用從Java訪問它,沒有奇怪的比特代碼和C之間需要。
它是嵌入式實時Java的標準。去www.ajile.com或systrmonx.com購買評估板。
嵌入式java是而不是 pc上的標準。您可以在PC硬件上獲得實時Java,但不能嵌入位。
看看Swig。 Java implementation有Directors,它允許你從C/C++調用Java。我已經使用這種技術來處理調用到C#中的中斷,並且它工作得很好。調用Java應該不會有太大的不同。
如果您想直接從Java中斷響應,那麼該VM必須運行在內核空間(或在某些系統上與用戶空間的驅動,在驅動程序上下文)。 JamaicaVM在一些RTOS上以這種模式運行,例如Thread-X或VxWorks作爲DKM。 RTSJ的下一個版本將支持用Java編寫中斷服務例程。
的RTSJ可用於甚至在用戶空間中運行第二級中斷處理程序。這需要一個小型設備驅動程序,它可以向VM發送POSIX信號,或者提供字符設備接口,其中VM中的一個線程在讀取設備時阻塞。在第一種情況下,一個AsyncEventHandler可以與POSIX信號相關聯。在第二種情況下,每次從設備讀取一個字節時,阻塞設備讀取的踩點可以觸發AsyncEvent。然後將發佈任何附加到AsyncEvebt的AsyncEventHandler。
如果你想嘗試這種在Linux下,你可以下載JamaicaVM個人版:「http://www.aicas.com/jamaica-pe.html」。 JamaicaVM有一個實時垃圾回收器,代碼可以靜態編譯以確保實時性能。這是一個不同於傳統JVM的部署模型。
- 1. 在Linux中處理硬件中斷
- 2. 瞭解處理器和硬件級別的硬件中斷和異常
- 3. 如何處理JNI,硬件中斷在cocos2dx中
- 4. 來自Linux的嵌入式系統中斷/硬件處理
- 5. 進入中斷處理程序後,是否必須禁用硬件中斷?
- 6. 處理中斷:
- 7. 處理中訪問硬件信息
- 8. 捕捉硬件中斷
- 9. 硬件中斷列表
- 10. 哪個處理器會在多核系統中執行硬件中斷
- 11. 最佳實踐:處理代表它們的類中的硬件斷開連接
- 12. 受保護的硬件中斷處理程序卡住了嗎? (DJGPP)
- 13. 中斷處理Linux和待處理中斷
- 14. 處理器如何處理中斷
- 15. java中的文件處理
- 16. Java中的事件處理
- 17. 音頻處理的硬件平臺
- 18. openshift如何處理損壞的硬件?
- 19. 處理硬件後退按鈕單擊
- 20. 如何中斷事件處理程序
- 21. 在VHDL中處理中斷
- 22. 異常處理,最後在Java阻斷
- 23. JAVA:處理插座斷開連接
- 24. 硬中斷和softirq
- 25. Java中的事件處理與C#中的事件處理
- 26. 文件處理Java
- 27. 信號,軟件中斷和硬件中斷之間的區別?
- 28. TRAP,軟件中斷和硬件中斷之間的區別?
- 29. 處理硬按鈕vkHardwareBack
- 30. 處理Java中
你需要什麼? – starblue 2009-11-19 19:10:03
如果您不得不問,答案是「否」。 – 2012-06-23 20:14:41