⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispfun.c

📁 GPS导航定位程序
💻 C
📖 第 1 页 / 共 4 页
字号:
                    sprintf(msg,"SV Is Temporarily Out");
                    break;
                case 29:
                    sprintf(msg,"SV Will Be Tempoarily Out");
                    break;
                case 30:
                    sprintf(msg,"Spare");
                    break;
                case 31:    
                    sprintf(msg,"Combination Of Problems");
                    break;
                default:
                    sprintf(msg,"Unrecognised Error Number");
            }
            sprintf(buff,"Signal Health Status is: %s",msg);
            OutputString(3,18,buff);
        }
    }
}

/****************************************************************************    
* Function: void F12_Display(void)
*
* The display obtained by pressing key F12.
*
* Input: None.
*
* Output: None.
*
* Return Value: None.
****************************************************************************/
void F12_Display(void)
{
#define MaxEphPage 35

    int year,month,day,hour,minute;
    int prn,nav_data,signal_health;    
    int prnstart,prnstop,rowoffset;

    double second;

    char datetime[20],buff[90],tmpbuff[90];

    ephstruc E;

    if(EphPage<0)
        EphPage=MaxEphPage;
    else if(EphPage>MaxEphPage)
        EphPage=0;

    if(EphPage==0 || EphPage==1 || EphPage==2 || EphPage==3)
    {
        OutputString(3,6,"SATELLITE EPHEMERIS STATUS                "
                   "         PageUp/PageDown to Scroll");
        sprintf(buff,"PRN      Reference Time        Validity");
        OutputString(3,8,buff);                           

        switch(EphPage)
        {
            case 0:
                prnstart = 1;
                prnstop = 10;
                rowoffset = 0;
                break;
            case 1:
                prnstart = 10;
                prnstop = 19;
                rowoffset = 9;
                break;
            case 2:
                prnstart = 19;
                prnstop = 28;
                rowoffset = 18;
                break;
            case 3:
                prnstart = 28;
                prnstop = 33;
                rowoffset = 27;
                break;
        }

        for(prn=prnstart;prn<prnstop;prn++)
        {
            PROTECT++;  /* Indivisible access to the SV's almanac entry */
            E = ephs[prn-1];
            PROTECT--;

            GpsTimeToGregorianDate(E.toewk,E.toe,
                                   &year,&month,&day,&hour,&minute,&second);
            sprintf(datetime,"%2.2d:%2.2d:%2.2d %2.2d/%2.2d/%4.4d",
                    hour,minute,(int)second,day,month,year);

            switch(E.vflg)
            {
                case 0:
                    sprintf(buff," %2.2d    %s      Invalid    ",prn,datetime);
                    break;                                  
                case 1:
                    sprintf(buff," %2.2d    %s       Valid     ",prn,datetime);
                    break;
                default:
                    sprintf(buff," %2.2d    %s     Invalid Code",prn,
                                                                   datetime);
                    break;
            }
            OutputString(3,9+prn-rowoffset,buff);
        }
    }
    else
    {
        PROTECT++;
        E = ephs[EphPage-4];
        PROTECT--;
        
        GpsTimeToGregorianDate(E.toewk,E.toe,
                               &year,&month,&day,&hour,&minute,&second);
        sprintf(datetime,"%2.2d:%2.2d:%2.2d %2.2d/%2.2d/%4.4d",
                hour,minute,(int)second,day,month,year);

        sprintf(buff,"Satellite Ephemeris Status for PRN%2.2d         "
                 "   PageUp/PageDown to Scroll",EphPage-3);
        OutputString(3,6,buff);

        if(E.vflg==0)
        {
            sprintf(buff,"No Valid Ephemeris");
            OutputString(3,8,buff);
        }
        else
        {
            sprintf(buff,"Ephemeris Reference Time = %s, "
                         "Week Number = %4.4d",
                         datetime,E.wkn);
            OutputString(3,8,buff);

            nav_data = (E.s1hlth>>5)&0x0001;
            if(nav_data)
                sprintf(tmpbuff,"Some or All Navigation Data is Bad");
            else
                sprintf(tmpbuff,"All Navigation Data is Good");

            signal_health = (E.s1hlth)&0x001F;
            switch(signal_health)
            {
                case 0:
                    sprintf(buff,"%s, All Signals OK",tmpbuff);
                    break;
                case 1:
                    sprintf(buff,"%s, All Signal Weak",tmpbuff);
                    break;
                case 2:
                    sprintf(buff,"%s, All Signal Dead",tmpbuff);
                    break;
                case 3:
                    sprintf(buff,
                         "%s, All Signals Have No Data Modulation",tmpbuff);
                    break;
                case 4:
                    sprintf(buff,"%s, L1 P Signal Weak",tmpbuff);
                    break;
                case 5:
                    sprintf(buff,"%s, L1 P Signal Dead",tmpbuff);
                    break;
                case 6:
                    sprintf(buff,
                         "%s, L1 P Signal Has No Data Modulation",tmpbuff);
                    break;
                case 7:
                    sprintf(buff,"%s, L2 P Signal Weak",tmpbuff);
                    break;
                case 8:
                    sprintf(buff,"%s, L2 P Signal Dead",tmpbuff);
                    break;
                case 9:
                    sprintf(buff,
                         "%s, L2 P Signal Has No Data Modulation",tmpbuff);
                    break;
                case 10:
                    sprintf(buff,"%s, L1 C Signal Weak",tmpbuff);
                    break;
                case 11:
                    sprintf(buff,"%s, L1 C Signal Dead",tmpbuff);
                    break;
                case 12:
                    sprintf(buff,
                         "%s, L1 C Signal Has No Data Modulation",tmpbuff);
                    break;
                case 13:    
                    sprintf(buff,"%s, L2 C Signal Weak",tmpbuff);
                    break;
                case 14:
                    sprintf(buff,"%s, L2 C Signal Dead",tmpbuff);
                    break;
                case 15:
                    sprintf(buff,
                         "%s, L2 C Signal Has No Data Modulation",tmpbuff);
                    break;
                case 16:
                    sprintf(buff,"%s, L1 & L2 P Signal Weak",tmpbuff);
                    break;
                case 17:
                    sprintf(buff,"%s, L1 & L2 P Signal Dead",tmpbuff);
                    break;
                case 18:
                    sprintf(buff,  
                    "%s, L1 & L2 P Signal Has No Data Modulation",tmpbuff);
                    break;
                case 19:
                    sprintf(buff,"%s, L2 & L2 C Signal Weak",tmpbuff);
                    break;
                case 20:
                    sprintf(buff,"%s, L2 & L2 C Signal Dead",tmpbuff);
                    break;
                case 21:
                    sprintf(buff,  
                    "%s, L2 & L2 C Signal Has No Data Modulation",tmpbuff);
                    break;
                case 22:    
                    sprintf(buff,"%s, L1 Signal Weak",tmpbuff);
                    break;
                case 23:
                    sprintf(buff,"%s, L1 Signal Dead",tmpbuff);
                    break;
                case 24:
                    sprintf(buff,
                         "%s, L1 Signal Has No Data Modulation",tmpbuff);
                    break;
                case 25:
                    sprintf(buff,"%s, L2 Signal Weak",tmpbuff);
                    break;
                case 26:
                    sprintf(buff,"%s, L2 Signal Dead",tmpbuff);
                    break;
                case 27:
                    sprintf(buff,
                         "%s, L2 Signal Has No Data Modulation",tmpbuff);
                    break;
                case 28:
                    sprintf(buff,"%s, SV Is Temporarily Out",tmpbuff);
                    break;
                case 29:
                    sprintf(buff,"%s, SV Will Be Tempoarily Out",tmpbuff);
                    break;
                case 30:
                    sprintf(buff,"%s, Spare",tmpbuff);
                    break;
                case 31:    
                    sprintf(buff,"%s, Combination Of Problems",tmpbuff);
                    break;
                default:
                    sprintf(buff,"%s, Unrecognised Error Number",tmpbuff);
            }
            OutputString(3,9,buff);

            switch(E.codeL2)
            {
                case 0:
                    sprintf(tmpbuff,"Code on L2 Channel = Reserved");
                    break;
                case 1:
                    sprintf(tmpbuff,"Code on L2 Channel = P-Code On");
                    break;
                case 2:
                    sprintf(tmpbuff,"Code on L2 Channel = C/A Code On");
                    break;
                default:
                    sprintf(tmpbuff,
                             "Code on L2 Channel = Unrecognised Code");
                    break;
            }

            switch(E.L2Pdata)
            {
                case 0:
                    sprintf(buff,"%s, L2 P Code Data = On",tmpbuff);
                    break;
                case 1:
                    sprintf(buff,"%s, L2 P Code Data = Off",tmpbuff);
                    break;
                default:
                    sprintf(buff,"%s, L2 P Code Data = Unrecognised Code",
                            tmpbuff);
                    break;
            }
            OutputString(3,10,buff);
            
            switch(E.fti)
            {
                case 0:
                    sprintf(tmpbuff,"Fit Interval = 4 hours");
                    break;
                case 1:
                    sprintf(tmpbuff,"Fit Interval = 6 hours");
                    break;
                default:
                    sprintf(tmpbuff,"Fit Interval = Unrecognised Code");
                    break;
            }
            sprintf(buff,"%s, Group Delay  = %11.6e s",tmpbuff,E.tgd);
            OutputString(3,11,buff);

            GpsTimeToGregorianDate(E.toewk,E.toe,
                                   &year,&month,&day,&hour,&minute,&second);
            sprintf(datetime,"%2.2d:%2.2d:%2.2d %2.2d/%2.2d/%4.4d",
                    hour,minute,(int)second,day,month,year);
            sprintf(buff,"Clock Correction Time = %s, "
                         "af0 = %11.6e s",
                         datetime,E.af0);
            OutputString(3,12,buff);

            sprintf(buff,"af1  = %11.6e s/s, "
                         "af2 = %11.6e s/s2",E.af1,E.af2);
            OutputString(3,13,buff);

            sprintf(buff,"Semi-Major Axis = %9.3lf km, "
                         "Eccentricity = %8.6lf",E.a/1000.0,E.ecc);
            OutputString(3,14,buff);

            sprintf(buff,"Mean Anom = %11.6lf %c, "
                         "Delta n = %11.6e %c, "
                         "Perigee = %11.6lf %c",
                         E.m0*R2D,DEGREE,E.deltan*R2D,DEGREE,
                         E.olc*R2D,DEGREE);
            OutputString(3,15,buff);

            sprintf(buff,"Inclination = %11.6lf %c, "
                         "Inclination Dot= %11.6e %c",
                         E.in0*R2D,DEGREE,E.idot*R2D,DEGREE);
            OutputString(3,16,buff);

            sprintf(buff,"Right Ascension = %11.6lf %c, "
                         "Right Ascension Dot = %11.6e %c",
                         E.om0*R2D,DEGREE,E.omd*R2D,DEGREE);
            OutputString(3,17,buff);

            sprintf(buff,"Crs=%9.4e m, Cuc=%9.4e %c, Crc=%9.4e m, "
                         "Cic=%9.4e %c",
                         E.crs,E.cuc*R2D,DEGREE,E.crc,E.cic*R2D,DEGREE);
            OutputString(3,18,buff);
        } 
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -