2013-06-07 3 views
1

Я пишу приложение, которое подключается к потоку данных с помощью симулятора гонки. Мое приложение имеет различные датчики, которые отображают эту информацию пользователю, пока они находятся в этом случае. Я сохраняю эти данные в файл как часть процесса отображения.Контроль времени для системы воспроизведения

Что бы я хотел сделать, это воспроизвести это через датчики, но в режиме реального времени. Мое приложение отлично воспроизводит данные из этого сохраненного файла, но работает так же быстро, как данные могут быть прочитаны, что слишком быстро.

Данные хранятся в массиве байтов и записываются на диск и считываются последовательным образом, то есть я не читаю сразу все данные. Я подумал о написании поля с длительностью потока данных, а затем отобразил это, как-то, при повторном воспроизведении, но для меня это казалось слишком сложным.

Я изо всех сил пытаюсь понять, как это соотносится с реальным временем. Теперь, пока я мог бы задержать его симуляцию в реальном времени, проблема заключается в том, что в зависимости от того, насколько быстро будут записываться данные, это повлияет на то, что это за «значение задержки». Некоторые системы будут записывать со скоростью 60 записей/сек на 20 или 30 записей в секунду.

В пределах данных, которые я собираю, это значение времени, хотя время круга, но я мог бы установить фактическое поле времени без особых проблем, если это необходимо.

Итак, как я могу сопоставить записанную метку времени для воспроизведения в режиме реального времени при воспроизведении.

Приложение является приложением WPF на C#. Я прочитал пару сообщений о дизайне повтора, но все они связаны с детерминированным развитием игры, и это не то, что я делаю.

ответ

1

В пределах данных, которые я собираю, это значение времени, хотя время круга, но при необходимости я мог бы разместить фактическое поле времени без особых проблем. [...] Итак, как мне сопоставить записанную метку времени для воспроизведения в режиме реального времени при повторном воспроизведении.

Некоторый код поможет, но в основном вам нужно подождать (nextFrame.Timestamp - currentFrame.Timestamp) единиц времени между рисунком каждого кадра.

См. this question и другие о том, что является лучшим способом, чтобы ваша программа «подождала».

+1

Извините, мне потребовалось некоторое время, чтобы вернуться к этому. Работа была умственной. Я думал, что так будет. Спасибо за подтверждение. – MikeyTT

1

Что можно сказать о сохранении смещения по времени с момента начала записи вместе с каждым вводом данных. Затем, чтобы воспроизвести данные с той же скоростью, вам просто нужно получить разницу во времени с следующей записью, спя или ждать.

+0

Спасибо. Я напишу временную метку в классе, а затем использую ее как базовую линию для воспроизведения. – MikeyTT

Смежные вопросы