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

📄 novateldata.hpp

📁 一个gps小工具包
💻 HPP
字号:
#pragma ident "$Id: NovatelData.hpp 896 2007-11-15 04:37:07Z ocibu $"/** * @file NovatelData.hpp * gpstk::NovatelData - container for Novatel data, with methods to convert to Rinex */#ifndef GPSTK_NOVATEL_DATA_HPP#define GPSTK_NOVATEL_DATA_HPP//============================================================================////  This file is part of GPSTk, the GPS Toolkit.////  The GPSTk is free software; you can redistribute it and/or modify//  it under the terms of the GNU Lesser General Public License as published//  by the Free Software Foundation; either version 2.1 of the License, or//  any later version.////  The GPSTk is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU Lesser General Public License for more details.////  You should have received a copy of the GNU Lesser General Public//  License along with GPSTk; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//  //  Copyright 2004, The University of Texas at Austin////============================================================================//============================================================================////This software developed by Applied Research Laboratories at the University of//Texas at Austin, under contract to an agency or agencies within the U.S. //Department of Defense. The U.S. Government retains all rights to use,//duplicate, distribute, disclose, or release this software. ////Pursuant to DoD Directive 523024 //// DISTRIBUTION STATEMENT A: This software has been approved for public //                           release, distribution is unlimited.////=============================================================================#include <ostream>#include "Exception.hpp"#include "FFStream.hpp"#include "RinexNavData.hpp"#include "RinexObsData.hpp"#include "NovatelStream.hpp"namespace gpstk{   /** @addtogroup NovatelGroup */   //@{   /// Read Novatel binary records and parse into Rinex. Currently supports   /// the basic data records of OEM2 and OEM4 files only; others are yet to be   /// implemented.   /// Ref. (OEM2) 'GPSCard Command Descriptions' Manual (Rev 3)   /// Ref. 'OEM4 Family of Receivers,' Users Manual Volume 2 (OM-20000047 Rev 12)   class NovatelData : public FFData   {   public:         /// block types implemented here      enum RecType      {         Unknown=0,  ///< unknown block type            // OEM2 records         RGEB,       ///< observations -- not implemented         RGEC,       ///< observations         POSB,       ///< position solution -- not implemented         REPB,       ///< ephemeris         RCSB,       ///< receiver stats -- not implemented            // OEM4 records         RANGE,      ///< range and phase data (synchronous)         RANGECMP,   ///< range and phase data, compressed (synchronous)         RAWEPHEM    ///< ephemeris data (asynchronous)      };         /// Names of the record types : RecNames[rectype]      static const std::string RecNames[];         /// Default constructor      NovatelData(void) : rectype(Unknown), datasize(0), headersize(0), gpsWeek(-1)         {}         /// Destructor      virtual ~NovatelData(void) {}         /// Return true if this is a valid Novatel record.         /// Test the validity of the record with this before further processing.      bool isValid(void) const;         /// This class is not header      virtual bool isHeader(void) const { return false; }         /// This class is data      virtual bool isData(void) const { return true; }         /// True if this record is an ephemeris record         /// Test the identity of the record with this before casting into Rinex.      bool isNav(void) const;         /// True if this record is observation data         /// Test the identity of the record with this before casting into Rinex.      bool isObs(void) const;         /// True if this record is auxiliary data (not Nav, not Obs)         /// (only one of isNav(), isObs() and isAux() is true      bool isAux(void) const;         /// True if this record belongs to OEM2 receivers      bool isOEM2(void) const;         /// True if this record belongs to OEM4 receivers      bool isOEM4(void) const;         /// Dump the contents of the record to the ostream \c str.      virtual void dump(std::ostream& str) const;         /// set the week number of the data, this is required for         /// OEM2 nav records that are processed before any obs records      void setWeek(long& gpsweek) { gpsWeek = gpsweek; }         /// cast *this into an gpstk::RinexNavData.         /// @throw if the record is invalid or not an ephemeris (isNav()==false)      operator RinexNavData() throw(gpstk::Exception);         /// cast *this into a gpstk::RinexObsData         /// @throw if the record is invalid or not an observation (isObs()==false)      operator RinexObsData() throw(gpstk::Exception);         /// public data members      RecType rectype;              ///< record type (cf. enum RecType)      int recnum;                   ///< record number (byte 4 of record)      long datasize;                ///< size of data in bytes      int headersize;               ///< size of header in bytes (=3 for OEM2)   protected:         /// Write this record to the stream \a s.      virtual void reallyPutRecord(FFStream& s) const          throw(std::exception, gpstk::StringUtils::StringException,                gpstk::FFStreamError);         /**          * Read a NovatelData record from the FFStream \c s.           * If an error is encountered, the function will           * return the stream to its original state and mark its fail-bit.          * @throws FFStreamError when exceptions(failbit) is set and          *  a read or formatting error occurs.  This also resets the          *  stream to its pre-read position.          */      virtual void reallyGetRecord(FFStream& s)         throw(std::exception, gpstk::StringUtils::StringException,                gpstk::FFStreamError);   private:         /// private data members      unsigned char buffer[1024];   ///< buffer for raw data         /// Reference GPS week, for OEM2, where the nav records require a GPS week,         /// but only the obs records have one, and then it is 10-bit.         /// This epoch will be used to remove the ambiguity in the 10-bit week         /// number of the obs records, and then will provide a week number for         /// for the nav records. If not set by the user, it will be set by the         /// system time, and then by the first obs record.      long gpsWeek;         }; // end class NovatelData   //@}}  // end namespace gpstk#endif

⌨️ 快捷键说明

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