|
|
Re..GPS¿¡ ´ëÇؼ Á¶¾ðÁ» ¾òÀ¸·Á°í ÇÕ´Ï´Ù
NMEA0183 ÇÁ·ÎÅäÄÝ¿¡ ÀÇÇØ µé¾î¿À´Â µ¥ÀÌÅÍ´Â ¾Æ½Ã´Â¹Ù¿Í°°ÀÌ ","·Î ±¸ºÐÀÌ µÇ¾î ÀÖÀ¾´Ï´Ù. C Äڵ带 »ç¿ëÇÑ´Ù¸é strtok()ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ½±°Ô ¿øÇÏ´Â µ¥ÀÌÅ͸¦ ºÐ¸®Çس¾ ¼ö ÀÖÀ¾´Ï´Ù. Ȥ½Ã »ç¿ëÇÏ´Â MCU°¡ AVRÀ̶ó¸é strtok()°¡ ¾È¸ÔÈú¼ö ÀÖÀ¸¸ç À̶§´Â strtok_r()¸¦ »ç¿ëÇغ¸½Ã±â ¹Ù¶ø´Ï´Ù. ¾Æ·¡ GPRMC¸¦ ÄÁ¹öÁ¯ ÇÏ´Â Äڵ带 ÂüÁ¶ ÇϽñ⠹ٶø´Ï´Ù. void Conv_NMEA_data(void) { int i; int nTmp2; char *my_argv[100]; /* Collected argv[] array */ int my_argc; /* My argc value */ char *s; /* Returned strtok_r() pointer */ U32 uiTmp1; double dTmp,dTmp1,Prev_sec; float fTmp; /* $GPRMC,053254.237,A,3606.6676,N,12732.0434,E,15.517703,155.65,130304,,*30 1]½Ã°£ 3]À§µµ 5]°æµµ 7]¼Óµµ 8]Çìµù */ //GPRMC if(f_rmc == 1) { memset(my_argv,0x00,sizeof(my_argv)); s = strtok(rmc, ","); /* First call */ my_argc = 0; /* Start on my_argv[0] */ while(s != 0) { my_argv[my_argc++] = s; /* Save argv[] value */ s = strtok(NULL, ","); /* Parse nest tkn */ } my_argv[my_argc] = 0; /* null in last entry */ Lat = atof(my_argv[3]); Longi = atof(my_argv[5]); // À§µµ dTmp = Lat /100.0; uiTmp1 = dTmp; Lat = uiTmp1+((dTmp - uiTmp1)/0.6); // °æµµ dTmp = Longi /100.0; uiTmp1 = dTmp; Longi = uiTmp1+((dTmp - uiTmp1)/0.6); // Time Prev_sec = atof(my_argv[1]); // ¼Óµµ Speed = atof(my_argv[7]) * 1.852; Heading = atof(my_argv[8]); } } ===================================== ¡á [¹«ÀÎÇ×°ø±â] GPS¿¡ ´ëÇؼ Á¶¾ðÁ» ¾òÀ¸·Á°í ÇÕ´Ï´Ù (2008-09-22 11:15) ¾È³çÇϼ¼¿ä Àü UAV¿¡ ´ëÇØ °ü½ÉÀ» °¡Áö°í °øºÎÇÏ°í ÀÖ´Â ÇлýÀÔ´Ï´Ù GPS ÆĽÌÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ ¿©Â庸°í ½Í¾î¼¿ä SCI-A, B µÎ°³ÀÇ Ã¤³ÎÀ» »ç¿ëÇÏ¿© ÀÎÅÍ·´Æ® ¹æ¹ýÀ» »ç¿ëÇÏ¿© MCU¿¡¼ GPSµ¥ÀÌÅ͸¦ ÀÐ¾î¼ ¹öÆÛ¿¡ ÀúÀåÇÏ°í ¹öÆÛ¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ±×´ë·Î ÄÄÇ»ÅÍ ÇÏÀÌÆÛÅ͹̳ο¡ »Ñ¸®´Â °Í±îÁö ¼º°øÇߴµ¥¿ä ¿©±â¼ ¿øÇÏ´Â µ¥ÀÌÅ͸¸ ÃßÃâ ÇØ¾ß Çϴµ¥ ¹öÆÛ»çÀÌÁ ÃÖ´ëÇÑ ÀÛ°Ô ÇÏ¸é¼ ¿øÇÏ´Â µ¥ÀÌÅ͸¦ ¹Þ¾Æ µéÀÌ°í ½ÍÀºµ¥ ¾î¶² ¹æ¹ýÀÌ ÀÖÀ»Áö Á¶¾ð ºÎŹµå¸± ¼ö ÀÖÀ»±î¿ä? NMEAÇÁ·ÎÅäÄÝ ¾î´ÀÁ¤µµ ¼÷Áö Çß°í ±¸ºÐÀÚ(,)¸¦ »ç¿ëÇؼ Çؾ߰ڴٴ°͵µ ¾Ë°Í °°½À´Ï´Ù. ÆĽÌÇÏ´Â ¾Ë°í¸®ÁòÀ» ÀÎÅÍ·´Æ® ¼ºñ½º ·çƾ¿¡ ³Ö¾ú´õ´Ï Á¦´ë·Î µ¿ÀÛµµ ¾ÈÇÏ°í MCU°¡ ¸ÔÅëÀÌ µÇ´Â °æ¿ìµµ »ý°Ü¼¿ä Âü°íÇÒ¸¸ÇÑ ¼Ò½ºÄÚµå´Â ¾øÀ»±î¿ä? |