大学生
最后登录1970-1-1
在线时间 小时
注册时间2015-8-12
|
本帖最后由 全金属小册老 于 2015-11-2 11:37 编辑
GPS模块BUG如下图所示,在59秒以后应显示1,2,3,4.至9,LCD版程序显示为19,29,39,49,至99,10.
问题很明确出在进位后的处理上,在看了nmea解码程序和北京时间转换程序没问题,最后发现问题出在液晶显示这上。
液晶显示代码:
sprintf(str_buff," Date:%d/%d/%d Time:%d:%d:%d", beiJingTime.year+1900, beiJingTime.mon+1,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
GUI_DispStringAt (str_buff,0,60);
这里有个问题,GPGGA里面的SS各位秒是1,2,3,4,5,6,7,8,9并不是01,02,03,04,05,06,07,08,09,所以当显示比如12:10:59之后GPGGA转化来的数据是12:11:0,秒位少了一位,而LCD程序刷新的字符也就少了一位,保留了59秒最后的字符9,所以显示为09,19,29,39,49,59,69,79,89,99。
所以么解决方法很简单:
如下
1.在北京时间转换里面+一条判断 秒钟小于10S的前面补个0
2.更简单 sprintf这句里面" Date:%d/%d/%d Time:%d:%d:%d " 字符串格式最后补几个空格就行这样就擦除了残留的字符9.
懒得改的同学直接用我上传改好的也行,整个文件无法上传,直接下载USER文件夹替换原来的USER文件夹即可。
我改完测试正常,目前除了精度问题,还没测到其他问题。
User.rar
(75.7 KB, 下载次数: 22)
|
|