示例#1
0
        public void ParseGPGGAStringWithNullField()
        {
            string str = "$GPGGA,,,,,,,,,,,99.99,M,,*35";

            var parser = new NMEAParser();
            var res    = parser.Parse(str);

            FixData data = (FixData)res;
        }
示例#2
0
        public void Update(String line)
        {
            try
            {
                //validate checksum first
                if (IsValidChecksum(line))
                {
                    if (line.StartsWith("$GPGGA"))
                    {
                        FixData newFix = FixData.Parse(line);
                        if (newFix != null && newFix.Valid)
                        {
                            //compute vertical speed
                            int newAltTimeSeconds = (newFix.Time.Hour * 3600)
                                                    + (newFix.Time.Minute * 60)
                                                    + (newFix.Time.Second);
                            double dt = newAltTimeSeconds - lastAltTimeSeconds;
                            if (lastAltitude > 0 && dt > 0)
                            {
                                double newVS = (newFix.Altitude - lastAltitude) / (dt);
                                VerticalSpeed = VerticalSpeed + 0.2f * (newVS - VerticalSpeed);
                            }
                            lastAltitude       = newFix.Altitude;
                            lastAltTimeSeconds = newAltTimeSeconds;

                            //compute maximum altitude
                            if (newFix.Altitude > MaximumAltitude)
                            {
                                MaximumAltitude = newFix.Altitude;
                            }
                        }
                        this.Fix = newFix;
                    }
                    else if (line.StartsWith("$GPRMC"))
                    {
                        this.Movement = MovementData.Parse(line);
                    }
                    else if (line.StartsWith("$GPGSV"))
                    {
                        this.Satellites = SatellitesData.Parse(line);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
示例#3
0
        public void ParseGPGGAString()
        {
            string str    = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47";
            var    parser = new NMEAParser();
            var    res    = parser.Parse(str);

            FixData data = (FixData)res;

            Assert.AreEqual(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 12, 35, 19, 0), data.CurrentTime);
            Assert.AreEqual(48, data.Latitude.Value.Degree);
            Assert.AreEqual(7.038, data.Latitude.Value.Minutes);
            Assert.AreEqual(LatitudeDegree.DirectionType.North, data.Latitude.Value.Direction);

            Assert.AreEqual(11, data.Longitude.Value.Degree);
            Assert.AreEqual(31, data.Longitude.Value.Minutes);
            Assert.AreEqual(LongitudeDegree.DirectionType.East, data.Longitude.Value.Direction);

            Assert.AreEqual(8, data.SateliteUsed);
            Assert.AreEqual(0.9, data.HDOP);

            Assert.AreEqual(545.4, data.MeanSeaLevel);
            Assert.AreEqual(46.9, data.GeoidSeparation);
        }
示例#4
0
        private void UpdateDataToDB()
        {
            // создание соединения с БД
            SQLiteConnection connection = new SQLiteConnection(_connection);
            // команда для фиксации факта изменения записи
            SQLiteCommand fixdata =
                new SQLiteCommand(FixData.GetReplaceText(PersonInfo.tablename, FixData.FixType.Edit, _personID,
                                                         _operName, DateTime.Now));
            // создание команд для обновления
            SQLiteCommand updatePerson = PersonInfo.CreateUpdateCommand();
            // инициализация комманды для Адресса прописки
            SQLiteCommand commandRegadr = _regadrID == -1 ? Adress.CreateInsertCommand() : Adress.CreateUpdateCommand();

            // инициализация комманды для Адресса проживания
            SQLiteCommand commandFactadr = null;

            if (adressrealCheckBox.Checked)
            {
                commandFactadr = _factadrID == -1 ? Adress.CreateInsertCommand() : Adress.CreateUpdateCommand();
            }

            // инициализация комманды для Места рождения
            SQLiteCommand commandBornadr = _bornadrID == -1
                ? Adress.CreateInsertCommand()
                : Adress.CreateUpdateCommand();

            // инициализация комманды для документа
            SQLiteCommand commandIDoc = _idocID == -1 ? IDocInfo.CreateInsertCommand() : IDocInfo.CreateUpdateCommand();

            // присвоение подключения командам
            updatePerson.Connection  = connection;
            commandRegadr.Connection = connection;
            if (commandFactadr != null)
            {
                commandFactadr.Connection = connection;
            }
            commandBornadr.Connection = connection;
            commandIDoc.Connection    = connection;
            fixdata.Connection        = connection;
            // заполнение команд параметрами
            SetRegAdressValues(commandRegadr);
            if (commandFactadr != null)
            {
                SetFactAdressValues(commandFactadr);
            }
            SetBornplaceValues(commandBornadr);
            SetDocValues(commandIDoc);

            // открытие соединения
            connection.Open();
            // создание транзакции
            SQLiteTransaction transaction = connection.BeginTransaction();

            // присвоение транзакции командам
            fixdata.Transaction                      =
                commandRegadr.Transaction            =
                    commandBornadr.Transaction       =
                        commandIDoc.Transaction      =
                            updatePerson.Transaction = transaction;
            if (commandFactadr != null)
            {
                commandFactadr.Transaction = transaction;
            }

            // выполнение запросов для вставки данных в смежные таблицы
            if (_regadrID == -1)
            {
                // вставка прописки и получение ID записи
                _regadrID = (long)commandRegadr.ExecuteScalar();
            }
            else
            {
                // обновление записи
                commandRegadr.ExecuteNonQuery();
            }

            // если фактический адресс проживания отличается от прописки
            if (commandFactadr != null && adressrealCheckBox.Checked)
            {
                if (_factadrID == -1)
                {
                    // вставка адресса проживания и получение ID записи
                    _factadrID = (long)commandFactadr.ExecuteScalar();
                }
                else
                {
                    // обновление записи
                    commandFactadr.ExecuteNonQuery();
                }
            }
            else // если адресс прописки совпадает с адрессом фактического проживания
            {
                _factadrID = _regadrID;
            }

            if (_bornadrID == -1)
            {
                // вставка места рождения и получение ID записи
                _bornadrID = (long)commandBornadr.ExecuteScalar();
            }
            else
            {
                // обновление записи
                commandBornadr.ExecuteNonQuery();
            }

            if (_idocID == -1)
            {
                // вставка документа и получение ID записи
                _idocID = (long)commandIDoc.ExecuteScalar();
            }
            else
            {
                commandIDoc.ExecuteNonQuery();
            }

            // заполнение команды вставки Персоны параметрами,
            // в том числе определенными ID ранее вставленных записей адрессов и документа
            SetPersonValues(updatePerson);
            // исполнение команды обновления Персоны
            updatePerson.ExecuteNonQuery();
            fixdata.ExecuteNonQuery();
            // подтаверждение транзакции
            transaction.Commit();
            // закрытие соединения
            connection.Close();
        }
示例#5
0
        private void InsertDataToDB()
        {
            // создание соединения с БД
            SQLiteConnection connection = new SQLiteConnection(_connection);
            // создание команд для вставки
            SQLiteCommand insPerson    = PersonInfo.CreateInsertCommand();
            SQLiteCommand insRegadr    = Adress.CreateInsertCommand();
            SQLiteCommand insFactadr   = Adress.CreateInsertCommand();
            SQLiteCommand insBornadr   = Adress.CreateInsertCommand();
            SQLiteCommand insIDoc      = IDocInfo.CreateInsertCommand();
            SQLiteCommand insFixdata   = new SQLiteCommand();
            SQLiteCommand insPersonOrg = new SQLiteCommand();

            // присвоение подключения командам
            insPerson.Connection    = connection;
            insRegadr.Connection    = connection;
            insFactadr.Connection   = connection;
            insBornadr.Connection   = connection;
            insIDoc.Connection      = connection;
            insFixdata.Connection   = connection;
            insPersonOrg.Connection = connection;
            // заполнение команд параметрами
            SetRegAdressValues(insRegadr);
            SetFactAdressValues(insFactadr);
            SetBornplaceValues(insBornadr);
            SetDocValues(insIDoc);
            // открытие соединения
            connection.Open();
            // создание транзакции
            SQLiteTransaction transaction = connection.BeginTransaction();

            // присвоение транзакции командам
            insPersonOrg.Transaction               =
                insFixdata.Transaction             =
                    insFactadr.Transaction         =
                        insRegadr.Transaction      =
                            insBornadr.Transaction = insIDoc.Transaction = insPerson.Transaction = transaction;

            // выполнение запросов для вставки данных в смежные таблицы
            // вставка прописки и получение ID записи
            _regadrID = (long)insRegadr.ExecuteScalar();
            // если фактический адресс проживания отличается от прописки
            if (adressrealCheckBox.Checked)
            {
                // вставка адресса проживания и получение ID записи
                _factadrID = (long)insFactadr.ExecuteScalar();
            }
            else // если адресс прописки совпадает с адрессом фактического проживания
            {
                _factadrID = _regadrID;
            }
            // вставка места рождения и получение ID записи
            _bornadrID = (long)insBornadr.ExecuteScalar();
            // вставка документа и получение ID записи
            _idocID = (long)insIDoc.ExecuteScalar();
            // заполнение команды вставки Персоны параметрами,
            // в том числе определенными ID ранее вставленных записей адрессов и документа
            SetPersonValues(insPerson);
            // исполнение команды вставки Персоны
            _personID = (long)insPerson.ExecuteScalar();
            // выполнение запроса на фиксацию факта создания записи
            insFixdata.CommandText = FixData.GetReplaceText(PersonInfo.tablename, FixData.FixType.New, _personID,
                                                            _operName, DateTime.Now);
            insFixdata.ExecuteNonQuery();

            insPersonOrg.CommandText = PersonOrg.GetInsertPersonOrgText(_personID, _orgID);
            insPersonOrg.ExecuteScalar();
            // подтверждение транзакции
            insRegadr.Transaction.Commit();
            // закрытие соединения
            connection.Close();
        }