2016-07-31 4 views
0

私は3軸磁場、3軸加速度と3軸の回転速度をサンプリングする必要があるので、私はDeviceMotionを使用して、ここに私のコードは次のとおりです。なぜmagneticField.fieldの値がゼロに固定されていますか?

if manager.deviceMotionAvailable { 
     if manager.magnetometerAvailable { 
     manager.magnetometerUpdateInterval=0.01 
     manager.deviceMotionUpdateInterval = 0.01 
      manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: {(data: CMDeviceMotion?, error: NSError?) -> Void in 
     if(standard_time) { 
     let data = [ 
        "ax":data!.userAcceleration.x,"ay":data!.userAcceleration.y,"az":data!.userAcceleration.z,      
        "gax":data!.gravity.x,"gay":data!.gravity.y,"gaz":data!.gravity.z, 
        "gx":data!.rotationRate.x,"gy":data!.rotationRate.y,"gz":data!.rotationRate.z, 
        "mmx":data!.magneticField.field.x,"mmy":data!.magneticField.field.y,"mmz":data!.magneticField.field.z, 
        "roll":data!.attitude.roll, "pitch":data!.attitude.pitch, "yaw":data!.attitude.yaw] 
       } 
       )} 
    } 
} 

しかし、3-値私が得た軸の磁場はゼロに固定されています。手伝っていただけませんか ???

+0

私は同時に3軸加速度及び3軸の回転速度を必要とするので、私は、そのサンプル時間そのdifferent.In事実ので、私はdeviceMotionUpdateIntervalと同じmagnetometerUpdateIntervalを設定するが、もしstartDeviceMotionUpdatesToQueueとstartMagnetometerUpdatesToQueueを使用することはできません私はstartDeviceMotionUpdatesToQueueとstartMagnetometerUpdatesToQueueを使用します。サンプル時間は異なりますが、サンプル番号は –

答えて

1

磁力計のデータを取得する方法が間違っているようです。

if manager.deviceMotionAvailable { 
     if manager.magnetometerAvailable { 
      manager.magnetometerUpdateInterval = 0.01 
      manager.deviceMotionUpdateInterval = 0.01 
      manager.startMagnetometerUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (data: CMMagnetometerData?, error: NSError?) in 
       // Do something with data 
       print(data) 
      }) 

     } 
    } 
+0

ですが、同時に3軸加速と3軸回転速度が必要ですが、startMagnetometerUpdatesToQueueとstartDeviceMotionUpdatesToQueueを使用しようとしましたが、これらのデータを同時にサンプリングしてください...私は何をすべきかわかりません... –

関連する問題