OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4031|回复: 4

几个sprintf后,只显示最后一句怎么回事

[复制链接]

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-3-12
在线时间
10 小时
发表于 2019-3-20 09:15:17 | 显示全部楼层 |阅读模式
1金钱
最后想用sprintf函数将GPS测得的数据显示出来,分别为经度纬度高度速度UTC时间,但是只显示最后一个时间了,如果将显示UTC时间注释掉,就只显示速度信息。。
新手小白求指教。
以下为代码:
void Gps_Msg_Show(void)
{
        float tp;                  
        POINT_COLOR=BLUE;           
        tp=gpsx.longitude;          
        sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);        //得到经度字符串
        LCD_ShowString(30,130,200,16,16,dtbuf);                   
        tp=gpsx.latitude;          
        sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);        //得到纬度字符串
        LCD_ShowString(30,150,200,16,16,dtbuf);                  
        tp=gpsx.altitude;          
        sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);                                    //得到高度字符串
        LCD_ShowString(30,170,200,16,16,dtbuf);                                   
        tp=gpsx.speed;          
        sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);                                    //得到速度字符串         
        LCD_ShowString(30,190,200,16,16,dtbuf);                                             
        if(gpsx.fixmode<=3)                                                                                                                //定位状态
        {  
                sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);       
                  LCD_ShowString(30,210,200,16,16,dtbuf);                          
        }                   
        sprintf((char *)dtbuf,"Valid satellite:%02d",gpsx.posslnum);                         //用于定位的卫星数
        LCD_ShowString(30,230,200,16,16,dtbuf);            
        sprintf((char *)dtbuf,"Visible satellite:%02d",gpsx.svnum%100);                         //可见卫星数
        LCD_ShowString(30,250,200,16,16,dtbuf);                 
        sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //显示UTC日期
        //printf("year2:%d\r\n",gpsx.utc.year);
        LCD_ShowString(30,270,200,16,16,dtbuf);                    
        sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //显示UTC时间
          LCD_ShowString(30,290,200,16,16,dtbuf);                  
}       


最佳答案

查看完整内容[请看2#楼]

明白了 ,太粗心了,发出来大家也注意一下sprintf这是把数据打印到字符串里。如果要显示要用 LCD SHOW
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-3-12
在线时间
10 小时
 楼主| 发表于 2019-3-20 09:15:18 | 显示全部楼层
明白了 ,太粗心了,发出来大家也注意一下sprintf这是把数据打印到字符串里。如果要显示要用 LCD SHOW
回复

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2019-3-20 09:58:16 | 显示全部楼层
用例程的这个函数去测试看正常显示不?
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14286
金钱
14286
注册时间
2018-8-3
在线时间
1147 小时
发表于 2019-3-20 12:12:41 | 显示全部楼层
本帖最后由 翼行园子 于 2019-3-20 12:20 编辑

仿真 就知道了 单步调试下
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-3-12
在线时间
10 小时
 楼主| 发表于 2019-3-20 14:50:05 | 显示全部楼层
翼行园子 发表于 2019-3-20 12:12
仿真 就知道了 单步调试下

好,我看看 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表