Esempio n. 1
0
/*===========================================================================
   This function format double num to AECHAR, 3 pos hold
===========================================================================*/
AECHAR* TS_FLT2SZ_3(AECHAR* szBuf, double val)
{
#if 1
	double tmp = 0, tt = 0, min = 0;
	int d = 0, m = 0;
	int zero_pad = 0;
	char strZero[4];
	AECHAR szZero[16];

	if (szBuf == NULL)
		return NULL;

	tmp = FABS(val);
	if (FCMP_GE(tmp, 0.001))
	{
		tt = FFLOOR(tmp);
		d = FLTTOINT(tt);
		m = FLTTOINT(FMUL(FSUB(tmp, tt), 10000.0));
		m = (m % 10 >= 5) ? (m + 10) / 10 : m / 10;
		if (m > 0)
		{
			if (m < 100)	//0.012
			{
				zero_pad++;
			}

			if (m < 10)	    //0.001
			{
				zero_pad++;
			}

			//补充后面的0
			if (zero_pad > 0)
			{
				STRNCPY(strZero, "000", zero_pad);
				strZero[zero_pad] = 0;
				STRTOWSTR(strZero, szZero, 16);
			}
		}
	}
	else
	{
		d = 0;
		m = 0;
	}

	if (zero_pad > 0)
		WSPRINTF(szBuf, 32, L"%d.%s%d", d, szZero, m);
	else
		WSPRINTF(szBuf, 32, L"%d.%d", d, m);
	return szBuf;
#else
	FLOATTOWSTR(val, szBuf, 32);
#endif
}
Esempio n. 2
0
/*===========================================================================
===========================================================================*/
static boolean SamplePosDet_InitApplet( CSamplePosDet *pMe )
{
   boolean bRet = TRUE;
   pMe->currentHandler = 0;

   // Load the GPS settings from the config file, if possible
   SamplePosDet_InitGPSSettings( pMe );

   {
	   Coordinate c1, c2;
	   double dis = 0;
	   char szDis[64];
	   AECHAR wcharbuf[32];
	   
	   //shanghai 31.1774276, 121.5272106
	   c1.lat = 31.1774276;
	   c1.lon = 121.5272106;
	   
	   //beijing 39.911954, 116.377817
	   c2.lat = 39.911954;
	   c2.lon = 116.377817;
	   
	   //shenzhen 22.543847, 113.912316
	   c1.lat = 22.543847;
	   c1.lon = 113.912316;
	   dis = Track_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
	   
	   
	   MEMSET(szDis,0,sizeof(szDis));
	   
	   FLOATTOWSTR(dis, wcharbuf, 32);
	   WSTRTOSTR(wcharbuf,szDis, 64);
	   
	   DBGPRINTF("Track_cbOrientInfo dis:%s", szDis);
	   //SamplePosDet_Printf( pMe, 5, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "%s m", szDis );
	   
	}

   return bRet;
}
Esempio n. 3
0
void Loc_Test_All(void)
{
   Coordinate c1, c2;
   double dis = 0, th = 0;
   char szDis[64], szAzh[64];
   AECHAR bufDis[32], bufAzh[32];

   //DESTINATION
   //beijing 39.911954, 116.377817
   c1.lat = 39.911954;
   c1.lon = 116.377817;

   //1 chengde 40.8493953666,118.0478839599
   c2.lat = 40.8493953666;
   c2.lon = 118.0478839599;
   dis = Loc_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
   th = Loc_Calc_Azimuth(c1.lat, c1.lon, c2.lat, c2.lon);

   MEMSET(szDis,0,sizeof(szDis));
   FLOATTOWSTR(dis, bufDis, 32);
   WSTRTOSTR(bufDis,szDis, 64);

   MEMSET(szAzh,0,sizeof(szAzh));
   FLOATTOWSTR(th, bufAzh, 32);
   WSTRTOSTR(bufAzh, szAzh, 64);
   
   DBGPRINTF("location_get 1 dis:%s azh:%s", szDis, szAzh);

   //2 shanghai 31.1774276, 121.5272106	//1076679.0804040465
   c2.lat = 31.1774276;
   c2.lon = 121.5272106;
   dis = Loc_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
   th = Loc_Calc_Azimuth(c1.lat, c1.lon, c2.lat, c2.lon);

   MEMSET(szDis,0,sizeof(szDis));
   FLOATTOWSTR(dis, bufDis, 32);
   WSTRTOSTR(bufDis,szDis, 64);

   MEMSET(szAzh,0,sizeof(szAzh));
   FLOATTOWSTR(th, bufAzh, 32);
   WSTRTOSTR(bufAzh, szAzh, 64);   
   DBGPRINTF("location_get 2 dis:%s azh:%s", szDis, szAzh);


   //3 sjz 38.0422378880,114.4925141047
   c2.lat = 38.0422378880;
   c2.lon = 114.4925141047;
   dis = Loc_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
   th = Loc_Calc_Azimuth(c1.lat, c1.lon, c2.lat, c2.lon);

   MEMSET(szDis,0,sizeof(szDis));
   FLOATTOWSTR(dis, bufDis, 32);
   WSTRTOSTR(bufDis,szDis, 64);

   MEMSET(szAzh,0,sizeof(szAzh));
   FLOATTOWSTR(th, bufAzh, 32);
   WSTRTOSTR(bufAzh, szAzh, 64);
   DBGPRINTF("location_get 3 dis:%s azh:%s", szDis, szAzh);


   //4 zhangjiakou 40.3964667463,114.8377011418
   c2.lat = 40.3964667463;
   c2.lon = 114.8377011418;
   dis = Loc_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
   th = Loc_Calc_Azimuth(c1.lat, c1.lon, c2.lat, c2.lon);

   MEMSET(szDis,0,sizeof(szDis));
   FLOATTOWSTR(dis, bufDis, 32);
   WSTRTOSTR(bufDis,szDis, 64);

   MEMSET(szAzh,0,sizeof(szAzh));
   FLOATTOWSTR(th, bufAzh, 32);
   WSTRTOSTR(bufAzh, szAzh, 64);
   DBGPRINTF("location_get 4 dis:%s azh:%s", szDis, szAzh);

}
Esempio n. 4
0
/*===========================================================================
===========================================================================*/
static void SamplePosDet_GetGPSInfo_Paint( CSamplePosDet *pMe, GetGPSInfo_PaintRegions rgn )
{
   struct _GetGPSInfo *pGetGPSInfo = SamplePosDet_GetScreenData( pMe );

  
   if( rgn == GETGPSINFO_PAINT_ALL ) {
      IDISPLAY_ClearScreen( pMe->theApp.m_pIDisplay );
      SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_LEFT, "GetGPSInfo" );
      if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_ONE_SHOT ) {
         SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "One Shot" );
      }
      else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_LOCAL ) {
         SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track L" );
      }
      else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_NETWORK ) {
         SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track N" );
      }
      else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_AUTO ) {
         SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track A" );
      }
   }

   if( rgn == GETGPSINFO_PAINT_FIXCOUNT || rgn == GETGPSINFO_PAINT_ALL ) {
      SamplePosDet_Printf( pMe, 1, 4, AEE_FONT_NORMAL, IDF_ALIGN_LEFT, "Failed : %d", pGetGPSInfo->dwFail+pGetGPSInfo->dwTimeout );
      SamplePosDet_Printf( pMe, 1, 4, AEE_FONT_NORMAL, IDF_ALIGN_RIGHT, "Timeout : %d", pGetGPSInfo->dwTimeout );
   }

   if( rgn == GETGPSINFO_PAINT_FIXDATA || rgn == GETGPSINFO_PAINT_ALL ) {
#define MAXTEXTLEN   22
      AECHAR wcText[MAXTEXTLEN];
      char   latlonStr[MAXTEXTLEN];

      SamplePosDet_Printf( pMe, 2, 4, AEE_FONT_NORMAL, IDF_ALIGN_LEFT, "Fixes : %d", pGetGPSInfo->dwFixNumber );

      FLOATTOWSTR( pGetGPSInfo->theInfo.lat, wcText, MAXTEXTLEN * sizeof(AECHAR) );
      WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN );
      SamplePosDet_Printf( pMe, 3, 4, AEE_FONT_BOLD, IDF_ALIGN_CENTER|IDF_RECT_FILL, "%s d", latlonStr );

      FLOATTOWSTR( pGetGPSInfo->theInfo.lon, wcText, MAXTEXTLEN * sizeof(AECHAR) );
      WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN );
      SamplePosDet_Printf( pMe, 4, 4, AEE_FONT_BOLD, IDF_ALIGN_CENTER|IDF_RECT_FILL, "%s d", latlonStr );

	  		  
      SamplePosDet_Printf( pMe, 5, 4, AEE_FONT_BOLD, IDF_ALIGN_RIGHT|IDF_RECT_FILL, "%d m", pGetGPSInfo->theInfo.height );

	  
      {
         double fv;
         fv = FASSIGN_INT( pGetGPSInfo->dwFixDuration );
         if( pGetGPSInfo->dwFixNumber ) {
            fv = FDIV(fv, pGetGPSInfo->dwFixNumber);
         }
         FLOATTOWSTR( fv, wcText, MAXTEXTLEN * sizeof(AECHAR) );
         WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN );
         SamplePosDet_Printf( pMe, 6, 4, AEE_FONT_BOLD, IDF_ALIGN_RIGHT|IDF_RECT_FILL, "Avg %ss", latlonStr );   
      }
   }

   if( rgn == GETGPSINFO_PAINT_ERROR ) {
      SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_BOLD, IDF_ALIGN_BOTTOM|IDF_ALIGN_CENTER|IDF_TEXT_INVERTED, 
         "ABORTED 0x%x", pGetGPSInfo->theInfo.nErr );
   }

   if( rgn == GETGPSINFO_PAINT_FIXANIM || rgn == GETGPSINFO_PAINT_ALL ) {
      SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_NORMAL, IDF_ALIGN_BOTTOM|IDF_ALIGN_CENTER|IDF_RECT_FILL, 
         ".....%d.....", pGetGPSInfo->wProgress );
   }

   //if (FABS(pGetGPSInfo->theInfo.lat) > 0)
   {
	   Coordinate c1, c2;
	   double dis = 0;
	   char szDis[64];
	   AECHAR wcharbuf[32];
	   
	   //shanghai 31.1774276, 121.5272106
	   c1.lat = 31.1774276;
	   c1.lon = 121.5272106;
	   
	   //beijing 39.911954, 116.377817
	   c2.lat = 39.911954;
	   c2.lon = 116.377817;
	   
	   //shenzhen 22.543847, 113.912316
	   //c1.lat = 22.543847;
	   //c1.lon = 113.912316;
	   c1.lat = pGetGPSInfo->theInfo.lat;
	   c1.lon = pGetGPSInfo->theInfo.lon;

	   dis = Track_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon);
	   
	   
	   MEMSET(szDis,0,sizeof(szDis));
	   
	   FLOATTOWSTR(dis, wcharbuf, 32);
	   WSTRTOSTR(wcharbuf,szDis, 64);
	   
	   DBGPRINTF("Track_cbOrientInfo dis:%s", szDis);
	   SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "%s m", szDis );
	   
	  }
	  {
		  uint16 d1 = 0;
		  uint8 d2 = 0;
		  d1 = ((uint16)(pGetGPSInfo->theInfo.wAzimuth & (~0x3f)))>>6;
		  d2 = (uint8)(pGetGPSInfo->theInfo.wAzimuth & 0x3f);
		  SamplePosDet_Printf( pMe, 8, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "Head %d.%d", d1, d2 );   
		  SamplePosDet_Printf( pMe, 9, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "Heading %d", pGetGPSInfo->theInfo.heading);  
	  }

}