亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mygps.c

?? 處理與接收 gps 信號的範例碼, 使用的平臺式 HOLUX GR-86.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**
 * @file mygps.c
 *
 * @brief Operations for controlling GPS
 *
 * @copyright  Copyright (C) 2006, dmatek
 * @author chris_zhang <www.dmatek.com> 
 * @author modified, Tang-Hsun Tu (crilit), NTU GINM, Lab 408, 2008/7/4, R96944013@ntu.edu.tw
 * @version 1.0
 * @date 2008
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>


//---------------------------------------------------
// global data
//---------------------------------------------------
#define GPGGA_MSG "$GPGGA"
#define GPGLL_MSG "$GPGLL"
#define GPGSA_MSG "$GPGSA"
#define GPGSV_MSG "$GPGSV"
#define GPRMC_MSG "$GPRMC"
#define GPVTG_MSG "$GPVTG"
#define GPMSS_MSG "$GPMSS"
#define GPZDA_MSG "$GPZDA"
//---------------------------------------------------


//---------------------------------------------------
// function prototype
//---------------------------------------------------

//---------------------------------------------------
/**
 * @brief strtok split by , & 0
 *
 * @param 
 *    arg split argument
 */
static char *mystrtok(char *arg)
{
/* loop counter */
int i;
/* len */
int len;
/* start ptr */
static char *fptr;
/* check stop split */
static unsigned char chk_flag;
/* return ptr */
char *rptr;

    if(arg){ /* first */
        chk_flag = 0;
        len = strlen(arg);
        rptr = arg;
        fptr = arg;
    }else{ /* next split */
        len = strlen(fptr);
        rptr = fptr;
    }


    if(len == 0 || chk_flag) return NULL; /* check out ? */
    
    for(i=0; i<=len; ++i){ /* start split */
        if(fptr[i] == ','){
           fptr[i] = 0;
           fptr = fptr + i + 1;
           return rptr;
        }else if(fptr[i] == '\0'){
           chk_flag = 1;
           return rptr;
        }
    }
    
    return NULL;
}
//---------------------------------------------------
/**
 * @brief handle GPS GGA command
 *
 * @param 
 *    cmd GPS command
 */
static void handle_GPGGA(char *cmd) 
{
/* ptr */
char *sptr;
/* checksum */
char chk_sum[6];

    printf("Global Positioning System Fix Data (GGA)\n");
    
    /* get checksum */
    if((sptr = strrchr(cmd, '*'))){
        strcpy(chk_sum, sptr + 1);
        *sptr = '\0';
    }   
    
    /* get msg id */
    mystrtok(cmd);
    
    /* get UTC Time */
    if((sptr = mystrtok(NULL))){
        printf("\tUTC Time: %s\n", sptr);  
    }
    
    /* get Latitude */
    if((sptr = mystrtok(NULL))){
        printf("\tLatitude: %s\n", sptr);  
    }
    
    /* get N/S Indictor */
    if((sptr = mystrtok(NULL))){
        printf("\tN/S Indictor: %s\n", sptr);  
    }
    
    /* get Longitude */
    if((sptr = mystrtok(NULL))){
        printf("\tLongitude: %s\n", sptr);  
    }
    
    /* get E/W Indictor */
    if((sptr = mystrtok(NULL))){
        printf("\tE/W Indictor: %s\n", sptr);  
    }
    
    /* get Position Fix Indictor */
    if((sptr = mystrtok(NULL))){
        printf("\tPosition Fix Indictor: %s, ", sptr);  
        switch(atoi(sptr)){
        case 0: printf("Fix not avaiable or invalid\n"); break;
        case 1: printf("GPS SPS Mode, fix valid\n"); break;
        case 2: printf("Differential GPS, SPS Mode, fix valid\n"); break;
        case 3: printf("GPS PPS Mode, fix valid\n"); break;                        
        }
    }
    
    /* get Satellites Used */
    if((sptr = mystrtok(NULL))){
        printf("\tSatellites Used: %d\n", atoi(sptr));  
    }
    
    /* get HDOP */
    if((sptr = mystrtok(NULL))){
        printf("\tHDOP: %s\n", sptr);  
    }
    
    /* get MSL Altitude */
    if((sptr = mystrtok(NULL))){
        printf("\tMSL Altitude: %s meters\n", sptr);  
    }
    
    /* get Units */
    if((sptr = mystrtok(NULL))){
        printf("\tUnits: %s meters\n", sptr);  
    }
    
    /* get Geoid Spearation */
    if((sptr = mystrtok(NULL))){
        printf("\tGeoid Spearation: %s meters\n", sptr);  
    }
    
    /* get Units */
    if((sptr = mystrtok(NULL))){
        printf("\tUnits: %s meters\n", sptr);  
    }
    
    /* Age of Diff. Corr. */
    if((sptr = mystrtok(NULL))){
        printf("\tAge of Diff. Corr.: %s seconds\n", sptr);  
    }
    
    /* get diff. ref. station ID */
    if((sptr = mystrtok(NULL))){
        printf("\tDiff. Ref. station ID: %s\n", sptr);
    }else{
        printf("\tDiff. Ref. station ID:\n");          
    }
        
    /* show checksum */
    printf("\tChecksum: 0x%s\n", chk_sum);                                               
}
//---------------------------------------------------
/**
 * @brief handle GPS GSA command
 *
 * @param 
 *    cmd GPS command
 */
