Неверная скорость передачи данных датчика в QMLAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Неверная скорость передачи данных датчика в QML

Сообщение Anonymous »

Я разрабатываю мобильное приложение, которое должно брать образцы с разными частотами от двух датчиков (акселерометра и гироскопа) и сохранять результаты в виде файлов JSON. Каждый файл JSON соответствует «эксперименту» и состоит из значений нескольких свойств, среди которых записанные образцы датчиков и частота дискретизации (или скорость передачи данных). Проверив результаты, я заметил, что количество образцов примерно равное, хотя я менял скорость передачи данных для каждого эксперимента.
Эксперимент в этом приложении состоит из таймера подсчета по сравнению с 5, при котором активируются датчики. Их значения сохраняются в векторах и записываются еще 30 секунд. По истечении этого времени датчики отключаются, и в диалоговом окне сообщения пользователю задается вопрос, хотят ли они сохранить эксперимент или отменить его. Я также использую внутренний класс C++ (FitnessExperiment) для отслеживания всех параметров, которые необходимо сохранить. Ниже приведены соответствующие строки кода QML, которые я только что описал:

Код: Выделить всё

Rectangle {
id: root
property int timerValue: 5 //starting value of the timer
property int sampleRate: 50 //default sampling rate, passed from a different screen

Accelerometer {
id: accSensor
dataRate: sampleRate

property real x: 0
property real y: 0
property real z: 0

onReadingChanged: {
x = reading.x;
y = reading.y;
z = reading.z;

experimentData.addAccReading(reading.timestamp, x, y, z); //the current experiment
//instance adds a reading
//to the accelerometer
//readings vector
}
}

Gyroscope {
id: gyrSensor
dataRate: sampleRate

property real x: 0
property real y: 0
property real z: 0

onReadingChanged: {

x = reading.x
y = reading.y
z = reading.z

experimentData.addGyrReading(reading.timestamp, x, y, z); //the current experiment
//instance adds a reading
//to the gyroscope readings
//vector
}
}

//internal class instance
FitnessExperiment {
id: experimentData
}

ColumnLayout {

Timer {
id: timer
running: true
repeat: true
onTriggered: {

if (timerValue == 0) {

if (startCountdown) {
//if the timer has counted down from 30

accSensor.active = false;
gyrSensor.active = false;
timer.stop();

saveExperimentDialog.visible = true; //open the message dialog

} else {
//if the timer has counted down from 5

timerValue = 30;
startCountdown = true;
accSensor.active = true;
gyrSensor.active = true;
}
}

countdownText.text = timerValue.toString(); //show the countdown in a separate
//Text component that isn't shown here
timerValue--;
}
}

MessageDialog //message dialog for saving or cancelling experiment
{
id: saveExperimentDialog
title: "Save Experiment"

standardButtons: StandardButton.Yes | StandardButton.No

visible: false

onYes: {

experimentData.saveFile();
stack.pop();
}

onNo: {

experimentData.cancelExperiment(); //clear all properties of experimentData
stack.pop();
}
}
}
}
Функция saveFile() проста; он создает QJsonObject из всех свойств и записанных значений и сохраняет его на моем компьютере. Вот также два выходных файла JSON: один с частотой дискретизации 26 Гц, а другой — с частотой дискретизации 104 Гц.
В настоящее время результаты показывают, что в массиве измерений ускорителя для частоты 26 Гц имеется около 2990 выборок. эксперименте и 2994 в эксперименте на частоте 104 Гц. Учитывая, что оба эксперимента длились 30 секунд, это означало бы, что частота дискретизации составляет 99,1 и 99,8 соответственно. Однако ожидаемые результаты составляют 26 Гц * 30 с = 780 выборок и 104 Гц * 30 с = 3120 выборок.
Я ознакомился с документацией и убедился, что действительно передаю правильное значение в строке dataRate: sampleRate. Я проанализировал и попытался разобраться в числах из выходных файлов JSON, но безуспешно. Может ли это быть связано с ограничением, установленным ОС?

Подробнее здесь: https://stackoverflow.com/questions/789 ... sor-in-qml
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»