我正在研究一个使用100hz加速度计的离子项目。 我需要将加速计读数保存到文件中,并且我正在使用离子本机文件插件。 我的问题 - 文件的写入时间比加速度计采样时间长,文件中的数据没有按照所需的顺序写入(更新的数据是在前一个数据写入之前写的。
这是处理加速度计读取和写入本地文件的提供程序:`import {DeviceMotion,DeviceMotionAccelerationData}来自
'@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();
}
}`
我无法找到克服这个问题的正确方法。 任何帮助将不胜感激。
答案 0 :(得分:0)
我尝试过同样的事情。但是,(1)我尝试用10hz和(2)我限制时间/#记录。我这样做的方法是将所有数据收集到一个数组或任何缓冲套件中,一旦收集完成,迭代整个集合,格式化并将数据写入文件。
希望这有帮助