美文网首页
iOS 蓝牙-获取校验和,蓝牙指令数据构造示例

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

作者: 春鹏 | 来源:发表于2017-03-11 11:29 被阅读0次

获取校验和方法

- (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>

相关文章

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

    获取校验和方法 我的需求:指令是13位byte数组,最后一位是前面十二位的校验和,第三四位是时间(24小时制)小时...

  • iOS 蓝牙-获取校验和

    获取校验和方法 -(Byte)CalCheckSum2:(NSData*)data{ Byte chksum=0;...

  • 蓝牙4.0 测试与数据的存储(SQLite)

    在之前的篇章 iOS之蓝牙4.0 BLE相关 中已经讲到了蓝牙的基本工作原理和获取数据,今天的篇章中将着重进行...

  • 蓝牙的坑

    一、iOS11蓝牙打开后获取到的蓝牙状态是蓝牙关闭(CBCentralManagerStatePoweredOff...

  • CoreBluetooth

    iOS-BLE蓝牙开发持续更新 - 简书 蓝牙打印小票 一个第三方 IOS BLE4.0蓝牙和外设连接和收发数据的...

  • iOS蓝牙开发(一)蓝牙相关基础知识

    iOS蓝牙开发一 iOS蓝牙开发(一)蓝牙相关基础知识 蓝牙常见名称和缩写 MFI ======= make fo...

  • BluetoothKit源码解读

    官方文档-经典蓝牙官方示例-经典蓝牙 官方文档-蓝牙低功耗官方示例-蓝牙低功耗 BluetoothKit 本库地址...

  • iOS蓝牙开发

    iOS蓝牙开发有三个框架 蓝牙开发有两种模式:1.手机作为中心设备,获取外设的数据2.手机作为外设,对外提供数据(...

  • iOS如何在PC端查看本地数据库的数据

    这个小知识的背景是我们老大要求iOS项目要有本地数据库,项目是蓝牙类项目,通过蓝牙传输获取外设设备上的数据到手机,...

  • 我的第一个硬件联调app 资料

    iOS蓝牙中的进制转换,数据格式转换 最近在忙一个蓝牙项目,在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理...

网友评论

      本文标题:iOS 蓝牙-获取校验和,蓝牙指令数据构造示例

      本文链接:https://www.haomeiwen.com/subject/qvyagttx.html