static void handle_GPGSA(char *cmd) 
{
/* ptr */
char *sptr;
/* loop counter */
int i;
/* checksum */
char chk_sum[6];

    printf("GNSS DOP and Active Satellites (GSA)\n");
    
    /* get checksum */
    if((sptr = strrchr(cmd, '*'))){
        strcpy(chk_sum, sptr + 1);
        *sptr = '\0';
    }  
    
    /* get msg id */
    mystrtok(cmd);
    
    /* get Mode 1 */
    if((sptr = mystrtok(NULL))){
        printf("\tMode 1: %s, ", sptr);
        switch(sptr[0]){
        case 'M': printf("Manual - forced to operate in 2D or 3D mode\n"); break;
        case 'A': printf("2DAutomatic - allowed to automatically switch 2D/3D\n"); break;                    
        }          
    }
    
    /* get Mode 2 */
    if((sptr = mystrtok(NULL))){
        printf("\tMode 2: %s, ", sptr); 
        switch(sptr[0]){
        case '1': printf("Fix Not Avaiable\n"); break;
        case '2': printf("2D\n"); break;
        case '3': printf("3D\n"); break;        
        }          
    }
    
    /* show channels */
    for(i=1; i<=12; ++i){
        /* Satellite Used */
        if((sptr = mystrtok(NULL))){
            if(sptr[0] != '\0')
                printf("\tSatellite Used (Sv on Channel %d): %s\n", i, sptr);  
        }          
    }
    
    /* get PDOP */
    if((sptr = mystrtok(NULL))){
        printf("\tPDOP: %s\n", sptr);  
    }
    
    /* get HDOP */
    if((sptr = mystrtok(NULL))){
        printf("\tHDOP: %s\n", sptr);  
    }    

    /* get VDOP */
    if((sptr = mystrtok(NULL))){
        printf("\tVDOP: %s\n", sptr);  
    }else{
        printf("\tVDOP: %s\n");          
    }   
    
    /* show checksum */
    printf("\tChecksum: 0x%s\n", chk_sum);   
                                            
}
//---------------------------------------------------
/**
 * @brief handle GPS GLL command
 *
 * @param 
 *    cmd GPS command
 */
static void handle_GPGLL(char *cmd) 
{
/* ptr */
char *sptr;
/* checksum */
char chk_sum[6];

    printf("Geographic Position with Latitude/Longitude (GLL)\n");
    
    /* get checksum */
    if((sptr = strrchr(cmd, '*'))){
        strcpy(chk_sum, sptr + 1);
        *sptr = '\0';
    }   
    
    /* get msg id */
    mystrtok(cmd);
    
    /* get Latitude */
    if((sptr = mystrtok(NULL))){
        printf("\tLatitude: %s\n", sptr);  
    }
    
    /* get N/S Indictor */
    if((sptr = mystrtok(NULL))){
        printf("\tN/S Indictor: %s\n", sptr);  
    }
    
    /* get Longitude */
    if((sptr = mystrtok(NULL))){
        printf("\tLongitude: %s\n", sptr);  
    }
    
    /* get E/W Indictor */
    if((sptr = mystrtok(NULL))){
        printf("\tE/W Indictor: %s\n", sptr);  
    }

    /* get UTC Position */
    if((sptr = mystrtok(NULL))){
        printf("\tUTC Position: %s\n", sptr);  
    }
   
    /* get Status */
    if((sptr = mystrtok(NULL))){
        printf("\tStatus: %s\n", sptr);        
    }else{
        printf("\tStatus:\n");           
    } 
        
    /* show checksum */
    printf("\tChecksum: 0x%s\n", chk_sum);        
}
//---------------------------------------------------
/**
 * @brief handle GPS GSV command
 *
 * @param 
 *    cmd GPS command
 */
