YUKAI / konashi-ios-sdk

konashi iOS SDK
http://konashi.ux-xu.com
Apache License 2.0
89 stars 37 forks source link

I2Cのサンプル #6

Closed okada-tetsuya closed 11 years ago

okada-tetsuya commented 11 years ago

現状のI2Cサンプルはwriteのみを使用しているようですが、readを使うサンプルも あれば助かります。 i2cRestartCondition、i2cReadRequestあたりのタイミング的な配慮など。

monakaz commented 11 years ago

この週末に追加させていただきます。 しばしお待ちください。

monakaz commented 11 years ago

大変遅くなり申し訳ございません。

サンプルにすべての機能をチェックするプロジェクトを追加しました。 この中の CommViewController.m にI2Cの送受信のサンプルが入っています。

https://github.com/YUKAI/konashi-ios-sdk/blob/master/samples/TestAllFunctions/TestAllFunctions/CommViewController.m#L112

I2Cでreadするために、まずイベントハンドラを以下のように登録します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    // I2C系のイベントハンドラ
    [self.i2cSetting addTarget:self action:@selector(onChageI2cSetting:) forControlEvents:UIControlEventValueChanged];
    [Konashi addObserver:self selector:@selector(onI2cRecv) name:KONASHI_EVENT_I2C_READ_COMPLETE];
}

そして、readする場合は i2cRecv の内容を実行します。以下の例では、アドレス0x1Fから18バイトのデータを取得しています。

- (IBAction)i2cRecv:(id)sender {
    [Konashi i2cStartCondition];
    [NSThread sleepForTimeInterval:0.01];
    [Konashi i2cReadRequest:18 address:0x1F];
}

- (void)onI2cRecv
{
    unsigned char data[18];

    [Konashi i2cRead:18 data:data];
    [NSThread sleepForTimeInterval:0.01];
    [Konashi i2cStopCondition];

    int i;
    for(i=0; i<18; i++){
        NSLog(@"I2C Recv data: %d", data[i]);
        self.i2cRecvText.text =
            [self.i2cRecvText.text stringByAppendingString:[NSString stringWithFormat:@"%d ", data[i]]];
    }
}