学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-1-3
|
楼主 |
发表于 2017-5-5 11:17:32
|
显示全部楼层
#include "includes.h"
#include "app.h"
#include "stm32f10x.h"
#include "bsp_sdio_sdcard.h"
#include "bsp_usart1.h"
#include "bsp_usart2.h"
#include "ff.h"
#include "nmea.h"
#include "gps_config.h"
#include "GUI.h"
// USER END
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
// USER START (Optionally insert additional defines)
// USER END
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
// USER START (Optionally insert additional static data)
// USER END
/*********************************************************************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreateUSER[] = {
{ FRAMEWIN_CreateIndirect, "UserApp", 0, 0, 0, 240, 320, 0, 0x64, 0 },
// USER START (Optionally insert additional widgets)
// USER END
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
// USER START (Optionally insert additional static code)
// USER END
/*********************************************************************
*
* _cbDialog
*/
static void _cbDialogUSER(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
switch (pMsg->MsgId)
{
case WM_DELETE:
OS_INFO("USERapp delete\n");
Flag_ICON102 = 0;
UserApp_Flag = 0;
tpad_flag=0;
break;
case WM_INIT_DIALOG:
hItem = pMsg->hWin;
FRAMEWIN_SetTextColor(hItem,GUI_DARKGRAY);
FRAMEWIN_SetFont(hItem, GUI_FONT_16B_ASCII);
FRAMEWIN_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
FRAMEWIN_AddCloseButton(hItem,FRAMEWIN_BUTTON_RIGHT,0);
FRAMEWIN_SetTitleHeight(hItem, 20);
break;
case WM_PAINT:
// 给屏幕刷上背景颜色 //
GUI_SetBkColor(GUI_BLACK);
// 设置字体格式 //
GUI_SetFont(&GUI_Font8x16);
// 设置前景颜色(字体颜色)//
GUI_SetColor(GUI_RED);
GUI_DispStringAt (" Wildfire STM32-ISO",40,30);
GUI_DispStringAt (" WF-NEO-6M GPS module",30,50);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* CreateUSB TEST
*/
void FUN_ICON102Clicked(void)
{
WM_HWIN hWin;
nmeaINFO info; //GPS解码后得到的信息
nmeaPARSER parser; //解码时使用的数据结构
uint8_t new_parse=0; //是否有新的解码数据标志
nmeaTIME beiJingTime; //北京时间
char str_buff[100];
uint8_t timecount=0;
OS_INFO("USERapp create\n");
hWin=GUI_CreateDialogBox(_aDialogCreateUSER, GUI_COUNTOF(_aDialogCreateUSER), _cbDialogUSER, WM_HBKWIN, 0, 0);
timecount=0;
// 初始化定时器 //
// SysTick_Init();
//CRC和emWin没有关系,只是他们为了库的保护而做的,这样STemWin的库只能用在ST的芯片上面,别的芯片是无法使用的。 //
// RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
while(Flag_ICON102)
{
// 初始化GPS模块使用的接口 //
// GUI_Delay (20);
if(GPS_Config()==0)
{
while(1)
{
if(tpad_flag)WM_DeleteWindow(hWin);
GUI_Delay(10);
}
}
if(timecount>100)
{
// 初始化GPS模块使用的接口 //
if(GPS_HalfTransferEnd) /* 接收到GPS_RBUFF_SIZE一半的数据 */
{
/* 进行nmea格式解码 */
nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info);
GPS_HalfTransferEnd = 0; //清空标志位
new_parse = 1; //设置解码消息标志
}
else if(GPS_TransferEnd) /* 接收到另一半数据 */
{
nmea_parse(&parser, (const char*)&gps_rbuff[HALF_GPS_RBUFF_SIZE], HALF_GPS_RBUFF_SIZE, &info);
GPS_TransferEnd = 0;
new_parse =1;
}
if(new_parse ) //有新的解码消息
{
// 对解码后的时间进行转换,转换成北京时间 //
GMTconvert(&info.utc,&beiJingTime,8,1);
// 液晶输出 //
// 设置前景颜色(字体颜色)//
GUI_SetColor(GUI_BLUE);
GUI_DispStringAt (" GPS Info:",0,80);
// 设置前景颜色(字体颜色)//
GUI_SetColor(GUI_WHITE);
// 显示时间日期 //
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,100);
// 纬度 经度//
sprintf(str_buff," latitude :%f \r\n longitude :%f", info.lat,info.lon);
GUI_DispStringAt (str_buff,0,120);
// 正在使用的卫星 可见的卫星//
sprintf(str_buff," Satellite in use :%d \r\n Satellite in view :%d", info.satinfo.inuse,info.satinfo.inview);
GUI_DispStringAt (str_buff,0,160);
// 海拔高度 //
sprintf(str_buff," Altitude:%f m", info.elv);
GUI_DispStringAt (str_buff,0,200);
// 速度 //
sprintf(str_buff," speed:%f km/h", info.speed);
GUI_DispStringAt (str_buff,0,220);
// 航向 //
sprintf(str_buff," Track angle:%f deg", info.direction);
GUI_DispStringAt (str_buff,0,240);
new_parse = 0;
}
}
timecount++;
if(tpad_flag)WM_DeleteWindow(hWin);
GUI_Delay(10);
}
}
// USER START (Optionally insert additional public code)
// USER END
/*************************** End of file ****************************/
|
|