Getting started!!
現在、mCnはAndroid開発環境に対応しています。
Android
mCnはUSB、シリアルからの入力に対応しています。
そのため、Android studioにUSB Serialのライブラリをインポートする必要があります。
ライブラリは以下のものを使用することをお勧めします。
Github : https://github.com/mik3y/usb-serial-for-android
実装例 : https://github.com/Hizuki1030/mCn-Template
クイックガイド
mCn-templateを利用してオリジナルのアプリを作成してみましょう。
CO2センサーの値を表示してみましょう!!
BaseにModuleをさす
N1にCo2Moduleを差し込みスマートフォンに接続Projectをクローンする、
git clone https://github.com/Hizuki1030/mCn-Template.gitactivity_main.xml
textviewを配置する
id : Co2_View
4.MainActivity.javaを編集する。
70行目:TextView Co2MsgView = findViewById(R.id.Co2_View);
143行目:String Co2 = N1.getString("Co2");
144行目:runOnUiThread(() -> {Co2MsgView.setText(Co2);});
5.ビルド!!
コード解説
USB-serial-for-androidを使用した実装例
Seiral通信では通信速度115200bpsを使用しており、JSONデータ1パケットごとに改行文字を送信しています。
改行文字が送信されるまで、受信した文字列を結合するような処理を記述すれば1パケットを取得できます。
Baseとの接続処理
「UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);」
・USBサービスのマネージャーの作成
「List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);」
・availableDriversに登録されているかつ、接続されているSerialデバイスを取得する
「UsbSerialDriver driver = availableDrivers.get(0);」
・availableDriverに入るデバイスは1つ(Baseだけ)なので1番目のドライバーを選択する
「UsbDeviceConnection connection = manager.openDevice(driver.getDevice());」
・見つかったデバイスに接続する
「mPort = driver.getPorts().get(0);」
・シリアルの1ポート目を取得
「mPort.open(connection);
mPort.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);」
・ポートを開き、通信速度、データー長さ、ストップビットの有無、パリティビットの有無を設定する。
「mPort.setDTR(true);」
・DTR信号をBaseに送ります。
上記のような処理をしてBaseとの通信を確立します。
受信処理
「public void onNewData(byte[] data)」
・シリアルからのデータが受信された時に呼び出されます。
「 String DataString = new String(data);
SerialDataBuffer += DataString;
if(SerialDataBuffer.indexOf("\n") > 0)
{//データ処理}
」
・シリアルから受信したデータをBufferに溜めておき、改行文字を受信したらJSONデータが1パケット受信したと判断します。