iOS 藍牙-獲取校驗和,藍牙指令數(shù)據(jù)構(gòu)造示例

獲取校驗和方法

- (Byte)CalCheckSum2:(NSData *)data{
    Byte chksum = 0;
    Byte *byte = (Byte *)[data bytes];
    for (NSUInteger i = 0; i < [data length]; i++){
        chksum += byte[i];
    }
    return chksum;
}

我的需求:指令是13位byte數(shù)組,最后一位是前面十二位的校驗和,第三四位是時間(24小時制)小時和分鐘轉(zhuǎn)換成的byte字節(jié),其他的都是固定的指令。我的構(gòu)造方法是


//防盜器 定時充電指令
- (void)onTimeChargeByBlueWith:(NSString *)timeStr
{
    NSArray *array = [timeStr componentsSeparatedByString:@":"];
    
    Byte onTimeChargeOrder[13] = {0};
    onTimeChargeOrder[0] = 0xB9;
    onTimeChargeOrder[1] = 0x60;
    onTimeChargeOrder[2] = [self getByteWithIntString:array[0]];
    onTimeChargeOrder[3] = [self getByteWithIntString:array[1]];
    onTimeChargeOrder[4] = 0x00;
    onTimeChargeOrder[5] = 0x00;
    onTimeChargeOrder[6] = 0x00;
    onTimeChargeOrder[7] = 0x00;
    onTimeChargeOrder[8] = 0x00;
    onTimeChargeOrder[9] = 0x00;
    onTimeChargeOrder[10] = 0x00;
    onTimeChargeOrder[11] = 0x00;
    onTimeChargeOrder[12] = [self CalCheckSum2:[NSData dataWithBytes:onTimeChargeOrder length:12]];
    
    NSData *data = [NSData dataWithBytes:&onTimeChargeOrder length:sizeof(onTimeChargeOrder)];
    
    NSLog(@"構(gòu)造完的數(shù)據(jù)是 %@",data);
//這里可以拿到data,然后對藍牙的peripheral對象調(diào)用writeValue方法
//    [self.currPeripheral writeValue:data forCharacteristic:self.characteristic type:CBCharacteristicWriteWithResponse];
    
}

#pragma mark-----------工具方法----------------

- (Byte)getByteWithIntString:(NSString *)intString
{
    int hourInt = [intString intValue];
    Byte hourByte[4]  ={0};
    hourByte[0] = (char)(hourInt >>24 & 0xff);
    hourByte[1] = (char)((hourInt >> 16) & 0xff);
    hourByte[2] = (char)((hourInt >> 8) & 0xff);
    hourByte[3] = (char)((hourInt) & 0xff);
    return (char)((hourInt) & 0xff);
}
// 獲取校驗和
- (Byte)CalCheckSum2:(NSData *)data{
    Byte chksum = 0;
    Byte *byte = (Byte *)[data bytes];
    for (NSUInteger i = 0; i < [data length]; i++){
        chksum += byte[i];
    }
    return chksum;
}

最后調(diào)用方法

[self onTimeChargeByBlueWith:@"13:45"];

得到的數(shù)據(jù)為

2017-03-11 11:23:21.211 test0227[92358:2093146] 構(gòu)造完的數(shù)據(jù)是 <b9600d2d 00000000 00000000 53>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,332評論 6 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,638評論 18 399
  • 每年除了清明節(jié)和中元節(jié),十月初一也是祭拜祖先的日子。爺爺說,以前每到這些日子,各家都會召集全家老少,在先人墳...
    白羊先生閱讀 1,226評論 0 1
  • “你說的我無法接受!”鄭伯克說道,“你說人可以沒有煩惱,怎么可能?” 鄭伯克從小學(xué)開始就是我同班同學(xué),一直到高中都...
    原瘋不動閱讀 545評論 1 4

友情鏈接更多精彩內(nèi)容