2016-07-31 9 views
0

ich brauche die 3-Achsen-Magnetfeld, abzutasten, so Ich verwende den DeviceMotion, und hier ist mein Code:Warum sind die Werte von magneticField.field in Null festgelegt? 3-Achsen-Beschleunigung und 3-Achsen-Drehrate

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] 
       } 
       )} 
    } 
} 

jedoch die Werte von 3- Das Magnetfeld der Achse, das ich bekommen habe, ist auf Null fixiert, egal wie sehr ich versuche, mein iPhone zu bewegen. Kannst du mir bitte Helfen ???

+0

Ich brauche 3-Achsen-Beschleunigung und 3-Achsen-Drehgeschwindigkeit zur gleichen Zeit, so kann ich startDeviceMotionUpdatesToQueue und startMagnetometerUpdatesToQueue nicht, weil seine Abtastzeitpunkt seiner different.In Tatsache, obwohl ich die gleiche magnetometerUpdateInterval mit deviceMotionUpdateInterval gesetzt, wenn Ich benutze startDeviceMotionUpdatesToQueue und startMagnetometerUpdatesToQueue, ist nicht nur die Probezeit anders, sondern auch Probe Nummer –

Antwort

1

Sie scheinen die falsche Methode aufzurufen, um Magnetometerdaten zu erhalten.

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

, aber ich brauche 3-Achsen-Beschleunigung und 3-Achs-Drehrate zur gleichen Zeit habe ich versucht, startMagnetometerUpdatesToQueue und startDeviceMotionUpdatesToQueue verwenden, aber es kann nicht sample diese Daten gleichzeitig ... also weiß ich nicht, was ich tun soll ... –

Verwandte Themen