Konashiに関する過去の投稿です。

続・バイク好き!セロリ嫌い!

KonashiはBluetooth LEに準拠したモジュールなので当然のようにiOSのCoreBluetoothフレームワークを利用してプログラムを作成することができます。
「車輪を発明する」という言葉がありますが、すでにKonashiを利用するためのフレームワーク(konashi-ios-sdk)があるのでこれをやる意味をあまり感じませんが、仕組みを知るということは大事ですのでやってみました。

以下のコードはKonashiを探し、接続を確立し、デバイス情報とバッテリーレベルを読み取るものです。
CBCentralManagerの起動する、Konashiを探す、Konashiに接続する、Konashiのサービスを全て表示する、利用するサービスを特定する、利用するサービスの機能(Characteristic)を全て表示する、利用するサービスの機能を特定して値を読み出す、と1ステップずつ機能を確認しながらここに辿り着きました。

ViewController.h

#import <UIKit/UIKit.h>

@import CoreBluetooth;

#define KONASHI_DEVICE_INFO_SERVICE_UUID @"180A"
#define KONASHI_BATTERY_SERVICE_UUID @"180F"

#define KONASHI_MANUFACTURER_NAME_UUID @"2A29"
#define KONASHI_FIRMWARE_REVISION_UUID @"2A26"
#define KONASHI_HARDWARE_REVISION_UUID @"2A27"
#define KONASHI_SOFTWARE_REVISION_UUID @"2A28"
#define KONASHI_BATTERY_LEVEL_UUID @"2A19"

@interface ViewController : UIViewController <CBCentralManagerDelegate, 
    CBPeripheralDelegate>

@property (nonatomic, strong) CBCentralManager *centralManager;
@property (nonatomic, strong) CBPeripheral *peripheral;

@property (nonatomic, strong) NSString *connected;
@property (nonatomic, strong) NSString *manufacturer;
@property (nonatomic, strong) NSString *firmwareRevision;
@property (nonatomic, strong) NSString *hardwareRevision;
@property (nonatomic, strong) NSString *softwareRevision;
@property (nonatomic, strong) NSString *batteryLevel;

@property (nonatomic, weak) IBOutlet UILabel *connectedField;
@property (nonatomic, weak) IBOutlet UILabel *manufacturerField;
@property (nonatomic, weak) IBOutlet UILabel *firmwareRevisionField;
@property (nonatomic, weak) IBOutlet UILabel *hardwareRevisionField;
@property (nonatomic, weak) IBOutlet UILabel *softwareRevisionField;
@property (nonatomic, weak) IBOutlet UILabel *batteryLevelField;

@end

ViewController.m

#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self.connectedField setText:@""]; [self.manufacturerField setText:@""]; [self.firmwareRevisionField setText:@""]; [self.hardwareRevisionField setText:@""]; [self.softwareRevisionField setText:@""]; [self.batteryLevelField setText:@""]; CBCentralManager *centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()]; self.centralManager = centralManager…

元の投稿を表示 さらに324語