SSブログ

JAVAでbcm2835ライブラリを動かしてみた(その3 再挑戦) [Raspberry Pi]

(2013.09.04)
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チカチカ程度であれば動きました。

次の課題は、返値の受け取りです。

にほんブログ村 IT技術ブログへ
にほんブログ村 ネットブログ コミュニティサイトへ
にほんブログ村 IT技術ブログ オープンソースへ

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。