我想知道是否有可能在引發硬件中斷時自動調用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. 瞭解處理器和硬件級別的硬件中斷和異常
- 2. 如何處理JNI,硬件中斷在cocos2dx中
- 3. 處理中斷:
- 4. 處理中訪問硬件信息
- 5. 硬件中斷列表
- 6. 哪個處理器會在多核系統中執行硬件中斷
- 7. 最佳實踐:處理代表它們的類中的硬件斷開連接
- 8. 中斷處理Linux和待處理中斷
- 9. Java中的事件處理
- 10. java中的文件處理
- 11. Java中的事件處理與C#中的事件處理
- 12. 文件處理Java
- 13. 信號,軟件中斷和硬件中斷之間的區別?
- 14. 處理Java中
- 15. SMP如何處理中斷?
- 16. 在TestNG中處理斷言
- 17. STM32 HAL SPI中斷處理
- 18. Perl處理鍵盤中斷
- 19. 在中斷處理程序
- 20. 異常處理不中斷
- 21. 處理音頻中斷AVAudioPlayer
- 22. Linux內核硬件斷點
- 23. 設置硬件斷點
- 24. 單聲道+硬件中斷/信號
- 25. 使用處理庫 - 在處理草圖中的Java文件中?
- 26. 如何知道中斷是硬件中斷還是CPU異常
- 27. 什麼硬件中斷實際上是中斷?
- 28. 如何硬編碼在批處理文件中的密碼
- 29. 如何在ExEn中處理Android硬件後退?
- 30. java swing jtextfiled事件處理
你需要什麼? – starblue 2009-11-19 19:10:03
如果您不得不問,答案是「否」。 – 2012-06-23 20:14:41