iOS 蓝牙-获取校验和,蓝牙指令数据构造示例

获取校验和方法

- (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数组,最后一位是前面十二位的校验和,第三四位是时间(24小时制)小时和分钟转换成的byte字节,其他的都是固定的指令。我的构造方法是


//防盗器 定时充电指令
- (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(@"构造完的数据是 %@",data);
//这里可以拿到data,然后对蓝牙的peripheral对象调用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;
}

最后调用方法

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

得到的数据为

2017-03-11 11:23:21.211 test0227[92358:2093146] 构造完的数据是 <b9600d2d 00000000 00000000 53>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,094评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,768评论 18 399
  • 每年除了清明节和中元节,十月初一也是祭拜祖先的日子。爷爷说,以前每到这些日子,各家都会召集全家老少,在先人坟...
    白羊先生阅读 4,871评论 0 1
  • “你说的我无法接受!”郑伯克说道,“你说人可以没有烦恼,怎么可能?” 郑伯克从小学开始就是我同班同学,一直到高中都...
    原疯不动阅读 3,449评论 1 4

友情链接更多精彩内容