ios获取蓝牙串口数据

最近在项目中连接蓝牙设备,发现读取到的数据是这种格式

这些数据是空间位置坐标,也就是想x,y,z轴的数据,根据所给文档,A0 A0 0C是数据头,AE AE是数据尾,也就是中间的12个数字是想要的部分,我们可以在-(void) peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error这个方法中读取到数据,但是怎么才能分别得到x,y,z轴的数据呢?

1.首先是截取中间部分的字符串

//切割字符串

NSRange startRange = [hexValue rangeOfString:@"0C "];

NSRange endRange = [hexValue rangeOfString:@" AE"];

NSRange range = NSMakeRange(startRange.location + startRange.length, endRange.location - startRange.location - startRange.length);

NSString *result = [hexValue substringWithRange:range];

2.将16进制的字符串转化为NSNumber类型

NSMutableArray *coordinateArr = [NSMutableArray array];

NSArray *array = [result componentsSeparatedByString:@" "]; //从字符A中分隔成2个元素的数组

for (NSString *str in array) {

NSString *newStr = [NSString stringWithFormat:@"0x%@",str];

unsigned long red = strtoul([newStr UTF8String],0,16);

NSNumber *number = [NSNumber numberWithLong:red];

[coordinateArr addObject:number];

}

3.判断自己这端是什么模式(分为大端模式和小端模式),这个是c的方法判断的

short int a = 0x1122;//十六进制,一个数值占4位

char b =  *(char *)&a;  //通过将short(2字节)强制类型转换成char单字节,b指向a的起始字节(低字节)

if( b == 0x11)//低字节存的是数据的高字节数据

{

NSLog(@"是大端模式");

}

else

{

NSLog(@"是小端模式");

}

4.再根据union联合体去获取到坐标轴数据:

union {

float a;

char b[4];

}packet;

float position[3];

for(int i = 0; i < 3; i++)//此段是小端模式,若为大端,则数组顺序恰好相反

{

packet.b[0]=arr[4*i ;

packet.b[1]=arr[4*i+1];

packet.b[2]=arr[4*i+2];

packet.b[3]=arr[4*i+3] ;

position[i]=packet.a;

}

则position[0]),position[1]),position[2])分别就是x,y,z的数据了

最后附上截图,希望能帮到小伙伴


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

相关阅读更多精彩内容

  • 接下来我们看base文件下的Foundation文件夹下文件 Base - Foundation 这个文件夹里面的...
    充满活力的早晨阅读 6,572评论 0 1
  • 一、 框架: 系统或者第三方事先写好的写很牛X功能的类,把这些类交给我们使用,这些类的集合就叫框架.Foundat...
    _凌浩雨阅读 2,656评论 0 1
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,755评论 0 6
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,130评论 0 35
  • 我是一个奇怪的人。因为我有时候看书不看内容就买,只看书名。 医学的发达算一个人能活到近百年。所以我突然爱上了百年孤...
    蔓沙珠华阅读 2,615评论 1 1

友情链接更多精彩内容