• GPS数据解析

    #ifndef __GPS_H__
    #define __GPS_H__
    
    #include "common.h"
    
    typedef struct
    {
    u8 UTCDateTime[6]; //YMDHMS
    u8 Status; //A/V
    u8 Latitude[9]; //ddmm.mmmm
    u8 NS; //N/S
    u8 Longitude[10]; //dddmm.mmmm
    u8 EW; //E/W
    u8 Speed[5]; //速率000.0~999.9节
    u8 Course[5]; //航向000.0~359.9度
    }stru_GPSRMC;
    
    typedef struct
    {
    //    u8 UTCTime[10];    //hhmmss.mmm
    //    u8 Latitude[9];    //ddmm.mmmm
    //    u8 NS;        //N/S
    //    u8 Longitude[10];    //dddmm.mmmm
    //    u8 EW;        //E/W
        u8 PositionFix;    //0,1,2,6
        u8 SatUsed[2];    //00~12
    //    u8 HDOP[4];        //0.5~99.9
        u8 Altitude[7];    //-9999.9~99999.9
    }stru_GPSGGA;
    
    typedef struct
    {
        u8 Mode;        //A/M
        u8 Mode2;    //0,1,2,3
        u8 SatUsedList[12];    
        u8 PDOP[4];
        u8 HDOP[4];
        u8 VDOP[4];
    }stru_GPSGSA;
    
    typedef struct
    {
    u8 SatID;
    //    u8 Elevation[2];//0-90 degree
    //    u8 Azimuth[3]; //0-359 degree
    u8 SNR; //0-99 dbHz
    }stru_SatInfo;
    
    typedef struct
    {
        u8 SatInView;
        stru_SatInfo SatInfo[12];
    }stru_GPSGSV;
    
    #define NMEA_NULL    0x00            //GPS语句类型
    #define NMEA_GPGGA    0x01
    #define NMEA_GPGSA    0x02
    #define NMEA_GPGSV    0x04
    #define NMEA_GPRMC    0x08
    
    void GPS(void);
    void ShowLongitude(u8,u8);
    void ShowLatitude(u8,u8);
    void ShowGPSTime(u8,u8);
    void GPSSateDataInit(void);
    bit ReciveOK(void);
    void ShowSatSNR(u8,u8);


    //-------------------------------------------------------
    //GPS 解析模块 
    //--------------------------------------------------------- 
    
    #include "GPS.H"
    #include "S1D15E06.h"
    
    static u8 NMEA_CMD=NMEA_NULL;         //NMEA 语句
    static u8 NMEA_CMD_Buff[]="$GPxxx,"; //NMEA 语句类型缓存
    static u8 NMEA_CMD_Index=0;         //读取 CMD字符的个数
    static bit NMEA_CMD_Parsered=0;        //CMD类型解析完毕
    static u8 NMEA_DAT_Block=0;         //NMEA 数据字段号 从0开始
    static u8 NMEA_DAT_BlockIndex=0;     //NMEA 数据每个字段内字符索引 从0开始
    static bit NMEA_CMD_Start=0;         //NMEA 语句开始. 检测到 $ 时置1
    static bit ReciveFlag=0;             //数据接收完成. 最后一条 GPRMC 语句发送完毕置1,
    
    static u8 ucTempA=0;                 //存储解析两位数字用的的十位临时变量
    static u8 SateInfoIndex=0;            //
    //static u8 ucTemp[5];
    
    stru_GPSRMC xdata GPS_RMC_Data;
    stru_GPSGGA xdata GPS_GGA_Data;
    stru_GPSGSA xdata GPS_GSA_Data;
    stru_GPSGSV xdata GPS_GSV_Data;
    
    
    void GPSSateDataInit(void)
    {    
        u8 i;
        for(i=0;i<12;i++)
        {
            GPS_GSV_Data.SatInfo[i].SatID=0x00;
            GPS_GSA_Data.HDOP[0]=0x01;
            GPS_GSA_Data.HDOP[1]=0x01;
            GPS_GSA_Data.HDOP[2]=0x01;
            GPS_GSA_Data.HDOP[3]=0x01;
        }
    }
    
    void ShowGPSTime(u8 ucLX,u8 ucLY)
    {
        GPS_RMC_Data.UTCDateTime[3]+=8;
        if (GPS_RMC_Data.UTCDateTime[3]>23)
        {
            GPS_RMC_Data.UTCDateTime[3]-=24; //Hour
            GPS_RMC_Data.UTCDateTime[2]++; //Day
            if (((GPS_RMC_Data.UTCDateTime[1]==1)||\
                 (GPS_RMC_Data.UTCDateTime[1]==3)||\
                 (GPS_RMC_Data.UTCDateTime[1]==5)||\
                 (GPS_RMC_Data.UTCDateTime[1]==7)||\
                 (GPS_RMC_Data.UTCDateTime[1]==8)||\
                 (GPS_RMC_Data.UTCDateTime[1]==10)||\
                 (GPS_RMC_Data.UTCDateTime[1]==12))&&\
                 (GPS_RMC_Data.UTCDateTime[2]>31))
            {
                GPS_RMC_Data.UTCDateTime[2]=1;//Day
                GPS_RMC_Data.UTCDateTime[1]++;//Month
            }
            if (((GPS_RMC_Data.UTCDateTime[1]==4)||\
                 (GPS_RMC_Data.UTCDateTime[1]==6)||\
                 (GPS_RMC_Data.UTCDateTime[1]==9)||\
                 (GPS_RMC_Data.UTCDateTime[1]==11))&&\
                 (GPS_RMC_Data.UTCDateTime[2]>30))
            {
                GPS_RMC_Data.UTCDateTime[2]=1;
                GPS_RMC_Data.UTCDateTime[1]++;
            }
            if ((GPS_RMC_Data.UTCDateTime[1]==2)&&(GPS_RMC_Data.UTCDateTime[2]>28))
            {
                GPS_RMC_Data.UTCDateTime[2]=1;
                GPS_RMC_Data.UTCDateTime[1]++;
            }
    
            if(GPS_RMC_Data.UTCDateTime[1]>12)
            {
                GPS_RMC_Data.UTCDateTime[1]=1;
                GPS_RMC_Data.UTCDateTime[0]++;
            }
        }
        LCD_SetLocation(ucLX,ucLY);
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[0]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[0]%10+'0');
        LCD_PutChar('/');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[1]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[1]%10+'0');
        LCD_PutChar('/');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[2]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[2]%10+'0');
        LCD_PutChar(' ');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[3]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[3]%10+'0');
        LCD_PutChar(':');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[4]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[4]%10+'0');
        LCD_PutChar(':');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[5]/10+'0');
        LCD_PutChar(GPS_RMC_Data.UTCDateTime[5]%10+'0');
    }
    
    
    void ShowLatitude(u8 ucX,u8 ucY) // N dd'mm'ss.ssss
    {
        unsigned long s;
    
        LCD_SetLocation(ucX,ucY);
        LCD_PutChar(GPS_RMC_Data.NS);             //北纬南纬标志
        LCD_PutChar(' ');
        LCD_PutChar(GPS_RMC_Data.Latitude[0]);     //度, 直接提取
        LCD_PutChar(GPS_RMC_Data.Latitude[1]);
        LCD_PutChar(0x02);                         //度(°)符号
        LCD_PutChar(GPS_RMC_Data.Latitude[2]);     //分, 直接提取
        LCD_PutChar(GPS_RMC_Data.Latitude[3]);
    
        //直接提取后四位分并扩大10000倍为整数存于Long型, 避免小数运算
        s=(GPS_RMC_Data.Latitude[5]-'0')*1000+\
            (GPS_RMC_Data.Latitude[6]-'0')*100+\
            (GPS_RMC_Data.Latitude[7]-'0')*10+\
            (GPS_RMC_Data.Latitude[8]-'0');
    
        s*=60;             //转换成单位 秒(")
    
        LCD_PutChar('\'');
        LCD_PutChar(s/100000+'0');
        s=s%100000;
        LCD_PutChar(s/10000+'0');
        s=s%10000;
        LCD_PutChar('.');
        LCD_PutChar(s/1000+'0');
        s=s%1000;
        LCD_PutChar(s/100+'0');
        s=s%100;
        LCD_PutChar(s/10+'0');
        s=s%10;
        LCD_PutChar(s+'0');
        LCD_PutChar('"');
    }
    
    
    void ShowLongitude(u8 ucX,u8 ucY)
    {
        unsigned long s;
    
        LCD_SetLocation(ucX,ucY);
        LCD_PutChar(GPS_RMC_Data.EW);
        LCD_PutChar(GPS_RMC_Data.Longitude[0]);
        LCD_PutChar(GPS_RMC_Data.Longitude[1]);
        LCD_PutChar(GPS_RMC_Data.Longitude[2]);
        LCD_PutChar(0x02);
        LCD_PutChar(GPS_RMC_Data.Longitude[3]);
        LCD_PutChar(GPS_RMC_Data.Longitude[4]);
        s=(GPS_RMC_Data.Longitude[6]-'0')*1000+\
            (GPS_RMC_Data.Longitude[7]-'0')*100+\
            (GPS_RMC_Data.Longitude[8]-'0')*10+\
            (GPS_RMC_Data.Longitude[9]-'0');
        s*=60;
        LCD_PutChar('\'');
        LCD_PutChar(s/100000+'0');
        s=s%100000;
        LCD_PutChar(s/10000+'0');
        LCD_PutChar('.');
        s=s%10000;
        LCD_PutChar(s/1000+'0');
        s=s%1000;
        LCD_PutChar(s/100+'0');
        s=s%100;
        LCD_PutChar(s/10+'0');
        s=s%10;
        LCD_PutChar(s+'0');
        LCD_PutChar('"');
    }
    
    
    void ShowSatSNR(u8 ucX,u8 ucY)
    {
        u8 i,j,Mode;
        for (i=0;i<12;i++)
        {
            Mode=1;
            for (j=0;j<12;j++)
            {
                if (GPS_GSV_Data.SatInfo[i].SatID==GPS_GSA_Data.SatUsedList[j]) Mode=3;
            }
            LCD_SNRBar(i*8,6,GPS_GSV_Data.SatInfo[i].SNR/4,Mode);
        }
    }
    
    bit ReciveOK(void)
    {
        if (ReciveFlag)
        {
            ReciveFlag=0;
            return 1;
        }
        else
        {
            return 0;
        }
    }
    
    static void ParserGPGGA(void)
    {
        switch(SBUF)
        {
            case '*': //语句结束
                NMEA_CMD_Start=0;
                break;
            case ',': //该字段结束
                NMEA_DAT_Block++;
                NMEA_DAT_BlockIndex=0;
                break;
            default:    //字段字符
                switch(NMEA_DAT_Block) //判断当前处于哪个字段
                { 
                    
                    case 5:             //<6> GPS状态 0=未定位, 1=非差分定位, 2=差分定位, 6=正在估算
                        GPS_GGA_Data.PositionFix=SBUF;
                        break;
                    case 6:             //<7> 正在使用的卫星数量 00~12
                        GPS_GGA_Data.SatUsed[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    
                        case 8:         //<9> 海拔高度 -9999.9~99999.9
                        GPS_GGA_Data.Altitude[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                }
                NMEA_DAT_BlockIndex++;     //字段字符索引++, 指向下一个字符
        }
    }
    
    static void ParserGPRMC(void)
    {
        switch(SBUF)
        {
            case '*':
                NMEA_CMD_Start=0;
                ReciveFlag=1;     //接收完毕, 可以处理
                break;
            case ',':
                NMEA_DAT_Block++;
                NMEA_DAT_BlockIndex=0;
                break;
            default:
                switch(NMEA_DAT_Block)
                {
                    case 0:         //<1> UTC时间 hhmmss.mmm
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                            case 2:
                            case 4:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_RMC_Data.UTCDateTime[3]=ucTempA*10+SBUF-'0';
                                break;
                            case 3:
                                GPS_RMC_Data.UTCDateTime[4]=ucTempA*10+SBUF-'0';
                                break;
                            case 5:
                                GPS_RMC_Data.UTCDateTime[5]=ucTempA*10+SBUF-'0';
                                break;
                        }
                        break;
                    case 1:         //<2> 定位状态 A=有效定位, V=无效定位
                        GPS_RMC_Data.Status=SBUF;
                        break;
                    case 2:         //<3> 纬度 ddmm.mmmm
                        GPS_RMC_Data.Latitude[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 3:         //<4> 纬度半球 N/S
                        GPS_RMC_Data.NS=SBUF;
                        break;
                    case 4:         //<5> 经度 dddmm.mmmm
                        GPS_RMC_Data.Longitude[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 5:         //<6> 经度半球 E/W
                        GPS_RMC_Data.EW=SBUF;
                        break;
                    case 6:         //<7> 地面速率 000.0~999.9 节
                        GPS_RMC_Data.Speed[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 7:         //<8> 地面航向 000.0~359.9 度, 以真北为参考基准
                        GPS_RMC_Data.Course[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 8:         //<9> UTC日期 ddmmyy
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                            case 2:
                            case 4:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_RMC_Data.UTCDateTime[2]=ucTempA*10+SBUF-'0';
                                break;
                            case 3:
                                GPS_RMC_Data.UTCDateTime[1]=ucTempA*10+SBUF-'0';
                                break;
                            case 5:
                                GPS_RMC_Data.UTCDateTime[0]=ucTempA*10+SBUF-'0';
                                break;
                        }
                        break;
                }
                NMEA_DAT_BlockIndex++;
        }
    }
    
    static void ParserGPGSA(void)
    {
        switch(SBUF)
        {
            case '*':
                NMEA_CMD_Start=0;
                break;
            case ',':
                NMEA_DAT_Block++;
                NMEA_DAT_BlockIndex=0;
                //清空已使用卫星号, 避免上次数据干扰
                if((NMEA_DAT_Block>=2)||(NMEA_DAT_Block<=13))
                    GPS_GSA_Data.SatUsedList[NMEA_DAT_Block-2]=0x00;
                break;
            default:
                switch(NMEA_DAT_Block)
                {
                    case 0:         //<1>模式 M=手动, A=自动
                        GPS_GSA_Data.Mode=SBUF;
                        break;
                    case 1:         //<2>定位型式 1=未定位, 2=二维定位, 3=三维定位
                        GPS_GSA_Data.Mode2=SBUF;
                        break;
                    case 2:         //<3> PRN 01~32 使用中的卫星编号
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                    case 9:
                    case 10:
                    case 11:
                    case 12:
                    case 13:
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_GSA_Data.SatUsedList[NMEA_DAT_Block-2]=ucTempA*10+SBUF-'0';
                                break;
                        }
                        break;
                    case 14:        //<4> PDOP 位置精度因子 0.5~99.9
                        GPS_GSA_Data.PDOP[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 15:        //<5> HDOP 水平精度因子 0.5~99.9
                        GPS_GSA_Data.HDOP[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    case 16:        //<6> VDOP 垂直精度因子 0.5~99.9
                        GPS_GSA_Data.VDOP[NMEA_DAT_BlockIndex]=SBUF;
                        break;
                    }
                NMEA_DAT_BlockIndex++;
        }
    }
    
    static void ParserGPGSV(void)
    {
        switch(SBUF)
        {
            case '*':
                NMEA_CMD_Start=0;
                break;
            case ',':
                NMEA_DAT_Block++;
                NMEA_DAT_BlockIndex=0;
                break;
            default:
                switch(NMEA_DAT_Block)
                {
                    
                    case 1:         //<2> 本句GSV的编号
                        if (SBUF=='1') SateInfoIndex=0;
                        //解析到第一句 GSV 语句 则判断卫星信息从心开始
                        break;
                    case 2:         //<3> 可见卫星的总数 00~12
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_GSV_Data.SatInView=ucTempA*10+SBUF-'0';
                                break;
                        }
                        break;
                    case 3:         //<4> 卫星编号 01~32
                    case 7:
                    case 11:
                    case 15:
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_GSV_Data.SatInfo[SateInfoIndex].SatID=ucTempA*10+SBUF-'0';
    
                                GPS_GSV_Data.SatInfo[SateInfoIndex].SNR=0x00;
                                //清空信噪比数据, 避免上次数据干扰
                                //因为当卫星信噪比无时GPS输出的NMEA数据中信噪比字段没有,
                                //而导致直接跳到下一字段, 此时上次若有数据则直接会残留下来
    
                                SateInfoIndex++;
                                //卫星信息索引+1, 以下都-1处理
                                //同上, 避免放于"信噪比"字段为空时处理不到
    
                                break;
                        }
                        break;
                    
                    case 6:         //<7>讯号噪声比 C/No 00~99
                    case 10:
                    case 14:
                    case 18:
                        switch(NMEA_DAT_BlockIndex)
                        {
                            case 0:
                                ucTempA=SBUF-'0';
                                break;
                            case 1:
                                GPS_GSV_Data.SatInfo[SateInfoIndex-1].SNR=ucTempA*10+SBUF-'0';
                                break;
                        }
                        break;
                 }
            NMEA_DAT_BlockIndex++;
        }
    }
    
    void GPS(void)
    {
        LED_G=0;
        if(NMEA_CMD_Start)
        {             //解析到以$开始的 NMEA 语句, 进入NMEA 解析流程:
            if(NMEA_CMD_Parsered)
            {         //CMD语句类型解析完毕, 根据类型条用解析函数
                switch(NMEA_CMD)
                {
                    case NMEA_GPGGA:
                        ParserGPGGA();
                        break;
                    case NMEA_GPGSA:
                        ParserGPGSA();
                        break;
                    case NMEA_GPGSV:
                        ParserGPGSV();
                        break;
                    case NMEA_GPRMC:
                        ParserGPRMC();
                        break;
                    default:    //无法识别的格式, 复位
                        NMEA_CMD=NMEA_NULL;
                        NMEA_CMD_Parsered=0;
                        NMEA_CMD_Index=1;
                        NMEA_CMD_Start=0;
                }
            }
            else
            {         //需要解析CMD语句类型
                switch(SBUF)
                {
                    case ',':     //第一个字段结束
                        if(NMEA_CMD_Buff[4]=='G'&&NMEA_CMD_Buff[5]=='A') NMEA_CMD=NMEA_GPGGA;
                        if(NMEA_CMD_Buff[4]=='S'&&NMEA_CMD_Buff[5]=='A') NMEA_CMD=NMEA_GPGSA;
                        if(NMEA_CMD_Buff[5]=='V') NMEA_CMD=NMEA_GPGSV;
                        if(NMEA_CMD_Buff[5]=='C') NMEA_CMD=NMEA_GPRMC;
                        //此处如果都不成立, 即语句不被识别, 则NMEA_CMD为NULL或其他,
                        //则转为根据类型解析时会跳转到无法识别的格式, 而后复位
                        NMEA_CMD_Parsered=1;
                        NMEA_CMD_Index=1;
                        NMEA_DAT_Block=0;
                        NMEA_DAT_BlockIndex=0;
                        break;
                    case '*':
                        NMEA_CMD_Start=0; 
                        break;
                    default:        //处于第一个字段中, 继续接收
                        NMEA_CMD_Buff[NMEA_CMD_Index]=SBUF;
                        NMEA_CMD_Index++;
                        if (NMEA_CMD_Index>6) NMEA_CMD_Start=0;
                        // CMD 超过6个字符, (数组越界, 导致死机)
                        // 则判断不是正常的CMD语句, 则略过此句.
                }
            }
        }
        else
        {             //未解析到$, 循环接收并判断 直到 $
            if (SBUF=='$')
            {         //接收到$, 下一个字符即为类型判断字符, 先进行相关变量初始化
                NMEA_CMD_Buff[0]=SBUF;
                NMEA_CMD_Start=1;     //下次调用则进入NMEA 解析流程:
                NMEA_CMD_Index=1;     //从头存放GPS类型字符到变量
                NMEA_CMD_Parsered=0;
                NMEA_CMD=NMEA_NULL;
                NMEA_DAT_Block=0;
                NMEA_DAT_BlockIndex=0;
            }
        }
        LED_G=1;
    }
    相关文章
    相关标签/搜索
    六开彩开奖结果2017玽蓝月亮精选料二四六开奖结果下载-蓝月亮精选料天天好彩192.168.0.1开奖结果2019官方版 阜南县| 雷州市| 潞城市| 剑阁县| 兖州市| 西丰县| 沾化县| 淮南市| 临安市| 滁州市| 颍上县| 新宁县| 江门市| 遂溪县| 鄂伦春自治旗| 蒲城县| 枝江市| 香港| 广元市| 曲周县| 潼南县| 新绛县| SHOW| 安仁县| 灌阳县| 沁水县| 敦化市| 呈贡县| 诏安县| 阳新县| 景宁| 利川市| 平果县| 宽甸| 玛沁县| 延安市| 台北市| 类乌齐县| 宜良县| 大洼县| 昌图县| 太白县| 黄平县| 定日县| 白山市| 孟州市| 新源县| 罗田县| 辉南县| 杂多县| 梧州市| 淮安市| 台东市| 蕲春县| 营口市| 贵阳市| 普洱| 渑池县| 岚皋县| 鸡东县| 乡城县| 彰化县| 卓尼县| 根河市| 沙河市| 江源县| 长治市| 南和县| 德州市| 潞城市| 班玛县| 慈溪市| 焉耆| 卓尼县| 晋城| 台山市| 榕江县| 灵石县| 六安市| 营山县| 松溪县| 龙海市| 台南县| 图木舒克市| 察隅县| 长顺县| 大厂| 天长市| 青川县| 通山县| 宜兰市| 易门县| 含山县| 萨迦县| 湘阴县| 昌图县| 眉山市| 沧州市| 嘉兴市| 泾源县| 武川县| 双城市| 阿城市| 绥阳县| 威海市| 鄢陵县| 东阳市| 保定市| 拉萨市| 克山县| 惠州市| 忻州市| 明溪县| 新乡县| 嘉善县| 特克斯县| 大渡口区| 吉隆县| 怀化市| 澳门| 收藏| 莫力| 衡山县| 西青区| 阿坝县| 广南县| 赤水市| 治多县| 竹溪县| 旌德县| 肇源县| 吴堡县| 湖南省| 荣成市| 甘德县| 九龙坡区| 平武县| 虞城县| 克什克腾旗| 蒲城县| 巴彦县| 六安市| 永安市| 辽宁省| 阿克| 黑山县| 色达县| 龙南县| 阜新市| 镇康县| 衡水市| 广河县| 喀喇| 垦利县| 英山县| 洪雅县| 保靖县| 临朐县| 东海县| 板桥市| 滁州市| 晋宁县| 调兵山市| 富裕县| 夏津县| 荃湾区| 屏边| 招远市| 新密市| 远安县| 辽源市| 沙湾县| 天门市| 六安市| 阜新| 武义县| 临沧市| 繁峙县| 桓台县| 永顺县| 新乡市| 崇阳县| 定安县| 交口县| 根河市| 禹城市| 临朐县| 连江县| 广南县| 安溪县| 周至县| 曲沃县| 连城县| 阳信县| 乐至县| 宜城市| 开封市| 余干县| 泌阳县| 兴化市| 兴和县| 藁城市| 雷州市| 阳泉市| 正安县| 舒城县| 驻马店市| 连城县| 梁平县| 龙川县| 长沙县| 峡江县| 阿荣旗| 南郑县| 名山县| 安岳县| 新营市| 稻城县| 江都市| 东源县| 黄骅市| 固镇县| 怀远县| 松滋市| 罗源县| 砀山县| 清水河县| 平原县| 民权县| 通化市| 临城县| 上蔡县| 视频| 博乐市| 长白| 慈溪市| 石城县| 乡城县| 阳泉市| 固原市| 台北县| 涿州市| 时尚| 库伦旗| 江油市| 辽阳市| 嫩江县| 沙坪坝区| 时尚| 祥云县| 溧阳市| 驻马店市| 黎川县| 茂名市| 江孜县| 桑日县| 迭部县| 伊吾县| 博湖县| 都匀市| 庆云县| 历史| 如皋市| 巫溪县| 麦盖提县| 宜兰县| 枞阳县| 镇平县| 嵩明县| 越西县| 江川县| 南溪县| 武山县| 华坪县| 闽侯县| 滦平县| 习水县| 丹东市| 微博| 论坛| 图木舒克市| 阿合奇县| 大邑县| 临泽县| 泰安市| 子长县| 临西县| 五指山市| 贵定县| 城固县| 中阳县| 兰州市| 睢宁县| 连城县| 陆丰市| 保山市| 三原县| 天等县| 嘉祥县| 巴马| 二连浩特市| 泗洪县| 新宾| 平泉县| 娄底市| 山西省| 黄山市| 四会市| 建水县| 祥云县| 河源市| 罗定市| 汉源县| 利津县| 安远县| 浑源县| 贵阳市| 静安区| 海口市| 吉林市| 汝南县| 湟源县| 平定县| 宜黄县| 福安市| 济阳县| 土默特右旗| 自治县| 资中县| 忻城县| 光山县| 天祝| 秭归县| 襄垣县| 庆阳市| 得荣县| 顺义区| 新乡市| 华阴市| 侯马市| 中牟县| 柳江县| 光山县| 寿宁县| 衡山县| 江山市| 绥化市| 教育| 汾阳市| 平南县| 浮梁县| 宜川县| 太和县| 府谷县| 依兰县| 广水市| 东乡族自治县| 汪清县| 林甸县| 肇庆市| 栾川县| 溧水县| 时尚| 公安县| 云和县| 丰宁| 长治县| 叙永县| 石柱| 灵武市| 枞阳县| 威远县| 中宁县| 东光县| 怀来县| 上犹县| 遂昌县| 繁峙县| 兰坪| 合水县| 澄迈县| 始兴县| 扶余县| 和田县| 招远市| 昭觉县| 阿荣旗| 柘荣县| 英山县| 方城县| 溆浦县| 合江县| 洞口县| 赣州市| 平阳县| 乌苏市| 海口市| 长岛县| 青海省| 蒙城县| 甘德县| 砀山县| 遵义县| 澎湖县| 沂源县| 宁乡县| 松潘县| 吴忠市| 苍南县| 巴彦淖尔市| 吉安市| 临安市| 乐陵市| 铜山县| 高邑县| 永善县| 浮梁县| 嵩明县| 昌黎县| 禹州市| 吴旗县| 西乌珠穆沁旗| 商水县| 徐闻县| 保康县| 千阳县| 陇川县| 莱西市| 兴和县| 宜君县| 遂平县| 左权县| 建水县| 南昌市| 观塘区| 牡丹江市| 贵州省| 汽车| 澄城县| 芒康县| 前郭尔| 蓝田县| 临沧市| 云浮市| 红安县| 海南省| 宁化县| 海城市| 永胜县| 调兵山市| 勐海县| 社旗县| 富民县| 务川| 镇巴县| 手游| 新河县| 滁州市| 淄博市| 临朐县| 长葛市| 临泉县| 原平市| 亚东县| 双流县| 上杭县| 突泉县| 宾阳县| 安图县| 江川县| 孟村| 定边县| 肃宁县| 黄浦区| 北安市| 儋州市| 罗甸县| 会理县| 宁都县| 锦州市| 大荔县| 白玉县| 桃源县| 饶河县| 顺平县| 南召县| 花莲县| 曲阜市| 温宿县| 东辽县| 垫江县| 阿克苏市| 定襄县| 库车县| 梁河县| 璧山县| 泰顺县| 陈巴尔虎旗| 横峰县| 磴口县| 沙坪坝区| 云安县| 锦州市| 治县。| 临城县| 兰考县| 宜宾市| 家居| 白河县| 平谷区| 泽州县| 盘锦市| 赣榆县| 张家港市| 沁源县| 高台县| 芦山县| 鄂伦春自治旗| 灵寿县| 加查县| 柘城县| 旺苍县| 普安县| 万源市| 云龙县| 资中县| 蒲江县| 丁青县| 本溪| 铜梁县| 邵阳市| 峡江县| 宜阳县| 望江县| 阿克| 大英县| 和龙市| 马关县| 怀来县| 株洲市| 大厂| 桃园县| 大庆市| 七台河市| 盐城市| 阿巴嘎旗| 襄汾县| 宜兰县| 马龙县| 永福县| 竹溪县| 新丰县| 克东县| 崇信县| 全南县| 麟游县| 萝北县| 钟山县| 镇原县| 临汾市| 寿阳县| 无为县| 武陟县| 新丰县| 临颍县| 永泰县| 岫岩| 汝州市| 溧水县| 巴楚县| 临高县| 延吉市| 莒南县| 铜川市| 长白| 石林| 东乌| 库车县| 富川| 安顺市| 屏山县| 岳阳市| 友谊县| 台北县| 陆河县| 额尔古纳市| 秦皇岛市| 金沙县| 门源| 甘德县| 龙游县| 博白县| 丹凤县| 浮山县| 淳安县| 萍乡市| 蒙城县| 虹口区| 宝应县| 商城县| 响水县| 河北区| 新丰县| 健康| 湖北省| 东光县| 会同县| 建平县| 荆门市| 宣恩县| 班戈县| 景东| 峨山| 贡觉县| 化州市| http://m.jx1870busv.fun http://3g.jx1870bobv.fun http://3g.jx1870backv.fun http://wap.jx1870canv.fun http://3g.jx1870conflictv.fun http://m.jx1870dryv.fun http://wap.jx1870accessv.fun http://3g.jx1870charterv.fun http://m.jx1870cutv.fun http://m.jx1870definev.fun http://wap.jx1870costv.fun http://wap.jx1870achievev.fun http://3g.jx1870birdv.fun http://wap.jx1870dropv.fun http://wap.jx1870actionv.fun http://3g.jx1870bayv.fun http://jx1870azountv.fun http://3g.jx1870correctv.fun