私はBLEデバイスに送信する必要がある4つの異なるint値を持っています(接続はOKです)。BLEデバイスにintデータを送信する
わかりやすくするために、int値A、B、C、Dを呼び出します。 AおよびBは0〜100の範囲であり、Cは0〜2000の範囲であり、Dは0〜10000の範囲である。すべての値はユーザーの入力によって決まります。
これらの4つの値をBLEデバイスにすばやく送信し、AとB(8ビット)、C(16ビット)、D(32ビット)のそれぞれを別々にパッケージ化する必要があります。値を正しくパッケージ化する方法は不明です。
私は様々な成功度で試した3つの方法を以下に示します。
intをデータに変換して送信します。 A(8ビット)int:
const unsigned char CHR = (float)A; float size = sizeof(CHR); NSData * aData = [NSData dataWithBytes:&CHR length:size]; [p writeValue:aData forCharacteristic:aCHAR type:CBCharacteristicWriteWithResponse];
文字列に最初に変換します。 (16ビット)C:
NSString * cString = [NSString stringWithFormat:@"%i",C]; NSData * cData = [cString dataUsingEncoding:NSUTF16StringEncoding]; [p writeValue:cData forCharacteristic:cCHAR type:CBCharacteristicWriteWithResponse];
以下のための(32ビット)D INT:
uint32_t val = D;
float size = sizeof(val);
NSData * dData = [NSData dataWithBytes:(void*)&val length:size];
[p writeValue:valData forCharacteristic:dCHAR type:CBCharacteristicWriteWithResponse];
私が上記で間違って何をやっているし、どのように最適なデバイスにint型の値を変換して送信するには、必要な3つのフォーマットを可能に?あなたがお使いのデバイスが期待する形式について少しより多くの情報を知っておく必要があり