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

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

?? nov.c

?? GPS_OEM程序用于接收、辨別、發送和校驗GPS信息。支持nov協議
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*****************************************************************
*                                                                *
*                  NAV Technology Co., Ltd.                      *
*                      Copyright 2005                            *
*                                                                *
*      Copying is prohibited except by written permission.       *
*                                                                *
******************************************************************/
/*Header file*/

#include "nvdef.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "gnss.h"
#include "eph.h"
#include "nfunc.h"
#include "mfunc.h"

#if(PC_SIM==1)
    #include <string.h>
#else
    #include "uart.h"
#endif

#define NOV_DEF
    #include "nov.h"
#undef NOV_DEF

//Declare the States
static READ_STATE  GNState[2] = {STARTUP, STARTUP};

/**********************************************************************
**
** Function: Data Command for request the Ephermeris
**
**
** Global Input: 
**                CH_GPS1_UART
**
** Global Output: 
**                None
**            
***********************************************************************/
void rqtEphem
    (
    int COMPort
    )
{
    unsigned char buf[] = {"log rawephemb onchanged\r\n  "}; 

#if(PC_SIM==0)
    charSend(COMPort, buf, 25); 
#endif

}

/**********************************************************************
**
** Function: NOV OEM GPS Initialization
**
**
** Global Input: 
**                CH_GPS1_UART
**
** Global Output: 
**                None
**            
***********************************************************************/
void initNOV
    (
    int COMPort
    )
{
	unsigned char setUnlogAll[] = {"unlogall\r\n   "};       
    unsigned char setClockEnable[] = {"clockadjust enable\r\n   "};
    unsigned char rqstEph[] = {"log rawephemb onchanged\r\n   "}; 
    unsigned char rqstRaw[] = {"log rangecmpb ontime 0.20 0\r\n   "}; 
    unsigned char rqstSlv[] = {"log bestxyzb ontime 0.20 0.1\r\n   "}; 

    // Initalize the port @ 57600 baud
#if(PC_SIM==0)
    initUART(COMPort, 1); 

    charSend(COMPort, setUnlogAll, 12); 
    charSend(COMPort, setClockEnable, 22); 
    charSend(COMPort, rqstEph, 27); 
    charSend(COMPort, rqstSlv, 33); 
    charSend(COMPort, rqstRaw, 31); 
#endif
}