static void handle_GPGSV(char *cmd) 
{
/* ptr */
char *sptr, *cptr;
/* satellites in view */
int sate_in_view = 0;
/* start sate */
static int start_sate = 1;
/* do message */
int num_of_msg, msg_num;
/* checksum */
char chk_sum[6];

    printf("GNSS Satellites in View (GSV)\n");

    /* get checksum */
    if((sptr = strrchr(cmd, '*'))){
        strcpy(chk_sum, sptr + 1);
        *sptr = '\0';
    }   
               
    /* get msg id */
    mystrtok(cmd);
    
    /* get number of mesages */
    if((sptr = mystrtok(NULL))){
        printf("\tNumber of Mesages: %s\n", sptr);
        num_of_msg = atoi(sptr);  
    }

    /* get Message Number */
    if((sptr = mystrtok(NULL))){
        printf("\tMessage Number: %s\n", sptr); 
        msg_num = atoi(sptr); 
        
        /* reset start satellites */
        if(msg_num == 1)
            start_sate = 1;     
    }

    /* get Satellites in View */
    if((sptr = mystrtok(NULL))){
        printf("\tSatellites in View: %s\n", sptr);
        sate_in_view = atoi(sptr);  
    }
    
    /* handle satellites */
    for(; start_sate<=sate_in_view; ++start_sate){
        /* get Satellite ID */
        if((sptr = mystrtok(NULL))){
            printf("\tSatellite %d (ID: %s)\n", start_sate, sptr);  
        }else break; /* no item */
        
        /* get Elevation */
        if((sptr = mystrtok(NULL))){
            printf("\tElevation: %s\n", sptr);  
        }        

        /* get Azimuth */
        if((sptr = mystrtok(NULL))){
            printf("\tAzimuth: %s\n", sptr);  
        }
        
        /* get SNR (C/No), check with checksum */
        if((sptr = mystrtok(NULL))){
            printf("\tSNR (C/No): %s\n", sptr);  
        }else{
            printf("\tSNR (C/No):\n");         
        }                        
    }
    
    /* show checksum */
    printf("\tChecksum: 0x%s\n", chk_sum);      
}
//---------------------------------------------------
/**
 * @brief handle GPS RMC command
 *
 * @param 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久久久久久久久久| 中文在线一区二区| 国产精品视频在线看| 午夜一区二区三区视频| 成人性生交大片免费看中文网站| 欧美久久久久久蜜桃| 国产精品素人视频| 激情深爱一区二区| 日韩欧美一卡二卡| 日韩影院免费视频| 欧美色视频在线观看| 国产精品不卡一区二区三区| 国产在线视视频有精品| 91麻豆精品国产91久久久使用方法 | 奇米四色…亚洲| 欧美性极品少妇| 亚洲精品乱码久久久久久久久| 成人国产视频在线观看| 国产午夜亚洲精品不卡| 九九在线精品视频| 日韩一区二区三区四区| 亚洲国产精品久久久久秋霞影院 | 欧美日韩一区不卡| 一区二区三区在线观看欧美| 波多野结衣的一区二区三区| 久久久国产午夜精品| 经典三级在线一区| 久久综合中文字幕| 国产精品一区二区久久不卡 | 精品国产在天天线2019| 日本视频在线一区| 日韩一区二区麻豆国产| 美女视频黄频大全不卡视频在线播放| 精品视频资源站| 日本不卡视频在线| 精品久久久久一区二区国产| 国产一区二区免费看| 久久蜜桃香蕉精品一区二区三区| 国产精品一区二区三区乱码| 日本一二三不卡| 色婷婷国产精品久久包臀| 亚洲免费看黄网站| 欧美怡红院视频| 美日韩黄色大片| 中文欧美字幕免费| 91小视频免费看| 天天综合色天天| 精品久久国产字幕高潮| 国产91精品免费| 亚洲自拍与偷拍| 欧美成人aa大片| 白白色亚洲国产精品| 一区二区不卡在线播放| 欧美一区二区精品久久911| 九九九久久久精品| 中文字幕一区在线观看视频| 色国产精品一区在线观看| 男女激情视频一区| 国产精品久久久久永久免费观看 | 播五月开心婷婷综合| 亚洲综合激情另类小说区| 日韩美一区二区三区| 成人av免费在线| 五月天激情小说综合| 国产蜜臀97一区二区三区| 在线观看欧美黄色| 国产一区二区在线观看免费 | 欧美三级蜜桃2在线观看| 老司机精品视频线观看86| 国产精品久久久久久亚洲毛片 | 91美女蜜桃在线| 麻豆成人久久精品二区三区小说| 国产精品久久毛片av大全日韩| 欧美日本在线播放| 国产不卡视频在线观看| 亚洲尤物在线视频观看| 久久久久久久久久久久久女国产乱| 欧美亚洲一区二区在线| 国产成人免费视| 三级成人在线视频| 亚洲日穴在线视频| 国产亚洲一本大道中文在线| 欧美日韩成人综合在线一区二区 | 欧美三级日韩三级| 不卡一区二区三区四区| 国产一级精品在线| 午夜精品爽啪视频| 日韩一区有码在线| 国产欧美视频在线观看| 日韩欧美不卡一区| 欧美日韩小视频| 色菇凉天天综合网| 成人国产一区二区三区精品| 国产一区二区在线视频| 免费观看91视频大全| 午夜私人影院久久久久| 一区二区三区国产豹纹内裤在线| 亚洲国产精品av| 久久综合狠狠综合久久综合88| 欧美三级电影精品| 欧美中文字幕一区| 色综合久久中文字幕| 成人av在线播放网址| 成人性视频网站| 成人sese在线| 不卡av电影在线播放| 成人免费毛片嘿嘿连载视频| 丰满少妇在线播放bd日韩电影| 韩国av一区二区三区四区| 久久国产精品免费| 久久精品国产久精国产| 久久99国产乱子伦精品免费| 久久国内精品视频| 狠狠久久亚洲欧美| 国产99久久久国产精品潘金网站| 国产精品影视在线| 国产91精品露脸国语对白| 不卡一区二区三区四区| av中文一区二区三区| 色综合天天天天做夜夜夜夜做| 91在线视频免费91| 色综合视频一区二区三区高清| 91蝌蚪porny九色| 欧美在线观看一区| 777亚洲妇女| 国产亚洲美州欧州综合国| 国产三级精品在线| 亚洲精品国产第一综合99久久| 亚洲第一狼人社区| 蜜桃视频一区二区三区在线观看| 狠狠色综合播放一区二区| 懂色av一区二区三区蜜臀| 97久久久精品综合88久久| 欧美影视一区在线| 日韩网站在线看片你懂的| 久久久精品国产免费观看同学| 成人免费在线视频观看| 亚洲国产中文字幕| 国产一区二区三区香蕉| 91视频观看免费| 欧美一区二区私人影院日本| 国产日韩三级在线| 亚洲国产欧美在线人成| 国产一区二区三区四区五区入口 | 蜜桃av噜噜一区| 丁香婷婷综合激情五月色| 欧美日韩色一区| 2欧美一区二区三区在线观看视频| 国产精品精品国产色婷婷| 午夜久久福利影院| 成人久久18免费网站麻豆 | 国产一区二区三区免费| 色狠狠一区二区| 久久九九全国免费| 午夜欧美视频在线观看| 成人久久18免费网站麻豆| 91精品国产综合久久精品麻豆| 国产情人综合久久777777| 亚洲电影你懂得| 97久久久精品综合88久久| 欧美mv日韩mv| 亚洲一二三专区| 99精品视频中文字幕| 精品av久久707| 亚洲高清免费一级二级三级| 日韩午夜三级在线| 亚洲r级在线视频| 亚洲第四色夜色| 欧美三日本三级三级在线播放| 欧美精品一区男女天堂| 一区二区三区欧美激情| 高清av一区二区| 日韩欧美综合在线| 亚洲成人av一区二区三区| 成人av在线一区二区| 亚洲欧美日韩成人高清在线一区| 亚洲国产精品天堂| 久88久久88久久久| 99v久久综合狠狠综合久久| 精品视频一区三区九区| 欧美狂野另类xxxxoooo| 久久蜜桃av一区二区天堂| 一区二区三区日韩| 久久99日本精品| 一本久道久久综合中文字幕| 欧美一级在线观看| 一区在线播放视频| 美女视频黄 久久| 99视频热这里只有精品免费| 91精品欧美久久久久久动漫| 国产精品美女久久久久久久| 亚洲国产你懂的| 成人h动漫精品| 精品日产卡一卡二卡麻豆| 亚洲男人的天堂av| 激情亚洲综合在线| 欧美视频日韩视频在线观看| 久久久久久**毛片大全| 日韩国产精品久久久久久亚洲| av成人免费在线|