求51程序,用IIC把MPU6050的原始数据读出来晶振11.0295,单片机型号STC98C52

求51程序,用IIC把MPU6050的原始数据读出来晶振11.0295,单片机型号STC98C52,第1张

用串口显示的

#include <REG52.H>

#include <math.h> //Keil library

#include <stdio.h> //Keil library

#include <INTRINS.H>

typedef unsigned char uchar

typedef unsigned short ushort

typedef unsigned int uint

//****************************************

// 定义51单片机端口

//****************************************

#define DataPort P0 //LCD1602数据端口

sbitSCL=P1^0 //IIC时钟引脚定义

sbitSDA=P1^1 //IIC数据引脚定义

sbitLCM_RS=P2^0 //LCD1602命令端口

sbitLCM_RW=P2^1 //LCD1602命令端口

sbitLCM_EN=P2^2 //LCD1602命令端口

/含扰档/****************************************

// 定义MPU6050内部地址

//****************************************

#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)

#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)

#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/谈乱s)

#define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)

#define ACCEL_XOUT_H 0x3B

#define ACCEL_XOUT_L 0x3C

#define ACCEL_YOUT_H 0x3D

#define ACCEL_YOUT_L 0x3E

#define ACCEL_ZOUT_H 0x3F

#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H 0x41

#define TEMP_OUT_L 0x42

#define GYRO_XOUT_H 0x43

#define GYRO_XOUT_L 0x44

#define GYRO_YOUT_H 0x45

#define GYRO_YOUT_L 0x46

#define GYRO_ZOUT_H 0x47

#define GYRO_ZOUT_L 0x48

#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)

#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读李隐)

#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取

//****************************************

//定义类型及变量

//****************************************

uchar dis[6] //显示数字(-511至512)的字符数组

int dis_data //变量

//int Temperature,Temp_h,Temp_l //温度及高低位数据

//****************************************

//函数声明

//****************************************

void delay(unsigned int k) //延时

void lcd_printf(uchar *s,int temp_data)

//MPU6050 *** 作函数

void InitMPU6050() //初始化MPU6050

void Delay5us()

void I2C_Start()

void I2C_Stop()

void I2C_SendACK(bit ack)

bit I2C_RecvACK()

void I2C_SendByte(uchar dat)

uchar I2C_RecvByte()

void I2C_ReadPage()

void I2C_WritePage()

void display_ACCEL_x()

void display_ACCEL_y()

void display_ACCEL_z()

uchar Single_ReadI2C(uchar REG_Address) //读取I2C数据

void Single_WriteI2C(uchar REG_Address,uchar REG_data) //向I2C写入数据

//****************************************

//整数转字符串

//****************************************

void lcd_printf(uchar *s,int temp_data)

{

if(temp_data<0)

{

temp_data=-temp_data

*s='-'

}

else *s=' '

*++s =temp_data/10000+0x30

temp_data=temp_data%10000//取余运算

*++s =temp_data/1000+0x30

temp_data=temp_data%1000//取余运算

*++s =temp_data/100+0x30

temp_data=temp_data%100//取余运算

*++s =temp_data/10+0x30

temp_data=temp_data%10 //取余运算

*++s =temp_data+0x30

}

//****************************************

void SeriPushSend(uchar send_data)

{

SBUF=send_data

while(!TI)TI=0

}

//****************************************

//延时

//****************************************

void delay(unsigned int k)

{

unsigned int i,j

for(i=0i<ki++)

{

for(j=0j<121j++)

}

}

//**************************************

//延时5微秒(STC90C52RC@12M)

//不同的工作环境,需要调整此函数

//当改用1T的MCU时,请调整此延时函数

//**************************************

void Delay5us()

{

_nop_()_nop_()_nop_()_nop_()

_nop_()_nop_()_nop_()_nop_()

_nop_()_nop_()_nop_()_nop_()

_nop_()_nop_()_nop_()_nop_()

_nop_()_nop_()_nop_()_nop_()

_nop_()_nop_()_nop_()_nop_()

}

//**************************************

//I2C起始信号

//**************************************

void I2C_Start()

{

SDA = 1 //拉高数据线

SCL = 1 //拉高时钟线

Delay5us()//延时

SDA = 0 //产生下降沿

Delay5us()//延时

SCL = 0 //拉低时钟线

}

//**************************************

//I2C停止信号

//**************************************

void I2C_Stop()

{

SDA = 0 //拉低数据线

SCL = 1 //拉高时钟线

Delay5us()//延时

SDA = 1 //产生上升沿

Delay5us()//延时

}

//**************************************

//I2C发送应答信号

//入口参数:ack (0:ACK 1:NAK)

//**************************************

void I2C_SendACK(bit ack)

{

SDA = ack //写应答信号

SCL = 1 //拉高时钟线

Delay5us()//延时

SCL = 0 //拉低时钟线

Delay5us()//延时

}

//**************************************

//I2C接收应答信号

//**************************************

bit I2C_RecvACK()

{

SCL = 1 //拉高时钟线

Delay5us()//延时

CY = SDA //读应答信号

SCL = 0 //拉低时钟线

Delay5us()//延时

return CY

}

//**************************************

//向I2C总线发送一个字节数据

//**************************************

void I2C_SendByte(uchar dat)

{

uchar i

for (i=0i<8i++) //8位计数器

{

dat <<= 1 //移出数据的最高位

SDA = CY //送数据口

SCL = 1 //拉高时钟线

Delay5us()//延时

SCL = 0 //拉低时钟线

Delay5us()//延时

}

I2C_RecvACK()

}

//**************************************

//从I2C总线接收一个字节数据

//**************************************

uchar I2C_RecvByte()

{

uchar i

uchar dat = 0

SDA = 1 //使能内部上拉,准备读取数据,

for (i=0i<8i++) //8位计数器

{

dat <<= 1

SCL = 1 //拉高时钟线

Delay5us()//延时

dat |= SDA//读数据

SCL = 0 //拉低时钟线

Delay5us()//延时

}

return dat

}

//**************************************

//向I2C设备写入一个字节数据

//**************************************

void Single_WriteI2C(uchar REG_Address,uchar REG_data)

{

I2C_Start() //起始信号

I2C_SendByte(SlaveAddress) //发送设备地址+写信号

I2C_SendByte(REG_Address) //内部寄存器地址,

I2C_SendByte(REG_data) //内部寄存器数据,

I2C_Stop() //发送停止信号

}

//**************************************

//从I2C设备读取一个字节数据

//**************************************

uchar Single_ReadI2C(uchar REG_Address)

{

uchar REG_data

I2C_Start() //起始信号

I2C_SendByte(SlaveAddress) //发送设备地址+写信号

I2C_SendByte(REG_Address)//发送存储单元地址,从0开始

I2C_Start() //起始信号

I2C_SendByte(SlaveAddress+1) //发送设备地址+读信号

REG_data=I2C_RecvByte() //读出寄存器数据

I2C_SendACK(1) //接收应答信号

I2C_Stop() //停止信号

return REG_data

}

//**************************************

//初始化MPU6050

//**************************************

void InitMPU6050()

{

Single_WriteI2C(PWR_MGMT_1, 0x00) //解除休眠状态

Single_WriteI2C(SMPLRT_DIV, 0x07)

Single_WriteI2C(CONFIG, 0x06)

Single_WriteI2C(GYRO_CONFIG, 0x18)

Single_WriteI2C(ACCEL_CONFIG, 0x01)

}

//**************************************

//合成数据

//**************************************

int GetData(uchar REG_Address)

{

uchar H,L

H=Single_ReadI2C(REG_Address)

L=Single_ReadI2C(REG_Address+1)

return (H<<8)+L //合成数据

}

//**************************************

//在1602上显示10位数据

//**************************************

void Display10BitData(int value,uchar x,uchar y)

{ uchar i

// value/=64 //转换为10位数据

lcd_printf(dis, value) //转换数据显示

for(i=0i<6i++)

{

SeriPushSend(dis[i])

}

// DisplayListChar(x,y,dis,4) //启始列,行,显示数组,显示长度

}

//**************************************

//显示温度

//**************************************

//void display_temp()

//{

// Temp_h=Single_ReadI2C(TEMP_OUT_H)//读取温度

// Temp_l=Single_ReadI2C(TEMP_OUT_L)//读取温度

// Temperature=Temp_h<<8|Temp_l//合成温度

// Temperature = 35+ ((double) (Temperature + 13200)) / 280// 计算出温度

// lcd_printf(dis,Temperature)//转换数据显示

// DisplayListChar(11,1,dis,4)//启始列,行,显示数组,显示位数

//}

void init_uart()

{

TMOD=0x21

TH1=0xfd

TL1=0xfd

SCON=0x50

PS=1 //串口中断设为高优先级别

TR0=1 //启动定时器

TR1=1

ET0=1//打开定时器0中断

ES=1

EA=1

}

//*********************************************************

//主程序

//*********************************************************

void main()

{

delay(500) //上电延时

// InitLcd() //液晶初始化

init_uart()

InitMPU6050() //初始化MPU6050

delay(150)

while(1)

{

Display10BitData(GetData(ACCEL_XOUT_H),2,0) //显示X轴加速度

Display10BitData(GetData(ACCEL_YOUT_H),7,0) //显示Y轴加速度

Display10BitData(GetData(ACCEL_ZOUT_H),12,0) //显示Z轴加速度

Display10BitData(GetData(GYRO_XOUT_H),2,1) //显示X轴角速度

Display10BitData(GetData(GYRO_YOUT_H),7,1) //显示Y轴角速度

Display10BitData(GetData(GYRO_ZOUT_H),12,1) //显示Z轴角速度

SeriPushSend(0x0d)

SeriPushSend(0x0a)//换行,回车

delay(100)

}

}

iOS传感器篇:CoreMotion初探

Core Motion

加速计程序,螺旋仪,步数计,环境相关的事件

iOS传感器篇:CoreMotion使用

目录索引

Core Motion报告了来自iOS设备的硬件和环境相关的数据,包括 加速度计 、 陀螺仪 、 计步器 、 磁力计 和 气压计 。你可以使用这个框架来访问硬件生成的数据,这样你就可以在你的应用中使用它。例如,游戏可以使用加速计和陀螺仪数据来控制屏幕上的游戏行为。

这个框架的许多服务允许您访问硬件记录的原始值和这些值的处理版本。处理过的值不包括可能会对如何使用该数据产生负面影响的数据偏移。例如,一个处理过的加速度计值只反映了用户造成的加速度,而不是由重力引起的加速度。

重要提示

在10.0 以后,为了保护用户隐私,必须在info.plist文件增加描述,错误的描述导入或未填写将会引起App崩判神谈溃。参考 NSMotionUsageDescription

需要在info.plist 新增NSMotionUsageDescription(Privacy - Motion Usage Description) 键值对,并进行说明。

这个键值对支持7.0+的版本。

CMMotionManager

启动和管理动作服务的对象。

您使用CMMotionManager对象来访问加速计数据、旋转速率数据、磁力计数据和其他设备运动数据。这些类型的数据来源于一个设备的加速度计和(在一些模型上)它的磁计和陀螺仪。在创建了CMMotionManager的实例之后,应用程序可以使用它来接收四种类型的运动:

原始的加速度计数据

原始的陀螺仪数据

原始的磁力计数据

设备运动数据(包括加速计、旋转速率和属性测量值)。

由核心运动的传感器融合算法提供的处理设备运动数据提供了设备的姿态、旋转速率、校准的磁场、重力方向以及用户在设备上的加速度。

重要提示

应用程序应该只创建CMMotionManager类的一个实例。这个类的多实例可以影响从加速计和陀螺仪接收数据的速率。

在接收运动数据时,应用程序可以采用两种方法中的一种

指定的更新间隔

定期对运动数据进行采样

用这两种方法,应用程序应该调用适当的停止方法

stopAccelerometerUpdates 停止加速计更新

stopGyroUpdates 停止陀螺仪更新

stopMagnetometerUpdates停止磁强计更新

stopDeviceMotionUpdates 停止设备运动更新

完成处理加速度计,转速、磁强计,或者设备运动数据。

处理设备更新掘碰和指定间隔

为了在特定的时间间隔接收移动数据,应用程序调用一个“start”方法,该方法使用一个 *** 作队列(NSOperationQueue实例)和一个特定类型的block处理程序来处理这些更新。移动数据被传递到block处理程序中。更新的频率是由interval属性瞎卜的值决定的。

1. 加速计 Accelerometer

1. 设置accelerometerUpdateInterval属性来指定更新间隔。

2. 调用startAccelerometerUpdatesToQueue:withHandler:方法

3. 加速计数据通过 block 中CMAccelerometerHandler 类型的CMAccelerometerData类获取。

2. 陀螺仪 Gyroscope

设置gyroUpdateInterval属性来指定更新间隔。

2. 调用startGyroUpdatesToQueue:withHandler:方法

陀螺仪数据通过 block 中CMGyroHandler 类型的CMGyroData类获取。

3. 磁强计 Magnetometer

1. 设置magnetometerUpdateInterval属性来指定更新间隔。

2. 调用startMagnetometerUpdatesToQueue:withHandler:方法

3. 加速计数据通过 block 中CMMagnetometerHandler 类型的CMMagnetometerData类获取。

4. 设备动作 Device motion

1. 设置deviceMotionUpdateInterval属性来指定更新间隔。

2. 调用startDeviceMotionUpdatesUsingReferenceFrame:或startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:或 startDeviceMotionUpdatesToQueue:withHandler:方法

3. 加速计数据通过 block 中CMDeviceMotionHandler 类型的CMDeviceMotion类获取。

周期性获取数据

为了通过周期性采样来处理运动数据,该应用程序调用一个“star”方法,不带参数,并周期性地访问给定类型的运动数据所持有的运动数据。这种方法是游戏等应用程序的推荐方法。在一个block块中处理加速计数据会带来额外的开销,大多数游戏应用只对最新的运动数据感兴趣,当它们渲染一个帧时。

1. 加速计 Accelerometer

调用startAccelerometerUpdates开始更新和定期访问CMAccelerometerData类的accelerometerData属性

2. 陀螺仪 Gyroscope

调用startGyroUpdates开始更新和定期访问CMGyroData类的gyroData属性

3. 磁强计 Magnetometer

调用startMagnetometerUpdates开始更新和定期访问CMMagnetometerData类的magnetometerData属性

4. 设备动作 Device motion

调用startDeviceMotionUpdatesUsingReferenceFrame: 或 startDeviceMotionUpdates开始更新和定期访问CMDeviceMotion类的 deviceMotion属性。startDeviceMotionUpdatesUsingReferenceFrame:方法(iOS 5.0中的新特性)允许您指定一个参考帧用于估计的属性。

硬件的可用性和状态

如果硬件特性(例如陀螺仪)在设备上是不可用的,那么调用与该特性相关的启动方法就没有效果。通过检查适当的属性,您可以了解硬件特性是否可用例如,对于陀螺仪数据,您可以检查gyroAvailable或gyroActive属性的值。

确定服务的可用性 【Determining the Availability of Services】

1. deviceMotionAvailable 属性

一个布尔值来表明设备的“设备姿态”服务是否可用

2. accelerometerAvailable 属性

一个布尔值来表明设备的“加速计”服务是否可用

gyroAvailable 属性

一个布尔值来表明设备的“陀螺仪”服务是否可用

magnetometerAvailable 属性

一个布尔值来表明设备的“磁强计”服务是否可用

确定哪些服务是活跃的 【Determining Which Services Are Active】

deviceMotionActive 属性

一个布尔值来表明应用程序是否接收来自“设备姿态”服务的更新。

accelerometerActive 属性

一个布尔值指示是否正在进行“加速计”更新。

gyroActive 属性

一个布尔值用来表明“陀螺仪”更新是否正在进行

magnetometerActive 属性

一个布尔值用来表明“磁强计”更新是否正在进行

管理设备姿态更新 【Managing Device Motion Updates】

1. showsDeviceMovementDisplay

控制设备移动显示是否显示。

deviceMotionUpdateInterval

以秒为间隔,为block块处理程序提供设备移动更新

3. - startDeviceMotionUpdatesUsingReferenceFrame:toQueue:withHandler:

在 *** 作队列上启动设备移动更新,并使用指定的引用帧和block块处理程序

- startDeviceMotionUpdatesToQueue:withHandler:

在 *** 作队列上启动设备移动更新,并使用指定的block块处理程序。

- startDeviceMotionUpdatesUsingReferenceFrame:

使用一个引用框架启动设备移动更新,但是没有block块处理程序。

- startDeviceMotionUpdates

在没有block块处理程序的情况下启动设备移动更新。

- stopDeviceMotionUpdates

停止设备运动更新。

deviceMotion

最新的设备移动数据样本。

管理加速计更新 【Managing Accelerometer Updates】

1. accelerometerUpdateInterval

以秒为间隔,为block块处理程序提供加速计更新。

- startAccelerometerUpdatesToQueue:withHandler:

启动加速计在一个 *** 作队列上的更新和一个指定的处理程序。

- startAccelerometerUpdates

在没有处理程序的情况下启动加速计更新。

- stopAccelerometerUpdates

停止加速表更新。

accelerometerData

最新的加速度计数据样本。

管理陀螺仪更新【Managing Gyroscope Updates】

1. gyroUpdateInterval

以秒为间隔,为block块处理程序提供陀螺仪更新。

- startGyroUpdatesToQueue:withHandler:

启动陀螺仪在一个 *** 作队列上的更新和一个指定的处理程序。

- startGyroUpdates

在没有处理程序的情况下启动陀螺仪更新。

- stopGyroUpdates

停止陀螺仪更新

gyroData

最新的陀螺仪数据样本。

管理磁强计更新【Managing Magnetometer Updates】

1. magnetometerUpdateInterval

以秒为间隔,为block块处理程序提供磁强计更新。

- startMagnetometerUpdatesToQueue:withHandler:

启动磁强计在一个 *** 作队列上的更新和一个指定的处理程序。

- startMagnetometerUpdates

在没有处理程序的情况下启动磁强计更新。

- stopMagnetometerUpdates

停止磁强计更新

magnetometerData

最新的磁强计数据样本。

常量

1. CMAccelerometerHandler

处理回调加速计block数据

CMGyroHandler

处理回调陀螺仪block数据

CMMagnetometerHandler

处理回调磁强计block数据

CMDeviceMotionHandler

处理回调设备姿态block数据

CMErrorDomain

Core Motion 的错误域名

CMError

定义一个管理ColorSync 结果码的类型

CMLogItem

所有设备关联数据类的基类

1. timestamp

日志记录项有效的时间。

Device Motion 【设备姿态】

CMDeviceMotion

封装测量设备的姿态、旋转速率和加速度。

得到处理的设备运动数据

1. attitude

设备属性,包括角度倾斜值等等

2. rotationRate

设备的旋转速率。

3. gravity

重力加速度矢量在设备的参考系.

4. userAcceleration

用户给设备的加速度。

5. magneticField

在设备上返回磁场矢量。

6. heading

相对于当前的参考帧,起始角度(以度数测量)。

7. CMCalibratedMagneticField

校准的磁场数据,并估计校准的准确性。

8. CMMagneticFieldCalibrationAccuracy

指示磁场估计的校准精度

CMAttitude

该设备的朝向,相对于已知的参考帧,在某个时间点上的方位。

Core Motion输出一个方向余弦矩阵(DCM)——基本上是一个从上一个“old”方向到设备新方向的旋转。

1. roll

设备转动的弧度

2. pitch

设备倾斜的弧度

3. yaw

设备偏航的弧度

4. rotationMatrix

返回一个代表设备姿势的旋转矩阵

5. quaternion

返回一个代表设备姿势的四元数

6. - multiplyByInverseOfAttitude:

以一种特定的姿势产生的改变

常量

1. CMRotationMatrix

代表旋转矩阵的结构体类型

2. CMQuaternion

四元组的类型表示一种姿势的测量。

3. CMAttitudeReferenceFrame

用于表示引用的所有姿势示例的引用框架的枚举常量

Accelerometers 【加速计】

为设备的所有三个轴提供加速度计数据。

获得原始加速计事件

CMAccelerometerData

来自该设备的三轴加速计的数据样本。

if([CMSensorRecorderisAccelerometerRecordingAvailable]) {CMSensorRecorder* recorder = [[CMSensorRecorderalloc] init]  [recorder recordAccelerometerForDuration:(20*60)]// Record for 20 minutes}

1.acceleration

加速度有加速计计算得出

常量

1.CMAcceleration

一种包含3轴加速度值的结构类型

CMRecordedAccelerometerData

一个由设备记录的加速度计数据。

1. startDate

当传感器样品被记录时,已经经过的时间

2. identifier

加速计数据唯一的标识符

CMSensorRecorder

从设备中收集和检索加速度计数据。

1. + isAccelerometerRecordingAvailable

返回一个布尔值来表明当前设备加速计是否支持记录。

2. - recordAccelerometerForDuration:

开始指定时间并周期性记录加速计数据

3. - accelerometerDataFromDate:toDate:

检索在指定日期之间收集的加速计数据

4. - accelerometerDataSince:

为同一批处理中的条目检索加速计数据。

5. + authorizationStatus

授权状态

CMSensorDataList

系统记录的加速计数据列表

-(void)processSamplesFromDate:(NSDate*)start toDate:(NSDate)end {CMSensorRecorder* recorder = [[CMSensorRecorderalloc] init]CMSensorDataList* list = [recorder accelerometerDataFrom:start to:end]for(CMRecordedAccelerometerData* datainlist) {// Process the data.NSLog(@"Sample: (%f, %f, %f)", data.acceleration.x,              data.acceleration.y, data.acceleration.z)  }}

Gyroscopes

原始的陀螺仪数据。

获得原始陀螺仪数据事件

CMGyroData

一种测量设备转速的方法。

1. rotationRate

由设备陀螺仪测量的旋转速率。

常量

1.CMRotationRate

由设备陀螺仪测量的旋转速率的结构体类型

Pedometer

提供来自内置的处理器来获取计步数据

CMPedometer

一个取得系统生成实时行走数据

1. + isStepCountingAvailable

返回一个布尔值,指示在当前设备上是否可以使用计步计数。

2. + isDistanceAvailable

返回一个布尔值,指示在当前设备上是否可以使用距离估算。

3. + isFloorCountingAvailable

返回一个布尔值,指示当前设备上是否可以使用楼层计数。

4. + isPaceAvailable

返回一个布尔值,该值指示当前设备上是否可速度信息。

5. + isCadenceAvailable

返回一个布尔值,指示当前设备上是否有可用的步调信息

6. + isPedometerEventTrackingAvailable

返回一个布尔值,指示是否计步器事件是当前设备上可用。

7. - startPedometerUpdatesFromDate:withHandler:

将最近与行人相关的数据发送到你的应用

8. - stopPedometerUpdates

停止向你的应用发送最近的步行数据更新。

9. -startPedometerEventUpdatesWithHandler:

开始向你的应用程序发送计步器事件。

10. -stopPedometerEventUpdates

停止向你的应用程序提交计步器事件

11. -queryPedometerDataFromDate:toDate:withHandler:

查询在指定时间段的数据

12. CMPedometerHandler

处理计步器关联数据的block

13. CMPedometerEventHandler

处理计步器事件的block

14. + authorizationStatus

授权状态

CMPedometerData

关于用户步行的距离的信息。

1. startDate

计步器开始时间

2. endDate

计步器结束时间

3. numberOfSteps

用户所采取的步数

4. distance

用户移动的估计的距离(米)

5. averageActivePace

用户的平均速度,以秒为单位。

6. currentPace

用户的当前速度,以秒为单位。

7. currentCadence

用户当前的步调频率,以秒为单位

8. floorsAscended

步行的楼层大概有几层楼 升序。

9. floorsDescended

步行的楼层大概有几层楼 降序。

CMPedometerEvent

用户的步行活动发生了变化。

1. date

记录计步器事件的日期。

2. type

发生的变化类型。

常量

1. CMPedometerEventType

显示用户的步行活动发生的变化的常量。

Magnetometer

提供定向数据和原始磁量数据。

CMMagnetometerData

测量地球磁场相对于设备的尺寸。

1. magneticField

返回磁力仪测量的磁场。

2. CMMagneticField

包含3轴磁力仪的结构

Altitude

提供基于气压传感器信息的高度数据。

CMAltimeter

一个初始化与高海拔相关的变化的对象。

1. + isRelativeAltitudeAvailable

返回一个布尔值,指示当前设备是否支持生成相对高度变化的数据。

2. - startRelativeAltitudeUpdatesToQueue:withHandler:

开始向指定的处理程序块发送高度数据。

3. - stopRelativeAltitudeUpdates

停止对高度计对象的高度数据传输

4. + authorizationStatus

授权状态

常量

1. CMAltitudeHandler

接收高度计数据的block

CMAltitudeData

记录海拔高度变化的数据。

1.relativeAltitude

自上次报告事件以来,海拔(米)的变化。

2. pressure

有记录的压力值(千帕 hpa)

Historical Data

提供记录的运动事件来帮助你分析运动模式。

CMMotionActivityManager

用来管理设备存储的运动数据的对象。

1. + isActivityAvailable

返回一个布尔值,指示当前设备上是否可用移动数据。

2. - startActivityUpdatesToQueue:withHandler:

启动当前移动数据更新到你的应用程序。

3. - stopActivityUpdates

停止向你的应用发送动态更新

4. - queryActivityStartingFromDate:toDate:toQueue:withHandler:

收集并返回指定时间段的历史运动数据

5. + authorizationStatus

授权状态

常量

1. CMMotionActivityHandler

一个能报告与设备相关的当前运动的block

2. CMMotionActivityQueryHandler

它报告在指定的查询间隔之间发生的动作更新的block

CMMotionActivity

单个动作更新事件的数据。

1. stationary

一个布尔指示设备是否是静止的。

2. walking

一个布尔指示设备是否在行走。

3. running

一个布尔指示设备是否在一个正在奔跑。

4. automotive

一个布尔指示设备是否在汽车中。

5. cycling

一个布尔指示设备是否在骑自行车

6. unknown

一个布尔指示设备不知道的类型

7. startDate

动作发生的开始时间

confidence

对运动类型的评估的信任

常量

1. CMMotionActivityConfidence

运动数据是准确常量


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12363645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存