source: pacpussensors/trunk/NMEA0183/src/ZLZ.cpp

Last change on this file was 59, checked in by DHERBOMEZ Gérald, 10 years ago

Integration of new modules:

  • GPS NMEA0183 decoder
  • Span CPT Decoder

Update of:

File size: 3.4 KB
Line 
1#include "nmea0183.h"
2#pragma hdrstop
3
4/*
5** Author: Samuel R. Blackburn
6** Internet: sam_blackburn@pobox.com
7**
8** You can use it any way you like as long as you don't try to sell it.
9**
10** Copyright, 1996, Samuel R. Blackburn
11**
12** $Workfile: zlz.cpp $
13** $Revision: 4 $
14** $Modtime: 10/10/98 2:39p $
15*/
16
17/*
18** This Sentence Not Recommended For New Designs
19** ZDA is recommended.
20*/
21
22
23ZLZ::ZLZ()
24{
25 Mnemonic = "ZLZ";
26 Empty();
27}
28
29ZLZ::~ZLZ()
30{
31 //Mnemonic.Empty();
32 Empty();
33}
34
35void ZLZ::Empty( void )
36{
37 //UTCTimeString.Empty();
38 //LocalTimeString.Empty();
39 LocalHourDeviation = 0;
40}
41
42BOOL ZLZ::Parse( const SENTENCE& sentence )
43{
44 /*
45 ** ZLZ - Time of Day
46 ** UTC, local time, zone
47 **
48 ** 1 2 3 4
49 ** | | | |
50 ** $--ZLZ,hhmmss.ss,hhmmss.ss,xx*hh<CR><LF>
51 **
52 ** 1) Universal Time Coordinated (UTC)
53 ** 2) Local Time
54 ** 3) Local Zone Description, number of whole hours added to local time to obtain GMT
55 ** 4) Checksum
56 */
57
58 /*
59 ** First we check the checksum...
60 */
61
62 if ( sentence.IsChecksumBad( 4 ) == True )
63 {
64 SetErrorMessage( "Invalid Checksum" );
65 return( FALSE );
66 }
67
68 QDateTime temp_time = QDateTime::currentDateTime();
69
70 int year = temp_time.date().year();
71 int month = temp_time.date().month();
72 int day = temp_time.date().day();
73
74 UTCTimeString = sentence.Field( 1 );
75
76 char temp_number[ 3 ];
77
78 temp_number[ 2 ] = 0x00;
79
80 temp_number[ 0 ] = UTCTimeString[ 0 ].toLatin1();
81 temp_number[ 1 ] = UTCTimeString[ 1 ].toLatin1();
82
83 int hours = ::atoi( temp_number );
84
85 temp_number[ 0 ] = UTCTimeString[ 2 ].toLatin1();
86 temp_number[ 1 ] = UTCTimeString[ 3 ].toLatin1();
87
88 int minutes = ::atoi( temp_number );
89
90 temp_number[ 0 ] = UTCTimeString[ 4 ].toLatin1();
91 temp_number[ 1 ] = UTCTimeString[ 5 ].toLatin1();
92
93 int seconds = ::atoi( temp_number );
94
95 //UTCTime = CTime( year, month, day, hours, minutes, seconds );
96 UTCTime = QDateTime(QDate(year, month, day) , QTime(hours, minutes, seconds) );
97
98 LocalTimeString = sentence.Field( 2 );
99
100 temp_number[ 0 ] = LocalTimeString[ 0 ].toLatin1();
101 temp_number[ 1 ] = LocalTimeString[ 1 ].toLatin1();
102
103 hours = ::atoi( temp_number );
104
105 temp_number[ 0 ] = LocalTimeString[ 2 ].toLatin1();
106 temp_number[ 1 ] = LocalTimeString[ 3 ].toLatin1();
107
108 minutes = ::atoi( temp_number );
109
110 temp_number[ 0 ] = LocalTimeString[ 4 ].toLatin1();
111 temp_number[ 1 ] = LocalTimeString[ 5 ].toLatin1();
112
113 seconds = ::atoi( temp_number );
114
115 //LocalTime = CTime( year, month, day, hours, minutes, seconds );
116 LocalTime = QDateTime(QDate(year, month, day) , QTime(hours, minutes, seconds) );
117
118 LocalHourDeviation = sentence.Integer( 3 );
119
120 return( TRUE );
121}
122
123BOOL ZLZ::Write( SENTENCE& sentence )
124{
125 /*
126 ** Let the parent do its thing
127 */
128
129 RESPONSE::Write( sentence );
130
131 sentence += UTCTimeString;
132 sentence += LocalTimeString;
133 sentence += LocalHourDeviation;
134
135 sentence.Finish();
136
137 return( TRUE );
138}
139
140const ZLZ& ZLZ::operator = ( const ZLZ& source )
141{
142 UTCTimeString = source.UTCTimeString;
143 UTCTime = source.UTCTime;
144 LocalTimeString = source.LocalTimeString;
145 LocalTime = source.LocalTime;
146 LocalHourDeviation = source.LocalHourDeviation;
147
148 return( *this );
149}
Note: See TracBrowser for help on using the repository browser.