其實上次的錯誤有兩個原因, 那天躺到床上時, 忽然就想到了 XD
1. 權限問題, 要用 sudo java -Djava.library.path=. JavaDHT 來執行
2. 程式碼問題, 我忘記要先呼叫 bcm2835_init()
其他不多說, 看Code就行了....
2014年4月8日 星期二
2014年4月4日 星期五
JNI 呼叫C, 由C控制 DHT11讀取溫濕度 (未完成版)
今天嘗試使用JNI 呼叫C, 由C控制 DHT11讀取溫濕度的值.
不過遇到一個奇怪的錯誤.
pi@raspberrypi ~/jni $ sudo java -Djava.library.path=. JavaDHT
DEBUG theStr--> Java_JavaDHT_readDHTfromC
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xa8cb239c, pid=2663, tid=3057022064
#
# JRE version: 7.0_21-b11
# Java VM: Java HotSpot(TM) Client VM (23.21-b01 mixed mode linux-arm )
# Problematic frame:
# C [libJavaDHT.so+0x239c] bcm2835_peri_read+0x18
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/pi/jni/hs_err_pid2663.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
這裡有個日本人也有類似問題, 不過夜深了, 明天再來研究好了
http://broadbeans.blog.so-net.ne.jp/2013-08-27
不過遇到一個奇怪的錯誤.
pi@raspberrypi ~/jni $ sudo java -Djava.library.path=. JavaDHT
DEBUG theStr--> Java_JavaDHT_readDHTfromC
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xa8cb239c, pid=2663, tid=3057022064
#
# JRE version: 7.0_21-b11
# Java VM: Java HotSpot(TM) Client VM (23.21-b01 mixed mode linux-arm )
# Problematic frame:
# C [libJavaDHT.so+0x239c] bcm2835_peri_read+0x18
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/pi/jni/hs_err_pid2663.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
這裡有個日本人也有類似問題, 不過夜深了, 明天再來研究好了
http://broadbeans.blog.so-net.ne.jp/2013-08-27
2014年4月3日 星期四
JNI Example
由於許多控制電子元件適合用Native Code來做, 於是關注了JNI 的一些功能. 不可免俗的也做了JNI 版本的 HelloWorld.
1. 首先建立要使用JNI的 JavaCallC.java 檔 以及 要被JNI呼叫的 JavaCallC.c 檔
2. 利用建立好的 JavaCallC.java 產生 JavaCallC.h
javac JavaCallC.java
javah -jni JavaCallC
3. 產生 libJavaCallC.so
gcc -shared -I /opt/java/jdk1.7.0_21/include/ -I /opt/java/jdk1.7.0_21/include/linux/ JavaCallC.c -o libJavaCallC.so
4. 執行
java -Djava.library.path=. JavaCallC
5.結果輸出
Hello world from C Language JavaCallC.c csayhello!
1. 首先建立要使用JNI的 JavaCallC.java 檔 以及 要被JNI呼叫的 JavaCallC.c 檔
2. 利用建立好的 JavaCallC.java 產生 JavaCallC.h
javac JavaCallC.java
javah -jni JavaCallC
3. 產生 libJavaCallC.so
gcc -shared -I /opt/java/jdk1.7.0_21/include/ -I /opt/java/jdk1.7.0_21/include/linux/ JavaCallC.c -o libJavaCallC.so
4. 執行
java -Djava.library.path=. JavaCallC
5.結果輸出
Hello world from C Language JavaCallC.c csayhello!
參考資料
2013年11月12日 星期二
JavaSim
前一陣子使用JavaSim做一些Simulation時候發現, 當一次要重複Simulation時, 基於SimulationProcess 的 thread 會無法釋放,進而導致Server資源的浪費.解決方法是在 finalize 函式中對 mutex 做 notify(). 其實用OpenSource 的Project 要有Debug的能力, 因為通常沒有足夠的文件或是註解可以說明, 不過爬code也是很有趣的...
org.javasim.SimulationProcess.finalize ()
另外每次Simulation調用Scheduler之後要呼叫 Scheduler.reset();才能做第二次的Simulation
2013年4月9日 星期二
Good WEB UI Framework - Vaadin
好久沒有看到讓人興奮的新技術了,趁睡不著的時候,趕快紀錄一下~
今天同事分享了 Vaadin 這個Framework,真的讓我有驚為天人的感覺。其實他的概念和之前接觸到的JSF很像,不過看了原廠和同事的Demo後覺得這個真的是不錯的Framework,開發上使用了之前Java上慣用的Swing開發方式,前台網頁和JavaScript 和 AJAX 的互動全部由後台程式產生, 對開發人員而言真的是很方便。想到之前和CSS還有JQuery 奮戰的過程,不禁讓人覺得相見恨晚阿。不過看起來這樣的架構會不會有讓美工人員不易和程式設計師分工的問題還要深入研究一下, 當然對於中小型專案影響不大。
然後重要的來了~他是採Apache V2 授權的開放原始碼專案,可以有效降低期初的投入成本,商業應用上也比較ok。
其他的部份要看完文件和實做才能深入體驗,看起來文件也蠻豐富的,又有新東西可以研究了,也是美事一樁阿~
https://vaadin.com/comparison 這個比較表很適合快速瀏覽一下他和其他framework的不同。
今天同事分享了 Vaadin 這個Framework,真的讓我有驚為天人的感覺。其實他的概念和之前接觸到的JSF很像,不過看了原廠和同事的Demo後覺得這個真的是不錯的Framework,開發上使用了之前Java上慣用的Swing開發方式,前台網頁和JavaScript 和 AJAX 的互動全部由後台程式產生, 對開發人員而言真的是很方便。想到之前和CSS還有JQuery 奮戰的過程,不禁讓人覺得相見恨晚阿。不過看起來這樣的架構會不會有讓美工人員不易和程式設計師分工的問題還要深入研究一下, 當然對於中小型專案影響不大。
然後重要的來了~他是採Apache V2 授權的開放原始碼專案,可以有效降低期初的投入成本,商業應用上也比較ok。
其他的部份要看完文件和實做才能深入體驗,看起來文件也蠻豐富的,又有新東西可以研究了,也是美事一樁阿~
https://vaadin.com/comparison 這個比較表很適合快速瀏覽一下他和其他framework的不同。
2013年1月25日 星期五
自動化模擬軟體
最近的工作內容接觸到一些生產線的分析,不過目前看起來用靜態分析方式會有蠻大的落差. 使用自動化模擬軟體可能是比較完整的解決方案。
目前業界比較有名的自動化模擬軟體如下:
Enterprise Dynamics,Flexsim,AutoMod,Arena,WITNESS
不過依照本人愛好自由軟體的精神,也找了一套Open Source的相關軟體,目前是德國漢堡大學在維護的.
DESMO-J is an object-oriented framework targeted at programmers developing simulation models. The acronym "DESMO-J" stands for "Discrete-Event Simulation and Modelling in Java". This longer name highlights DESMO-J's two significant properties:
DESMO-J supports the discrete-event simulation paradigm. In models of this type, all system state changes are supposed to happen at discrete points in time. Between such events the system state is assumed to remain constant. Discrete-event simulation is therefore particularly suitable for systems in which relevant changes of state occur suddenly and irregularly, like queueing networks for example.
DESMO-J is implemented in Java. Using this framework to build simulation models ultimately results in writing a Java program.
還有另一套用GPL 授權的 JSL(Java Simulation Library) https://bitbucket.org/rossetti/jsl/overview
真的要玩再來研究一下....
不過簡單的分析可以透過用程式語言的分散式架構配合多執行緒直接Coding, 目前在想有必要作到這個程度嗎...
https://bitbucket.org/rossetti/jsl/overview
目前業界比較有名的自動化模擬軟體如下:
Enterprise Dynamics,Flexsim,AutoMod,Arena,WITNESS
不過依照本人愛好自由軟體的精神,也找了一套Open Source的相關軟體,目前是德國漢堡大學在維護的.
DESMO-J is an object-oriented framework targeted at programmers developing simulation models. The acronym "DESMO-J" stands for "Discrete-Event Simulation and Modelling in Java". This longer name highlights DESMO-J's two significant properties:
DESMO-J supports the discrete-event simulation paradigm. In models of this type, all system state changes are supposed to happen at discrete points in time. Between such events the system state is assumed to remain constant. Discrete-event simulation is therefore particularly suitable for systems in which relevant changes of state occur suddenly and irregularly, like queueing networks for example.
DESMO-J is implemented in Java. Using this framework to build simulation models ultimately results in writing a Java program.
還有另一套用GPL 授權的 JSL(Java Simulation Library) https://bitbucket.org/rossetti/jsl/overview
真的要玩再來研究一下....
不過簡單的分析可以透過用程式語言的分散式架構配合多執行緒直接Coding, 目前在想有必要作到這個程度嗎...
https://bitbucket.org/rossetti/jsl/overview
訂閱:
文章 (Atom)
