Пример #1
0
        private ParsingResult ParsingPsti50(String[] param, NmeaTypeIdentify.NmeaType t)
        {
            if (param.Length != 18)
            {
                return ParsingResult.None;
            }

            int total = Convert.ToInt32(param[2]);
            int current = Convert.ToInt32(param[3]);
            int totalSate = Convert.ToInt32(param[4]);

            if (current == 1)
            {
                totalPsti50 = total;
                lastPsti50 = current;
            }

            int MaxParam = 17;
            for (int i = 5; i < MaxParam; i += 3)
            {
                String pi = param[i];
                if (pi.Length <= 0)
                {
                    break;
                }
                String pi2 = param[i + 2];
                int id = Convert.ToInt32(pi);
                int snr = (pi2.Length <= 0) ? 0 : Convert.ToInt32(pi2);
                parsingStat.UpdateGlonassSnr(id, snr);
            }

            if (total == current)
            {
                totalGsv = -1;
                lastGsv = -1;
                return ParsingResult.UpdateSate;
            }
            return ParsingResult.None;
        }
Пример #2
0
        private ParsingResult ParsingGsv(String s, NmeaTypeIdentify.NmeaType t)
        {
            char[] delimiterChars = { ',', '*' };
            String[] param = s.Split(delimiterChars);
            if (param.Length != 9 && param.Length != 13 && param.Length != 17 && param.Length != 21)
            {
                return ParsingResult.None;
            }

            int total = Convert.ToInt32(param[1]);
            int current = Convert.ToInt32(param[2]);
            int totalSate = Convert.ToInt32(param[3]);

            if(current==1)
            {
                totalGsv = total;
                lastGsv = current;
            }

            int MaxParam;
            switch (param.Length)
            {
                case 9:
                    MaxParam = 8;
                    break;
                case 13:
                    MaxParam = 12;
                    break;
                case 17:
                    MaxParam = 16;
                    break;
                case 21:
                    MaxParam = 20;
                    break;
                default:
                    MaxParam = 0;
                    break;
            }
            for (int i = 4; i < MaxParam; i += 4)
            {
                String pi = param[i];
                if (pi.Length <= 0)
                {
                    break;
                }
                String pi3 = param[i + 3];
                int id = Convert.ToInt32(pi);
                int snr = (pi3.Length <= 0) ? 0 : Convert.ToInt32(pi3);

                switch (t)
                {
                    case NmeaTypeIdentify.NmeaType.GPGSV:
                        parsingStat.UpdateGNSnr(id, snr);
                        break;
                    case NmeaTypeIdentify.NmeaType.GLGSV:
                        parsingStat.UpdateGlonassSnr(id, snr);
                        break;
                    case NmeaTypeIdentify.NmeaType.BDGSV:
                        parsingStat.UpdateBeidouSnr(id, snr);
                        break;
                    case NmeaTypeIdentify.NmeaType.GNGSV:
                        parsingStat.UpdateGNSnr(id, snr);
                        break;
                }
            }

            if(total==current)
            {
                totalGsv = -1;
                lastGsv = -1;
                return ParsingResult.UpdateSate;
            }
            return ParsingResult.None;
        }
Пример #3
0
 private ParsingResult ParsingPsti(String s, NmeaTypeIdentify.NmeaType t)
 {
     char[] delimiterChars = { ',', '*' };
     String[] param = s.Split(delimiterChars);
     if (param[1] == "050")
     {
         return ParsingPsti50(param, t);
     }
     return ParsingResult.None;
 }
Пример #4
0
        private ParsingResult ParsingGsa(String s, NmeaTypeIdentify.NmeaType t)
        {
            char[] delimiterChars = { ',', '*' };
            String[] param = s.Split(delimiterChars);
            if (param.Length < 18)
            {
                return ParsingResult.None;
            }

            int posFix = Convert.ToInt32(param[2]);
            //parsingStat.Clear();
            for (int i = 3; i < 15; i++)
            {
                String pi = param[i];
                if(pi.Length <= 0)
                {
                    break;
                }
                int prn = Convert.ToInt32(pi);
                switch (t)
                {
                    case NmeaTypeIdentify.NmeaType.GPGSA:
                        parsingStat.AddInUseGpsPrn(prn);
                        break;
                    case NmeaTypeIdentify.NmeaType.GLGSA:
                        parsingStat.AddInUseGlonassPrn(prn);
                        break;
                    case NmeaTypeIdentify.NmeaType.BDGSA:
                        parsingStat.AddInUseBeidouPrn(prn);
                        break;
                    case NmeaTypeIdentify.NmeaType.GNGSA:
                        parsingStat.AddInUseGNPrn(prn);
                        break;
                }
            }

            if(posFix != parsingStat.positionFixResult)
            {
                parsingStat.positionFixResult = posFix;
                return ParsingResult.UpdateFixPosition;
            }
            return ParsingResult.None;
        }