Я хочу рассчитать частоту дискретизации датчика ускорения на Samsung Gear S2. Используя следующий код в качестве примера https://developer.tizen.org/ko/community/code-snippet/native-code-snippet/simple-sensors-application-wearable?langredirect=1, я создал приложение.
Я регистрирую обратный вызов с 10 мс
/* Register a callback if a sensor event is detected (sensor value changed) */
ret = sensor_listener_set_event_cb((ad->listener), 10, on_sensor_event, ad);
и я рассчитываю частоту дискретизации с помощью
unsigned long long int timestampArray[1000000];
int i = 1;
unsigned int samplingFreq = 1;
/* Callback for whenever a sensor event is detected (such as value changed). It is called whenever such an event is detected */
void on_sensor_event(sensor_h sensor, sensor_event_s *event, void *data) {
appdata_s *ad = data;
char buf[1024]={0};
char tempbuf[1024]={0};
sensor_type_e type;
sensor_get_type(sensor, &type);
//Check the sensor type of the sensor event
if(type == (ad->type)){
timestampArray[i] = event->timestamp/1000;
if(i == 2)
{
samplingFreq = timestampArray[i]-timestampArray[i-1];
}
i++;
snprintf(tempbuf, 1023, "F= %d<br/>", samplingFreq);
strcat(buf, tempbuf);
elm_object_text_set(ad->label, buf);
}
}
При этом частота дискретизации ускорения остается на уровне около 50 Гц (то есть один сэмпл каждые 19-20 мс).
Знаешь, почему я не могу опуститься ниже этого? (Моей целью будет 1 образец каждые 10 мс - минимально поддерживаемый)
Спасибо.
Это мой первый вопрос, поэтому я был бы рад получить идеи по улучшению.
Знание: C - новичок, Tizen - новичок
snprintf
сгенерированная строка имеет длину не более n-1, используйтеsizeof tempbuf
вместо1023
- person David Ranieri   schedule 20.04.2016