找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1617|回復(fù): 3
收起左側(cè)

GPS WiFi LCD 溫度傳感器 更新頻率能不能快一點(diǎn) 求幫助

[復(fù)制鏈接]
ID:353926 發(fā)表于 2019-5-31 17:31 | 顯示全部樓層 |閱讀模式
用LCD顯示GPS和溫濕度信息,用WiFi將這些數(shù)據(jù)傳到網(wǎng)絡(luò)調(diào)試助手中,F(xiàn)在WiFi大概半分鐘能傳輸一次,LCD顯示的溫度和GPS半分鐘更新一次,我想問一下這是怎么回事。更新頻率能不能快一點(diǎn)。
回復(fù)

使用道具 舉報(bào)

ID:353926 發(fā)表于 2019-5-31 18:36 | 顯示全部樓層
  1. int nmea_decode_test(void)
  2. {
  3.                 double deg_lat;//轉(zhuǎn)換成[degree].[degree]格式的緯度
  4.                 double deg_lon;//轉(zhuǎn)換成[degree].[degree]格式的經(jīng)度

  5.     nmeaINFO info;          //GPS解碼后得到的信息
  6.     nmeaPARSER parser;      //解碼時(shí)使用的數(shù)據(jù)結(jié)構(gòu)  
  7.     uint8_t new_parse=0;    //是否有新的解碼數(shù)據(jù)標(biāo)志
  8.   
  9.     nmeaTIME beiJingTime;    //北京時(shí)間
  10.   
  11.                 uint8_t ucStatus;
  12.                 char cStr [ 1000 ] ;
  13.                 char str_buff[100];
  14.                
  15.                 LCD_SetFont(&Font8x16);
  16.                 LCD_SetColors(RED,BLACK);
  17.                
  18.                 ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);        /* 清屏,顯示全黑 */

  19.     /*設(shè)置字體顏色及字體的背景顏色*/
  20.     LCD_SetColors(RED,BLACK);
  21.        
  22.           ILI9341_DispStringLine_EN(LINE(1)," Wildfire STM32-F103");
  23.     ILI9341_DispStringLine_EN(LINE(2),"  GPS module");

  24.   
  25.     /* 設(shè)置用于輸出調(diào)試信息的函數(shù) */
  26.     nmea_property()->trace_func = &trace;
  27.     nmea_property()->error_func = &error;
  28.     nmea_property()->info_func = &gps_info;

  29.     /* 初始化GPS數(shù)據(jù)結(jié)構(gòu) */
  30.     nmea_zero_INFO(&info);
  31.     nmea_parser_init(&parser);

  32.     while(1)
  33.     {
  34.                                
  35.       if(GPS_HalfTransferEnd)     /* 接收到GPS_RBUFF_SIZE一半的數(shù)據(jù) */
  36.       {
  37.         /* 進(jìn)行nmea格式解碼 */
  38.         nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info);
  39.         
  40.         GPS_HalfTransferEnd = 0;   //清空標(biāo)志位
  41.         new_parse = 1;             //設(shè)置解碼消息標(biāo)志
  42.       }
  43.       else if(GPS_TransferEnd)    /* 接收到另一半數(shù)據(jù) */
  44.       {

  45.         nmea_parse(&parser, (const char*)&gps_rbuff[HALF_GPS_RBUFF_SIZE], HALF_GPS_RBUFF_SIZE, &info);
  46.       
  47.         GPS_TransferEnd = 0;
  48.         new_parse =1;
  49.       }
  50.       
  51.       if(new_parse )                //有新的解碼消息   
  52.       {   
  53.         /* 對(duì)解碼后的時(shí)間進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成北京時(shí)間 */
  54.         GMTconvert(&info.utc,&beiJingTime,8,1);
  55.         
  56.         /* 輸出解碼得到的信息 */
  57.                                 printf("\r\n時(shí)間%d-%02d-%02d,%d:%d:%d\r\n", beiJingTime.year+1900, beiJingTime.mon,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
  58.                                 //info.lat lon中的格式為[degree][min].[sec/60],使用以下函數(shù)轉(zhuǎn)換成[degree].[degree]格式
  59.                                
  60.                                 deg_lat = nmea_ndeg2degree(info.lat);
  61.                                 deg_lon = nmea_ndeg2degree(info.lon);
  62.                        
  63.                                 printf("\r\n緯度:%f,經(jīng)度%f\r\n",deg_lat,deg_lon);
  64.         printf("\r\n海拔高度:%f 米 ", info.elv);
  65.         printf("\r\n速度:%f km/h ", info.speed);
  66.         printf("\r\n航向:%f 度", info.direction);
  67.                                
  68.                                 printf("\r\n正在使用的GPS衛(wèi)星:%d,可見GPS衛(wèi)星:%d",info.satinfo.inuse,info.satinfo.inview);

  69.                           printf("\r\n正在使用的北斗衛(wèi)星:%d,可見北斗衛(wèi)星:%d",info.BDsatinfo.inuse,info.BDsatinfo.inview);
  70.                                 printf("\r\nPDOP:%f,HDOP:%f,VDOP:%f",info.PDOP,info.HDOP,info.VDOP);
  71.         
  72.         /* 液晶輸出 */
  73.         
  74.         /* 設(shè)置前景顏色(字體顏色)*/
  75.         LCD_SetTextColor(BLUE);
  76.         
  77.         ILI9341_DispStringLine_EN(LINE(5)," GPS Info:");

  78.         /* 設(shè)置前景顏色(字體顏色)*/
  79.         LCD_SetTextColor(WHITE);
  80.         
  81.         /* 顯示時(shí)間日期 */
  82.         sprintf(str_buff," Date:%4d/%02d/%02d ", beiJingTime.year+1900, beiJingTime.mon,beiJingTime.day);
  83.         ILI9341_DispStringLine_EN(LINE(6),str_buff);
  84.       
  85.                           sprintf(str_buff," Time:%02d:%02d:%02d", beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
  86.         ILI9341_DispStringLine_EN(LINE(7),str_buff);

  87.         /* 緯度 經(jīng)度*/
  88.         sprintf(str_buff," latitude :%.6f ", deg_lat);
  89.         ILI9341_DispStringLine_EN(LINE(8),str_buff);
  90.         
  91.         sprintf(str_buff," longitude :%.6f",deg_lon);
  92.         ILI9341_DispStringLine_EN(LINE(9),str_buff);
  93.         
  94.         /* 正在使用的衛(wèi)星 可見的衛(wèi)星*/
  95.         sprintf(str_buff," GPS  Satellite in use :%2d ", info.satinfo.inuse);
  96.         ILI9341_DispStringLine_EN(LINE(10),str_buff);   
  97.         
  98.                                 sprintf(str_buff," GPS Satellite in view :%2d", info.satinfo.inview);
  99.                                 ILI9341_DispStringLine_EN(LINE(11),str_buff);   

  100. //        /* 正在使用的衛(wèi)星 可見的衛(wèi)星*/
  101. //        sprintf(str_buff," BDS  Satellite in use :%2d ", info.BDsatinfo.inuse);
  102. //        ILI9341_DispStringLine_EN(LINE(12),str_buff);   
  103. //        
  104. //       sprintf(str_buff," BDS Satellite in view :%2d", info.BDsatinfo.inview);
  105. //        ILI9341_DispStringLine_EN(LINE(13),str_buff);   
  106.         
  107.         /* 海拔高度 */
  108.         sprintf(str_buff," Altitude:%4.2f m", info.elv);
  109.         ILI9341_DispStringLine_EN(LINE(12),str_buff);
  110.         
  111.         /* 速度 */
  112.         sprintf(str_buff," speed:%4.2f km/h", info.speed);
  113.         ILI9341_DispStringLine_EN(LINE(13),str_buff);
  114.          
  115.         /* 航向 */
  116. //        sprintf(str_buff," Track angle:%3.2f deg", info.direction);
  117. //        ILI9341_DispStringLine_EN(LINE(14),str_buff);
  118.                                         DHT11_Data_TypeDef DHT11_Data;//聲明
  119.                                         DHT11_Read_TempAndHumidity ( & DHT11_Data );
  120.                                         a1=DHT11_Data.humi_int;
  121.                                         b1=DHT11_Data.humi_deci;
  122.                                         c1=DHT11_Data.temp_int;
  123.                                         d1=DHT11_Data.temp_deci;       
  124.                                         LCD_SetFont(&Font8x16);       
  125.                                         LCD_SetColors(WHITE ,BLACK);       
  126.                                         sprintf(dispBuff," humi:%d.%dRH  temp:%d.%dC",a1,b1,c1,d1);
  127.                                         LCD_ClearLine(LINE(14));       
  128.                                         ILI9341_DispStringLine_EN(LINE(14),dispBuff);  //14行顯示英文字符串
  129.                                
  130.                                
  131.                                 printf ( "\r\n正在配置 ESP8266 ......\r\n" );

  132.                                 macESP8266_CH_ENABLE();
  133.                                
  134.                                 ESP8266_AT_Test ();
  135.                                
  136.                                 ESP8266_Net_Mode_Choose ( STA );

  137.                                 while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );       
  138.                                
  139.                                 ESP8266_Enable_MultipleId ( DISABLE );
  140.                                
  141.                                 while ( !        ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );
  142.                                
  143.                                 while ( ! ESP8266_UnvarnishSend () );
  144.                                
  145.                                 printf ( "\r\n配置 ESP8266 完畢\r\n" );                       
  146.                                        
  147.                                         if ( DHT11_Read_TempAndHumidity ( & DHT11_Data ) == SUCCESS )       //讀取 DHT11 溫濕度信息
  148.                                         {       
  149.                                         sprintf ( cStr, "\r\n檢測(cè)成功!\r\n\r\n濕度為%d.%d %RH ,溫度為 %d.%d℃ \r\n經(jīng)度是%f ,緯度是%f\r\n",
  150.                                                                                 DHT11_Data .humi_int, DHT11_Data .humi_deci, DHT11_Data .temp_int, DHT11_Data.temp_deci, deg_lat,deg_lon);

  151.                                         }

  152.                                         printf ( "%s", cStr );                  //打印讀取 DHT11 溫濕度信息       
  153.                                        
  154.                                         ESP8266_SendString ( ENABLE, cStr, 0, Single_ID_0 );                       //發(fā)送 DHT11 溫濕度信息和GPS信息到網(wǎng)絡(luò)調(diào)試助手
  155.                                        
  156.                                         if ( ucTcpClosedFlag )                                             //檢測(cè)是否失去連接
  157.                                         {
  158.                                                 ESP8266_ExitUnvarnishSend ();                                    //退出透?jìng)髂J?br />
  159.                                                
  160.                                                 do ucStatus = ESP8266_Get_LinkStatus ();                         //獲取連接狀態(tài)
  161.                                                 while ( ! ucStatus );
  162.                                                
  163.                                                 if ( ucStatus == 4 )                                             //確認(rèn)失去連接后重連
  164.                                                 {
  165.                                                         printf ( "\r\n正在重連熱點(diǎn)和服務(wù)器 ......\r\n" );
  166.                                                        
  167.                                                         while ( ! ESP8266_JoinAP ( macUser_ESP8266_ApSsid, macUser_ESP8266_ApPwd ) );
  168.                                                        
  169.                                                         while ( !        ESP8266_Link_Server ( enumTCP, macUser_ESP8266_TcpServer_IP, macUser_ESP8266_TcpServer_Port, Single_ID_0 ) );
  170.                                                        
  171.                                                         printf ( "\r\n重連熱點(diǎn)和服務(wù)器成功\r\n" );

  172.                                                 }
  173.                                                
  174.                                                 while ( ! ESP8266_UnvarnishSend () );               
  175.                                                
  176.                                         }

  177.                                 }

  178.                                
  179.                                                         new_parse = 0;
  180.                                                 }

  181.                                         }
  182. 這是GPS解析數(shù)據(jù)、LCD顯示GPS和溫度、WiFi傳輸GPS和溫度的程序。有了WiFi傳輸函數(shù)LCD更新顯示GPS和溫度信息的頻率變慢了。
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:330198 發(fā)表于 2019-6-1 09:17 | 顯示全部樓層
你把所有while(!........);這些換個(gè)方式寫,不然程序就死在這里了。
回復(fù)

使用道具 舉報(bào)

ID:353926 發(fā)表于 2019-6-1 21:44 | 顯示全部樓層
zhanghyg 發(fā)表于 2019-6-1 09:17
你把所有while(!........);這些換個(gè)方式寫,不然程序就死在這里了。

可以說下怎么寫嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表