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

📄 gpsposition.cpp

📁 SYMBIAN GPS NMEA协议实现
💻 CPP
字号:

#include "gps/GpsPosition.h"



TGpsPosition::TGpsPosition( ) {

	Reset( );

}



TGpsPosition::TGpsPosition( const TReal & aLongitude, const TReal & aLatitude ) {

	Reset( );
	Set( aLongitude, aLatitude );

}



TGpsPosition::TGpsPosition( const TGpsPosition & aGpsPosition ) {

	//Reset( );
	Set( aGpsPosition );

}



void TGpsPosition::Reset( ) {

	//Mem::FillZ( ( TAny * ) this, sizeof( TGpsPosition ) );

	iLongitude = iLatitude = 0;
	iPositionDataValid = EFalse;
	iNumberOfSatellites = 0;
	iHdop = 0;
	iUtcTime = 0;
	iTickCount = 0;
	iHeading = 0;
	iSpeedInKnots = 0;
	iCourseDataValid = EFalse;

}



void TGpsPosition::Set( const TReal & aLongitude, const TReal & aLatitude ) {

	iLongitude = aLongitude;
	iLatitude = aLatitude;

	ValidatePosition( );

}



void TGpsPosition::Set( const TGpsPosition & aPosition ) {

	//Mem::Copy( this, &aGpsPosition, sizeof( TGpsPosition ) );

	iLongitude = aPosition.iLongitude;
	iLatitude = aPosition.iLatitude;
	iPositionDataValid = aPosition.iPositionDataValid;
	iNumberOfSatellites = aPosition.iNumberOfSatellites;
	iHdop = aPosition.iHdop;
	iUtcTime = aPosition.iUtcTime;
	iTickCount = aPosition.iTickCount;
	iHeading = aPosition.iHeading;
	iSpeedInKnots = aPosition.iSpeedInKnots;
	iCourseDataValid = aPosition.iCourseDataValid;

}



void TGpsPosition::SetExtendedInfo( TBool aValidFixFlag, TInt aNumberOfSatellites, const TReal & aHdop ) {

	iNumberOfSatellites = aNumberOfSatellites;
	iHdop = aHdop;
	iPositionDataValid = aValidFixFlag;

}



void TGpsPosition::SetTimeInfo( const TReal & aUtcTime, TUint aTickCount ) {

	iUtcTime = aUtcTime;
	iTickCount = aTickCount;

}



void TGpsPosition::SetCourseData( const TReal & aHeading, const TReal & aSpeedInKnots, TBool aValidFlag ) {

	iHeading = aHeading;
	iSpeedInKnots = aSpeedInKnots;
	iCourseDataValid = aValidFlag;

}



const TDesC & TGpsPosition::ToStringL( ) const {

	_LIT( KInvalid, "invalid" );

	if ( iPositionDataValid == EFalse )
		return( KInvalid );

	_LIT( KPositionFormat, "%.8lf %.8lf");

	TBuf< 100 > temp;
	temp.Format( KPositionFormat, iLongitude, iLatitude );

	return( temp );

}



void TGpsPosition::ValidatePosition( ) {

	TBool valid = ETrue;

	if ( iLongitude < -180 || iLongitude > 180 )
		valid = EFalse;

	else if ( iLatitude < -90 || iLatitude > 90 )
		valid = EFalse;

	iPositionDataValid = valid;

}



const TReal & TGpsPosition::Longitude( ) const {
	
	return( iLongitude );

}



const TReal & TGpsPosition::Latitude( ) const {
	
	return( iLatitude );

}



TInt TGpsPosition::Satellites( ) const {
	
	return( iNumberOfSatellites );

}



const TReal & TGpsPosition::Hdop( ) const {
	
	return( iHdop );

}



const TReal & TGpsPosition::UtcTime( ) const {
	
	return( iUtcTime );

}



TUint TGpsPosition::TickCount( ) const {
	
	return( iTickCount );

}



const TReal & TGpsPosition::Heading( ) const {
	
	return( iHeading );

}



const TReal & TGpsPosition::SpeedInKnots( ) const {
	
	return( iSpeedInKnots );

}



const TReal TGpsPosition::SpeedInKmh( ) const {
	
	return( iSpeedInKnots * 1.846 );

}



TBool TGpsPosition::CourseDataValid( ) const { 
	
	return( iCourseDataValid );

}



const TReal & TGpsPosition::Wgs84Longitude( ) const { 
	
	return( iLongitude );

}



const TReal & TGpsPosition::Wgs84Latitude( ) const { 
	
	return( iLatitude ); 

}



TBool TGpsPosition::IsValid( ) const {
	
	return( iPositionDataValid );

}

⌨️ 快捷键说明

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