/**********************************************************************
**
** Function: Read NOV Raw Measurements
**
**
** Global Input: 
**                None
**
** Global Output: 
**                None
**            
***********************************************************************/
#define MAX_VALUE       (8388608.0)
static void readRawMeas
    (
    unsigned char * Buf,                // Pointer of the buffer
    GNSS_MEAS_TYPE *Gmeas,              // Pointer of Gnss measurements
    GNSS_EPHEM_TYPE *Ephem,             // Pointer of Ephemeris
    int rcv
    )
{
    unsigned char slip_cnt, chr;
    int prn, i, numsats, snr, tmp;
    double code, carrier, dopp, lambda, adr_rolls;
    float lockTime, *L1LockTime;
    double *old_carr1;

    static float L1LockT[2*MAX_SATS_NUM];
    static double oldCarr1[2*MAX_SATS_NUM];
#if(DUAL_FREQ==1)
    float  *L2LockTime;
    double  *old_carr2;
    static float L2LockT[2*MAX_SATS_NUM];
    static double  oldCarr2[2*MAX_SATS_NUM];
#endif

    //// Set index
    if(rcv==0)
        i = 0;
    else
        i = MAX_SATS_NUM;

    //// Set pointer
    L1LockTime = &L1LockT[i];
    old_carr1 = &oldCarr1[i];
#if(DUAL_FREQ==1)
    L2LockTime = &L2LockT[i];
    old_carr2 = &oldCarr2[i];
#endif

    //// Get the satellite numbers
    Gmeas->Num_Sats = 0;
    numsats = (int)(Buf[0]);

#if(PC_SIM==1)                        
    fprintf(OUTH3, "%d\t", numsats);
#endif

    for(i=0; i<numsats && i<20; i++)
    {    
        //// Measurement effective check
        chr = (Buf[5+i*24]&0x14);
        if(chr == 0x14)
        {        
            if((Buf[6+i*24]&0x60) == 0)
            {
                // Buffer PRN of SVs
                Gmeas->PRN[Gmeas->Num_Sats++] = (Buf[21+i*24] & 0x1f);                
                prn = (int)(Buf[21+i*24] & 0x1f);                
                lambda = LAMBDA1;          
            }
            else if((Buf[6+i*24]&0x60) == 0x20)
                lambda = LAMBDA2; 
            else
                continue;         
                                                                
            /// Raw code decoding           
            code =  (double)(Buf[11+i*24])/2048.0 + (double)(Buf[12+i*24])/8.0 + (double)(Buf[13+i*24])*32.0 + 
                    (double)(Buf[14+i*24])*8192.0 + (double)(Buf[15+i*24])*2097152.0;
                       
            /// Carrier measurements decoding    
            tmp = SumOr(&Buf[16+24*i], 4);        
            carrier = (double)(tmp)/256.0;    
            adr_rolls = floor((code/lambda + carrier) / MAX_VALUE + 0.5);        

            carrier -= MAX_VALUE * adr_rolls;         
            carrier *= (-lambda);
            
            /// Signal Noise Ratio        
            snr = (Buf[24+i*24]&0xe0)/32 + (Buf[25+i*24]&0x03)*8 + 20;
            
            // Lock Time decoding        
            lockTime = (float)((double)(Buf[22+i*24])/32.0 + (double)(Buf[23+i*24]) * 8.0 + (double)(Buf[24+i*24]&0x1f) * 2048.0);
    
            /// Slip count
            if(lambda == LAMBDA1)
            {
                if(lockTime>L1LockTime[prn])
                    slip_cnt = Gmeas->L1Meas[prn].Slip_Cnt;
                else
                    slip_cnt = Gmeas->L1Meas[prn].Slip_Cnt+1;
                // Save for future epoch
                L1LockTime[prn] = lockTime;

                // Apply delta range
                dopp = carrier - old_carr1[prn];
                // Save for the next epoch
                old_carr1[prn] = carrier;
                
                if(Gmeas->L1Meas[prn].Count<1.0)
                    carrier = old_carr1[prn] + floor((code-old_carr1[prn])/LAMBDA1+0.5) * LAMBDA1;
                else
                    // Final Inetgrated Carrier Measurements in Meters
                    carrier = Gmeas->L1Meas[prn].Carrier + dopp;

                // measurement validation
                rawMeasValid( prn, snr, code, carrier, Gmeas->Time, Gmeas->LastTime,
                              0.05, slip_cnt, TRUE, TRUE, &Gmeas->L1Meas[prn], Ephem );
            }
#if(DUAL_FREQ==1)
            else 
            {
                if(lockTime>L2LockTime[prn])
                    slip_cnt = Gmeas->L2Meas[prn].Slip_Cnt;
                else
                    slip_cnt = Gmeas->L2Meas[prn].Slip_Cnt+1;
                
                L2LockTime[prn] = lockTime;

                // Apply delta range
                dopp = carrier - old_carr2[prn];
                // Save for the next epoch
                old_carr2[prn] = carrier;

                if(Gmeas->L2Meas[prn].Count<1.0)
                    carrier = old_carr2[prn] + floor((code-old_carr2[prn])/LAMBDA2+0.5) * LAMBDA2;
                else
                    // Final Inetgrated Carrier Measurements in Meters
                    carrier = Gmeas->L2Meas[prn].Carrier + dopp;
                
                // measurement validation
                rawMeasValid( prn, snr, code, carrier, Gmeas->Time, Gmeas->LastTime,
                              0.05, slip_cnt, TRUE, TRUE, &Gmeas->L2Meas[prn], Ephem );
            }
#endif
        }
        else
        {
            if((Buf[6+i*24]&0x60) == 0)
            {
                // Set the invalid FLAG of Both L1
                Gmeas->L1Meas[prn].Code_Valid = FALSE;
                Gmeas->L1Meas[prn].Phase_Valid = FALSE;
            }

#if(DUAL_FREQ==1)
            // Set the invalid FLAG of Both L2
            Gmeas->L2Meas[prn].Code_Valid = FALSE;
            Gmeas->L2Meas[prn].Phase_Valid = FALSE;
#endif
        }
    }
    
    // Save the last time
    if(Gmeas->Num_Sats>0)
       Gmeas->LastTime =  Gmeas->Time;
}


