[英]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模块进行加速测试。 在实际应用中,我设定速度的边界条件Textbox1
和Textbox2
和label1
代表车的当前速度label2
表示经过时,汽车的当前速度进入这些边界。比如时间; 我设置Textbox1.text=10
和Textbox2.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.