JAVAでbcm2835ライブラリを動かしてみた(その3 再挑戦) [Raspberry Pi]
(2013.09.04)
JAVAからBCM2835ライブラリを呼び出すプログラムが動き始めました。
JAVAからラッパー関数(例えばbi_bcm2835_gpio_writeとか)を呼び出すと、関数コードと引数がFIFOに書き込まれ、子プロセスがそれを読み取ってBCM2835ライブラリ関数を呼び出すという仕組みです。
JAVAプログラムと子プロセス間のコンテクスト切替に問題(切替を早くすると動作が乱れる)を抱えていますが、LEDチカチカ程度であれば動きました。
次の課題は、返値の受け取りです。
JAVAからBCM2835ライブラリを呼び出すプログラムが動き始めました。
<JAVAプログラムはこんな感じ> static final byte PIN = bcm2835.RPI_GPIO_P1_11; public static void main(String[] args) { System.setProperty("jna.library.path", "/opt/samba/netbeans_project/bcm_interface/lib"); BCMInterface.INSTANCE.bi_init(args[0]); BCMInterface.INSTANCE.bi_bcm2835_init(); BCMInterface.INSTANCE.bi_bcm2835_gpio_fsel(PIN, bcm2835.BCM2835_GPIO_FSEL_OUTP); for(int i=0; i<10; i++ ) { System.out.print("loop="+i+"\n"); BCMInterface.INSTANCE.bi_bcm2835_gpio_write(PIN, bcm2835.HIGH); BCMInterface.INSTANCE.bi_bcm2835_delay(500); BCMInterface.INSTANCE.bi_bcm2835_gpio_write(PIN, bcm2835.LOW); BCMInterface.INSTANCE.bi_bcm2835_delay(500); } BCMInterface.INSTANCE.bi_bcm2835_close(); BCMInterface.INSTANCE.bi_close(); }
JAVAからラッパー関数(例えばbi_bcm2835_gpio_writeとか)を呼び出すと、関数コードと引数がFIFOに書き込まれ、子プロセスがそれを読み取ってBCM2835ライブラリ関数を呼び出すという仕組みです。
JAVAプログラムと子プロセス間のコンテクスト切替に問題(切替を早くすると動作が乱れる)を抱えていますが、LEDチカチカ程度であれば動きました。
次の課題は、返値の受け取りです。
|
|
|
コメント 0