C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

Android Things

I2Cでスレーブデバイスのレジスタに値を書くには, I2cDeviceクラスを利用する.

レジスタ値のリード

  • I2cActivity.java
    • PeripheralManagerServiceクラスのインスタンスを生成する.
    • PeripheralManagerService#openI2cDeviceメソッドで, デバイスアドレスを指定してI2cDeviceクラスのオブジェクトを取得する.
    • I2cDevice#writeRegByteメソッドで, 指定したアドレスのレジスタに値を書く.
メソッド説明
writeRegByte(int reg, byte data)レジスタに1バイト書く
writeRegWord(int reg, short data)レジスタに2バイト書く
writeRegBuffer(int reg, byte[] buffer, int length)レジスタに指定されたバイト数書く
    • I2cDevice#closeメソッドで, デバイスを解放する.
package com.moonlight_aska.androidthings.i2c;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.google.android.things.pio.I2cDevice;
import com.google.android.things.pio.PeripheralManagerService;
import java.io.IOException;

public class I2cActivity extends Activity {
  private static final String TAG = "I2cActivity";
  private static final String I2C_NAME = "I2C1";
  private static final int I2C_ADDRESS = 0x10;
  private I2cDevice mI2c;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    PeripheralManagerService manager = new PeripheralManagerService();
    try {
      // I2Cデバイスオープン
      mI2c = manager.openI2cDevice(I2C_NAME, I2C_ADDRESS);
      byte[] data = {'I', '2', 'C'};
      for (int i=0; i<3; i++) {
        // レジスタに1バイトライト
        mI2c.writeRegByte(i, data[i]);
      }
    } catch (IOException e) {
      Log.e(TAG, "Error on PeripheralIO API", e);
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();

    if (mI2c != null) {
      try {
        // I2Cデバイスクローズ
        mI2c.close();
      } catch (IOException e) {
        Log.e(TAG, "Error on PeripheralIO API", e);
      } finally {
        mI2c = null;
      }
    }
  }
}



タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます