美文网首页
ios获取蓝牙串口数据

ios获取蓝牙串口数据

作者: plu | 来源:发表于2016-12-28 14:47 被阅读350次

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

这些数据是空间位置坐标,也就是想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的数据了

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

相关文章

  • ios获取蓝牙串口数据

    最近在项目中连接蓝牙设备,发现读取到的数据是这种格式 这些数据是空间位置坐标,也就是想x,y,z轴的数据,根据所给...

  • iOS蓝牙开发

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

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

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

  • 蓝牙串口助手使用方法

    一、基本介绍 1、简介 蓝牙串口助手是一款基于RFCOMM蓝牙串口服务的传输软件,通过该软件可以连接蓝牙串口模块进...

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

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

  • 蓝牙的坑

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

  • Unity 集成蓝牙插件教程

    一.硬件测试环境 可将蓝牙模块 通过USB串口模块联接到windows上的串口助手. 这样串口助手可以通过蓝牙模块...

  • 蓝牙

    [https://github.com/yuhanle/WEBlueToothManager]蓝牙 iOS如何获取...

  • 监控本地电脑串口数据(CommMonitor)

    获取本地电脑串口数据 1、工具:CommMonitor(串口监视精灵)下载地址:http://www.pc0359...

  • 2018-08-31 uart通信

    usart通信 第一步 串口通行设置 中断服务函数 最终实现功能: 是在串口助手上获取数据打印数据。

网友评论

      本文标题:ios获取蓝牙串口数据

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