/**********************************************************************
**
** Function: Read NOV GPS PVT Solution Measurement
**
**
** Global Input: 
**                None
**
** Global Output: 
**                None
**            
***********************************************************************/
void readSolution
    (
    unsigned char * Buf,                // Pointer of the buffer
    GNSS_SOLUTION_TYPE *Solv            // Pointer of Gnss Solution
    )
{
    int i, j;
    double vel_xyz[3];
    unsigned char sol_status, pos_type;        
    
    Solv->numSats = (int)(Buf[105]&0x1f);
    
    sol_status = Buf[0];
    pos_type = Buf[4];

    Solv->mode = MODE_NONE;        
    
    if(sol_status==0)
    {
        if(pos_type==16)
            Solv->mode = MODE_STANDALONE;        
        else if((pos_type>=17) && (pos_type<=20))
            Solv->mode = MODE_CD;        
        else if((pos_type>=32) && (pos_type<=34))
            Solv->mode = MODE_NF;
        else if((pos_type>=48) && (pos_type<=50))
            Solv->mode = MODE_NI;
    }
        
#if(PC_SIM==1)                        
    fprintf(OUTH3, "%d\t%d\t", Solv->numSats, Solv->mode);
#endif

    for(i=0;i<3;i++)
    {
        //Solv->xyz[i] = *((double *)(Buf+8+i*8));
        memcpy(Solv->xyz+i, Buf+8+i*8, sizeof(double));
        //Solv->vel_xyz[i] = *((double *)(Buf+52+i*8));
        memcpy(vel_xyz+i, Buf+52+i*8, sizeof(double));         
    }

    //// Transition from ECEF to LLH
    calc_xyz2LLH_Rt2e(Solv->xyz, Solv->llh, Solv->Rt2e, Solv->Sl2t);

    //// Solution on each axis
    Solv->speed = 0.0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡| 色婷婷久久久亚洲一区二区三区 | 亚洲第一会所有码转帖| 国产精品久久精品日日| 国产欧美精品在线观看| 国产亚洲精品7777| 国产亚洲欧洲997久久综合| 久久综合九色综合久久久精品综合| 欧美一区二区三区四区五区| 欧美日韩不卡视频| 欧美福利视频一区| 日韩欧美精品在线| 精品成人一区二区三区四区| 亚洲精品一区二区三区蜜桃下载 | 亚洲一区二区三区四区中文字幕 | 国产大陆a不卡| 成人午夜电影久久影院| 成人动漫中文字幕| 91日韩在线专区| 欧美精品国产精品| 日韩欧美国产电影| 中文字幕免费观看一区| 亚洲美女视频一区| 婷婷综合在线观看| 久久97超碰色| 大陆成人av片| 欧美色网站导航| 日韩午夜在线影院| 国产精品萝li| 亚洲gay无套男同| 狠狠色丁香久久婷婷综| 国产黄色成人av| 91丨porny丨蝌蚪视频| 欧洲一区在线电影| 欧美电影免费观看完整版| 国产日韩欧美一区二区三区乱码 | 亚洲欧美另类久久久精品2019| 怡红院av一区二区三区| 日韩av午夜在线观看| 国产精品亚洲视频| 91麻豆精品国产91久久久久久| 91麻豆精品国产91久久久久| 久久久久9999亚洲精品| 一区二区三区四区在线免费观看 | 欧美三级欧美一级| 久久品道一品道久久精品| 亚洲免费av观看| 狠狠色丁香久久婷婷综合丁香| 99久久夜色精品国产网站| 欧美精品黑人性xxxx| 中文欧美字幕免费| 日本中文字幕一区| 91欧美激情一区二区三区成人| 91精品欧美一区二区三区综合在 | 国产亚洲1区2区3区| 亚洲一区二区在线观看视频| 国产在线不卡一区| 在线免费观看日本一区| 欧美激情综合五月色丁香| 日韩影院免费视频| jlzzjlzz欧美大全| 26uuu成人网一区二区三区| 一区二区三区91| 粉嫩aⅴ一区二区三区四区| 日韩一区二区三区观看| 亚洲精品老司机| 国产a区久久久| 欧美xxxxx裸体时装秀| 一区二区三区免费观看| 国产精品资源在线看| 欧美日本免费一区二区三区| |精品福利一区二区三区| 精品一区二区在线播放| 欧美日本一道本| 亚洲一区二区三区不卡国产欧美| 国产suv精品一区二区6| 日韩精品中文字幕在线一区| 性做久久久久久| 色偷偷久久人人79超碰人人澡| 久久久精品tv| 国内不卡的二区三区中文字幕| 欧美日韩精品系列| 一区二区三区在线影院| 97aⅴ精品视频一二三区| 欧美国产禁国产网站cc| 久久电影网站中文字幕| 69av一区二区三区| 亚洲成国产人片在线观看| 91看片淫黄大片一级| 亚洲欧美中日韩| 成人免费看的视频| 国产三级一区二区| 国产精品一区一区| 久久久噜噜噜久久中文字幕色伊伊 | 国产欧美日韩激情| 国产一区二区三区蝌蚪| 亚洲精品一区二区精华| 免费看欧美美女黄的网站| 91精品国产综合久久久蜜臀图片| 亚洲国产欧美一区二区三区丁香婷| 色婷婷久久久久swag精品| 亚洲视频精选在线| 91视频一区二区三区| 亚洲日本乱码在线观看| 精品国产乱码久久久久久1区2区| 日韩激情一区二区| 欧美一区二区三区系列电影| 麻豆91在线看| 久久在线观看免费| 国产精品66部| 中文字幕一区二区三区精华液| 99久久婷婷国产精品综合| 亚洲嫩草精品久久| 欧美视频中文字幕| 日本成人在线看| 26uuu亚洲| 成人三级伦理片| 亚洲狼人国产精品| 欧美日韩国产大片| 免费人成网站在线观看欧美高清| 精品久久久久香蕉网| 粉嫩高潮美女一区二区三区| 亚洲视频狠狠干| 6080亚洲精品一区二区| 久99久精品视频免费观看| 欧美国产日本韩| 欧美性猛交一区二区三区精品| 婷婷成人综合网| 久久综合久久99| 91啪亚洲精品| 日本中文字幕不卡| 欧美国产一区二区在线观看| 99re热这里只有精品免费视频| 亚洲综合区在线| 日韩精品中文字幕一区二区三区| 国产精品综合视频| 一区二区国产视频| 精品女同一区二区| www.日本不卡| 丝袜美腿亚洲综合| 国产日韩在线不卡| 欧美色视频在线| 国产精品一区二区你懂的| 一区二区三区国产豹纹内裤在线 | 亚洲福利一区二区| 精品99一区二区| 色综合天天在线| 日韩成人精品视频| 国产精品短视频| 日韩三级在线免费观看| aaa欧美色吧激情视频| 日韩福利视频网| 国产精品国产馆在线真实露脸| 欧美日韩国产大片| 成人av免费网站| 九九国产精品视频| 亚洲美女淫视频| 久久先锋影音av| 欧美日韩视频在线第一区| 国产成人综合在线| 免费成人你懂的| 一区二区三区久久久| 欧美经典一区二区三区| 6080亚洲精品一区二区| 91在线云播放| 国产一区二区三区蝌蚪| 日日夜夜免费精品视频| 成人欧美一区二区三区小说| 精品久久久久久久久久久久久久久久久| 91免费版在线看| 国产福利一区二区三区视频在线| 午夜久久久久久久久| 1区2区3区欧美| 国产欧美一区二区精品忘忧草 | 久久精品亚洲乱码伦伦中文| 在线播放视频一区| 91丨国产丨九色丨pron| 日本久久一区二区| 高清视频一区二区| 国产在线精品不卡| 秋霞午夜鲁丝一区二区老狼| 一区二区三区**美女毛片| 国产精品国产三级国产aⅴ原创| 2020国产精品| 欧美日本韩国一区二区三区视频| 91小视频免费看| bt欧美亚洲午夜电影天堂| 国产精品夜夜嗨| 韩国三级在线一区| 日韩不卡一区二区| 亚洲.国产.中文慕字在线| 亚洲黄色片在线观看| √…a在线天堂一区| 国产精品三级在线观看| 欧美经典三级视频一区二区三区| 日韩精品最新网址| 日韩欧美一区在线观看| 欧美一级国产精品| 欧美一级高清片| 日韩精品专区在线影院重磅|