【问题标题】:How to use NMEA time as elapsed time in c#?如何在 C# 中使用 NMEA 时间作为经过时间?
【发布时间】:2018-02-19 19:01:43
【问题描述】:

在我的 Windows 窗体应用程序中,我使用 stopwatch 来计算事件之间的经过时间,但我想从 NMEA(GPRMC 语句)中获取时间并希望将其用作经过时间。我该怎么做?

这是我的代码;

 Stopwatch watch=new Stopwatch();
    Textbox1.Text=gsaat.Substring(4,2);
    //gsaat is the UTC time part of the GPRMC;
     private void timer2_Tick(object sender, EventArgs e)
            {
     if ((Convert.ToDouble(textBox2.Text) >= Convert.ToDouble(label1.Text) && Convert.ToDouble(label1.Text) >= Convert.ToDouble(textBox1.Text)))
                        {
                             watch.Start();
                             var time = watch.Elapsed.TotalSeconds;
    //I want to use gsaat as elapsed time in here instead of stopwatch
  label2.Text = String.Format("{0:00.00}", time);
    }
    }

编辑;

在我的应用程序中,我正在使用 GNSS 模块进行加速测试。在应用程序中,我为速度Textbox1Textbox2 设置边界条件,label1 代表汽车的当前速度,label2 代表汽车当前速度进入这些边界的经过时间。例如;我设置了Textbox1.text=10Textbox2.text=100,汽车开始加速,我想测量汽车从10 加速到100 之间的时间差。为此,我使用了stopwatch,但我遇到了一些问题。现在我想使用 UTC 时间来测量汽车速度为 10 和 100 之间的时间。我可以从 GPRMC 的句子中获取 UTC 时间,我也对其进行了解析。但是当汽车的速度为 10 和当车速超过 100 时停止。

【问题讨论】:

  • 您之前的问题已被搁置,建议您编辑它以使其更清晰。那么,您为什么要提出一个新问题呢?
  • 在上一个问题中,我询问了关于计数时间的差异。在这里,我要求使用 NMEA 句子作为秒表。我认为它们是不同的情况。
  • 那么基本上是关于如何解析 NMEA 时间并与 C# DateTime 进行比较?
  • 我从句子中解析了 NMEA 时间,但我无法将其作为秒表。
  • 从什么时候开始经过的时间?要获得时间流逝,您需要一个初始日期和当前日期。

标签: c# winforms stopwatch nmea


【解决方案1】:

不是很清楚你想要实现什么,只是猜测:

解析 NMEA 时间并将其保存为 DateTime 对象。然后做

var timeSpan = DateTime.UtcNow - nmeaTimestamp;

获取自传输时间戳以来的时间。

NMEA documentation这个时间戳的含义: UTC of position fix: 是发射站接近发射位置的时间。

如果您想在特定时间跨度后发出警报,请使用Timer。当时间过去时,它会引发一个事件。

编辑:选择一个接近速度 10 的数据包和一个接近速度 100 的数据包,解析时间戳并减去它们:

var accelerationTimeMilliseconds = (timestampAt100 - timestampAt10).ElapsedMilliseconds;

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多