繁体   English   中英

如何在C#中将NMEA时间用作经过时间?

[英]How to use NMEA time as elapsed time in c#?

在我的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模块进行加速测试。 在实际应用中,我设定速度的边界条件Textbox1Textbox2label1代表车的当前速度label2表示经过时,汽车的当前速度进入这些边界。比如时间; 我设置Textbox1.text=10Textbox2.text=100 ,汽车开始加速,我想测量汽车之间的时间差从10加速到100。为此,我使用了stopwatch但遇到了一些问题。 现在,我想使用UTC时间来测量汽车速度在10到100之间的时间。我可以从GPRMC的语句中获取UTC时间,我也可以对其进行解析。但是,当汽车的速度为10时,我不能从零开始。车速超过100时将其停止。

不清楚要实现的目标,但有一个猜测:

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

var timeSpan = DateTime.UtcNow - nmeaTimestamp;

获取自发送时间戳以来的时间。

请查看NMEA文档以了解此时间戳的含义:位置固定的UTC:这是发射站靠近发射位置的时间。

如果您希望在特定时间间隔后收到警报,请使用计时器 时间到了,它将引发一个事件。

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

var accelerationTimeMilliseconds = (timestampAt100 - timestampAt10).ElapsedMilliseconds;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM