1

我正在编写一个应用程序,该应用程序连接到来自比赛模拟器的数据流。我的应用程序有各种仪表,可以在用户参加活动时向他们显示此信息。作为显示过程的一部分,我将此数据保存到文件中。

然后我想做的是通过仪表重播这个,但是以实时速度。我的应用程序可以很好地重放这个存储文件中的数据,但它的运行速度与读取数据的速度一样快,这太快了。

数据存储在字节数组中并写入磁盘,并以串行方式读取,即我不会一次读取所有数据。我曾考虑用数据流的时间长度编写一个字段,然后以某种方式在重放时映射它,但对我来说似乎过于复杂。

我正在努力弄清楚如何将其与实时匹配。现在虽然我可以延迟以实时模拟它,但问题是取决于数据写入的速度,将影响这个“延迟”值。一些系统将以 60 条记录/秒的速度写入其他系统,以 20 或 30 条记录/秒的速度写入。

在我捕获的数据中是一个时间值,尽管是一圈时间,但如果需要,我可以输入一个实际时间字段而没有太多问题。

那么如何匹配记录的时间戳以在回放时实时回放。

该应用程序是 C# WPF 应用程序。我读过几篇关于重播设计的文章,但它们都与确定性游戏开发有关,这不是我正在做的事情。

4

2 回答 2

1

如果您将自记录开始以来的时间偏移与每个数据条目一起存储会怎样。然后要以相同的速度重播数据,您只需要获取到下一个条目的时间差并休眠或等待。

于 2013-06-07T11:55:29.747 回答
1

在我捕获的数据中是一个时间值,尽管是一圈时间,但如果需要,我可以输入一个实际时间字段而没有太多问题。[...] 那么我如何匹配记录的时间戳以在回放时实时回放。

一些代码会有所帮助,但基本上你只需要(nextFrame.Timestamp - currentFrame.Timestamp)在绘制每一帧之间等待时间戳单位。

请参阅此问题和其他问题,了解什么是让您的程序“等待”的最佳方式。

于 2013-06-07T11:23:09.637 回答