本文整理汇总了C++中NMEAInputLine::rest方法的典型用法代码示例。如果您正苦于以下问题:C++ NMEAInputLine::rest方法的具体用法?C++ NMEAInputLine::rest怎么用?C++ NMEAInputLine::rest使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NMEAInputLine
的用法示例。
在下文中一共展示了NMEAInputLine::rest方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
// PDTSM,duration_ms,"free text"
static bool
PDTSM(NMEAInputLine &line, gcc_unused NMEAInfo &info)
{
/*
int duration = (int)strtol(String, NULL, 10);
*/
line.skip();
const char *message = line.rest();
#ifdef _UNICODE
TCHAR buffer[strlen(message)];
if (MultiByteToWideChar(CP_ACP, 0, message, -1,
buffer, ARRAY_SIZE(buffer)) <= 0)
return false;
#else
const char *buffer = message;
#endif
// todo duration handling
Message::AddMessage(_T("VEGA:"), buffer);
return true;
}
示例2: line_copy
/**
* Parse a "$FLYSEN" sentence.
*
* @see http://www.flytec.ch/public/Special%20NMEA%20sentence.pdf
*/
static bool
FlytecParseFLYSEN(NMEAInputLine &line, NMEAInfo &info)
{
// Detect firmware/sentence version
//
// V or A in field 9 -> 3.31-
// V or A in field 10 -> 3.32+
NMEAInputLine line_copy(line.rest());
line_copy.skip(8);
bool has_date_field = false;
char validity = line_copy.read_first_char();
if (validity != 'A' && validity != 'V') {
validity = line_copy.read_first_char();
if (validity != 'A' && validity != 'V')
return false;
has_date_field = true;
}
// Date(ddmmyy), 6 Digits (only in firmware version 3.32+)
if (has_date_field)
line.skip();
// Time(hhmmss), 6 Digits
line.skip();
if (validity == 'V') {
// In case of V (void=not valid) GPS data should not be used.
// GPS altitude, position and speed should be ignored.
line.skip(7);
} else {
// Latitude(ddmm.mmm), 8 Digits incl. decimal
// N (or S), 1 Digit
// Longitude(dddmm.mmm), 9 Digits inc. decimal
// E (or W), 1 Digit
GeoPoint location;
if (NMEAParser::ReadGeoPoint(line, location)) {
info.location = location;
info.location_available.Update(info.clock);
}
// Track (xxx Deg), 3 Digits
fixed track;
if (line.read_checked(track)) {
info.track = Angle::Degrees(track);
info.track_available.Update(info.clock);
}
// Speed over Ground (xxxxx cm/s) 5 Digits
fixed ground_speed;
if (line.read_checked(ground_speed)) {
info.ground_speed = ground_speed / 100;
info.ground_speed_available.Update(info.clock);
}
// GPS altitude (xxxxx meter), 5 Digits
fixed gps_altitude;
if (line.read_checked(gps_altitude)) {
info.gps_altitude = gps_altitude;
info.gps_altitude_available.Update(info.clock);
}
}
// Validity of 3 D fix A or V, 1 Digit
line.skip();
// Satellites in Use (0 to 12), 2 Digits
unsigned satellites_used;
if (line.read_checked(satellites_used)) {
info.gps.satellites_used = satellites_used;
info.gps.satellites_used_available.Update(info.clock);
}
// Raw pressure (xxxxxx Pa), 6 Digits
fixed pressure;
if (line.read_checked(pressure))
info.ProvideStaticPressure(AtmosphericPressure::Pascal(pressure));
// Baro Altitude (xxxxx meter), 5 Digits (-xxxx to xxxxx) (Based on 1013.25hPa)
fixed baro_altitude;
if (line.read_checked(baro_altitude))
info.ProvidePressureAltitude(baro_altitude);
// Variometer (xxxx cm/s), 4 or 5 Digits (-9999 to 9999)
fixed vario;
if (line.read_checked(vario))
info.ProvideTotalEnergyVario(vario / 100);
// True airspeed (xxxxx cm/s), 5 Digits (0 to 99999cm/s = 3600km/h)
fixed tas;
if (line.read_checked(tas))
//.........这里部分代码省略.........