问题:Qt 中的QSerialPort
的readyRead()
信号,有信号就收数据,这就导致一条数据分很多次抛出。由于正常的数据没有固定的开头和结尾,这就导致无法获取接收机正常的一组数据
解决办法:在串口中加入一个定时器来接收数据,定时器timeout结束,接收一次完整的数据。
timer1 = new QTimer(this);
这个模块输出频率为1HZ,也就是1s一组完整的数据,因此定时器定的500ms
以下是从一组数据中提取所需要的一帧数据,标准的NMEA0183协议
联合定位的GNRMC数据就是以上所示
加以解析就可得出时间,位置信息,注意UTC时间换算成北京时间需要加8小时;
---------一个刚学的小白,欢迎各位大佬指出不足之处,小弟感激不尽;