サンプル
PixiModule
ターミナルアプリ(iOS 版)
ソース説明書
発行2016年6月1日 1.0 株式会社ヌマタR&D
サンプル
1. 目次
2. iOS 版ご利用の前に ... 3 3. ソースファイル内の用語の説明 ... 4 4. ソースファイルの構成 ... 7 5. Main.storyboard の説明 ... 6. ViewController.h の説明 ... 7. ViewController.m の説明 ... 8. その他 ...サンプル
2. iOS 版ご利用の前に
開発環境について
PixiModule ターミナルアプリ(iOS 版)のソースファイルの編集は
Apple 社が無償で配布している Mac OS X 向けの統合開発環境 Xcode をご利用ください。
Xcode (最新 ver7.3.1)
Xcode は Mac OS X 向けの App Store からインストールできます。 Mac の App Store を開いて「Xcode」で検索、
もしくは Xcode の公式ページ(https://developer.apple.com/xcode/download/)から App Store へのリンクをクリックしてください
サンプル
3. ソースファイル内の用語の説明
タブレット(スマホ)で作動する PixiModule ターミナルアプリはBluetooth Low Energyとい う無線通信規格を用いて PixiModule UART と通信しデータの送受信を行います。
Bluetooth Low Energy (Bluetooth LE)
Bluetooth4.0 で追加された省電力性を重視した通信規格です。 iPhone・iPad、Android、一部 PC 端末で利用できます。
Bluetooth デバイス
Bluetooth LE に対応した機器という意で記述しています。 ソースではアプリの通信対象(PixiModule UART)を指します。デバイス名(デバイスネーム)
Bluetooth デバイス自身が持っている名前です。(PixiModule は「NMTRD_080-1-○○○○」) アプリは、周囲のデバイスを検索し、見つかったデバイス名を見て接続するか判定しています。 ただし、そのこれはデバイス固有というわけではなく、同一の物も製造時に作ることができます。サービス
Bluetooth LE の通信規定 GATT(Generic Attribute)で定められている Bluetooth デバイスの機能 の総称です。例えば心拍計データを提供するサービス「Heart Rate」や、バッテリー残量を知ら せるサービス「Battery Service」は標準のサービスとして定義されています。
PixiModule はデータの送受信をするための独自のサービスを定義しています。
サービスは UUID と呼ばれる16進数で表現する数字が割り当てられます。(一種の名前) PixiMoule UART には「送受信するサービス」があり、 その送受信サービスの UUID として FF00 を割り当てています。
サンプル
キャラクタリスティック
サービスに紐づけされている属性(値や手段)で、複数以上のこともあります。 キャラクタリスティックは「値」と、値の操作方法の「プロパティ」で構成されます。 *高級言語などでは、操作方法をメソッドともいいますが、BluetoothLE ではプロパティといいます。 PixiModule UART はデータの送受信をするサービスの中に、データの読み込み用のキャラクタリ スティック(Read)、書き込み用のキャラクタリスティック(Write)を持っています。 また、サービスと同じくキャラクタリスティックにも各々固有の UUID(番号で書かれた名前)が 割り付けられており、PixiModule UART の場合、データの読込 Read は FF01、データの送信 Write は FF02 です。(サービスとキャラクタリスティックの関係)
データの送受信用サービス(UUID : FF00) キャラクタリスティック(Read)(UUID:FF01) 読み込みデータを取得することができる キャラクタリスティック(Write)(UUID:FF02) 送信するデータを書き込むと送信される キャラクタリスティック(Notify)(UUID:FF01) Read 値が更新された時に、タブレットに通知するかどうかの設定 初期は Notify Off(通知しない)サンプル
以上の PixiModule にあるサービス・キャラクタリスティックに、BluetoothLE を通してアクセス することで
アプリは PixiModule UART とデータの送受をします。
CoreBluetooth Framework
iOS で Bluetooth 通信をするアプリを作成するために Apple 社が提供しているフレームワークで す。本ターミナルアプリも、このフレームワークを利用して PixiModule と通信します。
Central(セントラル)・Peripheral (ペリフェラル)
CoreBluetooth Framework に出てくる Bluetooth 通信の役割の名称です。
Central は接続する側(iPhone/iPad)、Peripheral は接続される側 (PixiModule) のことです。
アドバタイズデータ (advertisement data)
接続前の Peripheral が発信する、Peripheral 自身の情報です。CoreBluetooth Framework ではアドバタイズデータから、接続前の Peripheral のデバイス名や サービスの UUID 等を取得することができます。
RSSI (Received Signal Strength Indication)
Bluetooth デバイスから受信した電波の強度(単位:dBm)のことです。値が大きい(プラスに近い)程、受信した電波が強い=近くにあることが分かります。
なお CoreBluetooth Framework の仕様で有効な RSSI を取得できない時は値が 127 で通知され ます。
サンプル
4. ソースファイルの構成
PixiModule ターミナルアプリ(iOS 版)のソースファイルは、以下のように構成されています。 本書はアプリ画面のレイアウトを定義するファイル (Main.storyboard)と、機能を定義するクラ スファイル (ViewController.h・ViewController.m) について説明します。 PixiModule_iOSApp (ソース全体のフォルダ) |―――PixiModuleTerminal.xcodeproj (Xcode のプロジェクトファイル) |―――PixiModuleTerminal (メインクラスのフォルダ) |―――①Main.storyboard |―――②ViewController.h |―――③ViewController.m |―――…その他ファイル ① Main.storyboard アプリ画面のレイアウトを定義するファイルです。 IBOutlet と呼ばれるボタンやラベル等の UI を配置します。 ② ViewController.h メイン処理のクラス(③ViewController.m)のヘッダーファイルです。 フレームワークやソースの変数を宣言します。 ③ ViewController.m 本ターミナルアプリのメイン処理のクラスファイルです。 Bluetooth の通信を含む、ターミナル操作の全ての処理を定義しています。サンプル
ViewController.m は本ターミナルアプリのメイン処理のクラスファイルです。 Bluetooth の通信を含む、ターミナル操作の全ての処理を定義しています。 カスタム化することでさらに種々の作動・表現が可能です。 ここではアプリ起動からの処理フローと該当するソース部分について説明します。 【フロー① アプリ起動~PixiModule の検索開始】027 行 manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 097 行 100 行 -(void)centralManagerDidUpdateState: (CBCentralManager *)central { … switch (central.state) { case CBCentralManagerStatePoweredOn: Bluetooth デバイスの検索開始 (次ページ) break CBCentralManager を起動して Bluetooth 通信を実行する準備をします。 CBCentralManager の状態通知関数 centralManagerDidUpdateState が 呼ばれるので状態が有効か判定します。(状態が無効の時は有効になるまで 待機します) CentralManager の状態判定 アプリ起動 CBCentralManager の起動 YES NO central.state が CBCentralManager StatePoweredOn になれば有効状態 次ページへ