2021年10月5日火曜日

Androidアプリでのタイミング調査

 Androidアプリを開発する際、タイミングが気になるときありませんか?
このAPIは本当に10mS周期で呼ばれているのだろうか・・など。

マイコンなら空いたIOポートにHIGH/LOW出力を組み込み、オシロスコープで確認すれば簡単。ではAndroidでは ・・ ???


Raspberry PI4でAndroid11が動くというOmniROMの存在を知りました。

このような方たちが試してくれています。

 https://paiza.hatenablog.com/entry/2020/11/25/150000


ラズパイ上でAndroidが動くなら、ラズパイ上のGPIOが使えるじゃないか!
でもAndroidアプリ(Java)でラズパイのGPIOを動かせるのか??

私はCでGPIO制御を作り、JNIを使ってJavaから呼び出すことで、JavaアプリでAPI呼び出しタイミングをオシロスコープで確認することに成功しました。

以下のコードをAndroidプロジェクト内のJNIに追加します。

(JavaからのJNI呼び出しは各自設定してください)。


またAndroidのJavaプログラムから下記関数をJNI経由で呼び出すことで、ラズパイのGPIOが動くのです。
Androidアプリを構築される方はオシロを使ってタイミングを確認したりしないのかな?

ミリ秒周期の動作確認する場合、GPIO端子をHigh/Low切り替えてオシロで見るほうが確実ですよ(こんなことしたいなんて思ったことないですか??)。


※ gpiod.hは libgpiodのものを呼び出します。

// ======================================
//          GPIO
// ======================================
#include "gpiod.h"
const char *chipname = "gpiochip0";
struct gpiod_chip *chip;
struct gpiod_line *line20;
struct gpiod_line *line21;
void    OpenGpio( void )
{
    // open GPIO chip
    chip = gpiod_chip_open_by_name(chipname);

    // open GPIO Lines
    line20 = gpiod_chip_get_line( chip, 20 );
    line21 = gpiod_chip_get_line( chip, 21 );

    // Open GPIO Lines for Output
    gpiod_line_request_output(line20, "example1", 0 );
    gpiod_line_request_output(line21, "example1", 0 );
}
int     gpioOut20Dat = 0;
void    SetGpio20( int val )
{
    gpioOut20Dat = val;
    gpiod_line_set_value( line20, gpioOut20Dat );
}


 

経歴について

先日ふっと経歴の資料を更新する必要があったので、ひさしぶりに見直してみた。

進化してないなと思いつつ、いろんな案件に関わりながら比較的新しい開発項目にも

参加させていただいていることに感謝あるのみ。 

 
Windows / Linux / Android / RaspberryPi
マイコン基板、Arduino基板

CAN / I2C  / LAN / Wifi / Bluetooth

 ・・ 一通り何でも開発対応します。


経歴追加
1995年9月有限会社マックスポート創業
     :
2009年4月Real Time Linux マルチコア対応モジュール開発
2008年4月Real Time Linux用PCIボードドライバ開発、V850POD開発など
2010年4月Virtual システム計測機用PCIボードデバイスドライバ開発
2011年4月車両モニタシステム北京モーターショーデモ用システム開発
2011年4月心拍オンライン計測システム開発
2012年4月CAN連動車両周辺映像録画/再生システム開発(Windows)
2013年4月CAN-RS232Cデータ変換アプリケーション開発(Windows)
2013年4月車両情報サーバーアップロード用デモ装置開発
2013年4月Forum8連動トヨタ展示用車両制御システム構築
2014年4月車両データ収集装置GPS対応版開発、車両データ解析ツール開発
2014年4月~現在視線検知対応車両制御システム
2015年4月Forum8対応車両運行デモシステム開発
2016年4月ドライブシミュレータ、Forum8/CANデータ連動対応
2016年4月HD映像キャプチャCAN送受信連動ロギングシステム開発
2017年4月車両データシミュレーションWindowsシステム開発
2018年4月ドライブレコーダ評価装置用SDカード読み出しシステム開発
2018年4月音声周波数解析ライブラリ開発
2017年4月船舶用CAN変換BOX、船舶用簡易ナビシステム開発
2017年4月トルクレンチ締め付け値無線ロギング/結果収集システム構築
2018年4月静電容量自動計測システム(無線データ収集&ロギング)開発
2018年4月無線機&Bluetooth通信システム開発
2017年4月スマート体温計システム開発
2019年4月発電センサーモジュール用データ収集システム開発
2019年4月CAN Gateway装置開発
2020年4月各種センサー情報無線データ収集システム構築
2020年4月AndroidスマホUSB接続デジタルFMラジオ装置開発
2020年4月船舶用CANドライバ構築
2020年4月LORA無線機用リモコンユニット開発
2021年4月ミライパネルPLC装置プログラム構築
2021年4月CO2センサーデータ収集&Androidスマホ表示&ロギング装置開発