0

我正在研究一个使用 100hz 加速度计的 Ionic 项目。我需要将加速度计读数保存到文件中,并且我正在使用离子原生文件插件。我的问题 - 写入文件的时间比加速度计采样时间长,并且文件中的数据未按所需顺序写入(较新的数据在前一个有机会写入之前写入。

这是处理加速度计读取和写入本地文件的提供程序:`import {DeviceMotion, DeviceMotionAccelerationData} from

'@ionic-native/device-motion';
import {Subject} from "rxjs/Subject";
import {Observable} from "rxjs/Observable";
import {Subscription} from "rxjs/Subscription";

import {Http} from '@angular/http';
import {File} from '@ionic-native/file';

@Injectable()
export class DeviceMotionProvider {
    accelerometerata$: Subject<DeviceMotionAccelerationData> = new Subject();
    subscription: Subscription;

    constructor(private deviceMotion: DeviceMotion, private http: Http,
                private file: File) {


    }

    startAccelerometer() {
        // Watch device acceleration
        this.subscription = this.deviceMotion.watchAcceleration({frequency: 100})
            .subscribe((acceleration: DeviceMotionAccelerationData) => {
                this.accelerometerata$.next(acceleration);
                this.file.writeFile(this.file.dataDirectory, 'flightData.txt', acceleration.timestamp + ',' +Math.sqrt(acceleration.x*acceleration.x+acceleration.y*acceleration.y+acceleration.z*acceleration.z)/10 + '\n' ,{ append:true})
            });
    }

    getAccelerometerData(): Observable<DeviceMotionAccelerationData> {
        return this.accelerometerata$.asObservable();
    }

    stopAccelerometer() {
        this.subscription.unsubscribe();
    }


}`

我找不到克服这个问题的正确方法。任何帮助将不胜感激。

4

1 回答 1

0

我正在尝试同样的事情。但是,(1)我正在尝试使用 10hz 和(2)我限制时间/#records。我这样做的方式是将所有数据收集到一个数组或任何适合您需要的缓冲区中,一旦收集完成,遍历集合,对其进行格式化,并将数据写入文件。

希望这有帮助

于 2018-04-05T14:55:22.493 回答