类 SentenceParser
- 所有已实现的接口:
Sentence
- 直接已知子类:
PositionParser,UBXMessageParser
Base class for all NMEA 0183 sentence parsers. Contains generic methods such as data field setters and getters, data formatting, validation etc.
NMEA 0183 data is transmitted in form of ASCII Strings that are called
sentences. Each sentence starts with a '$', a two letter
talker ID, a three letter sentence ID, followed by a number
of comma separated data fields, optional checksum and a
carriage return/line feed terminator (CR/LF). Sentence may
contain up to 82 characters including the CR/LF. If data for
certain field is not available, the field value is simply omitted, but the
commas that would delimit it are still sent, with no space between them.
Sentence structure:
$<talker-id><sentence-id>,<field #0>,<field #1>,...,<field #n>*<checksum><cr/lf>
For more details, see NMEA Revealed by Eric S. Raymond.
This class can also be used to implement and integrate parsers not provided
by in the library. See SentenceFactory for more instructions.
- 作者:
- Kimmo Tuukkanen
-
字段概要
从接口继承的字段 net.sf.marineapi.nmea.sentence.Sentence
ALTERNATIVE_BEGIN_CHAR, BEGIN_CHAR, CHECKSUM_DELIMITER, FIELD_DELIMITER, MAX_LENGTH, TERMINATOR -
构造器概要
构造器限定符构造器说明protectedSentenceParser(char begin, TalkerId talker, String type, int size) Creates a new empty sentence with specified begin char, talker id, sentence id and number of fields.protectedSentenceParser(char begin, TalkerId tid, SentenceId sid, int size) Creates a new empty sentence with specified begin char, talker id, sentence id and number of fields.SentenceParser(String nmea) Creates a new instance of SentenceParser.protectedSentenceParser(String nmea, String type) Creates a new instance of SentenceParser.protectedSentenceParser(TalkerId talker, String type, int size) Creates a new empty sentence with specified talker and sentence IDs. -
方法概要
修饰符和类型方法说明booleanfinal charGet the sentence begin character.protected final chargetCharValue(int index) Parse a single character from the specified sentence field.protected final doublegetDoubleValue(int index) Parse double value from the specified sentence field.final intReturns the current number of data fields in sentence, excluding ID field and checksum.protected final intgetIntValue(int index) Parse integer value from the specified sentence field.final StringGet the sentence ID that specifies the sentence type and data it holds.protected final StringgetStringValue(int index) Get contents of a data field as a String.protected final String[]getStringValues(int first) Returns all field values, starting from the specified index towards the end of sentence.final TalkerIdGets the talker ID of the sentence.inthashCode()protected final booleanhasValue(int index) Tells is if the field specified by the given index contains a value.booleanTells if this is an AIS sentence.booleanTells if the sentence is of proprietary format.booleanisValid()Tells if the sentence formatting matches NMEA 0183 format.final voidreset()Resets the sentence contents, i.e. removes all existing values from data fields.voidsetBeginChar(char ch) Set the sentence begin character.protected final voidsetCharValue(int index, char value) Set a character in specified field.protected final voidsetDegreesValue(int index, double deg) Set degrees value, e.g. course or heading.protected final voidsetDoubleValue(int index, double value) Set double value in specified field.protected final voidsetDoubleValue(int index, double value, int leading, int decimals) Set double value in specified field, with given number of digits before and after the decimal separator ('.').protected final voidsetFieldCount(int size) Sets the number of sentence data fields.protected final voidsetIntValue(int index, int value) Set integer value in specified field.protected final voidsetIntValue(int index, int value, int leading) Set integer value in specified field, with specified minimum number of digits.protected final voidsetStringValue(int index, String value) Set String value in specified data field.protected final voidsetStringValues(int first, String[] newFields) Replace multiple fields with given String array, starting at the specified index.final voidsetTalkerId(TalkerId id) Set the talker ID of the sentence.final StringFormats and validates the String representation of sentence.final StringtoSentence(int maxLength) Formats and validates the sentence likeSentence.toSentence(), but checks also that resulting String does not exceed specified length.toString()Returns the String representation of the sentence, without line terminatorCR/LR.
-
构造器详细资料
-
SentenceParser
Creates a new instance of SentenceParser. Validates the input String and resolves talker id and sentence type.- 参数:
nmea- A valid NMEA 0183 sentence- 抛出:
IllegalArgumentException- If the specified sentence is invalid or if sentence type is not supported.
-
SentenceParser
Creates a new empty sentence with specified begin char, talker id, sentence id and number of fields.- 参数:
begin- Begin char, $ or !tid- TalkerId to setsid- SentenceId to setsize- Number of sentence data fields
-
SentenceParser
Creates a new empty sentence with specified begin char, talker id, sentence id and number of fields.- 参数:
begin- The begin character, e.g. '$' or '!'talker- TalkerId to settype- Sentence id as String, e.g. "GGA or "GLL".size- Number of sentence data fields
-
SentenceParser
Creates a new instance of SentenceParser. Parser may be constructed only if parameternmeacontains a valid NMEA 0183 sentence of the specifiedtype.For example, GGA sentence parser should specify "GGA" as the type.
- 参数:
nmea- NMEA 0183 sentence Stringtype- Expected type of the sentence innmeaparameter- 抛出:
IllegalArgumentException- If the specified sentence is not a valid or is not of expected type.
-
SentenceParser
Creates a new empty sentence with specified talker and sentence IDs.- 参数:
talker- Talker type Id, e.g. "GP" or "LC".type- Sentence type Id, e.g. "GGA or "GLL".size- Number of data fields
-
-
方法详细资料
-
equals
-
getBeginChar
public final char getBeginChar()从接口复制的说明:SentenceGet the sentence begin character. Although most of the sentences start with '$', some of them use '!' as begin character.- 指定者:
getBeginChar在接口中Sentence- 返回:
- Sentence begin char, e.g. "$" or "!".
-
getFieldCount
public final int getFieldCount()从接口复制的说明:SentenceReturns the current number of data fields in sentence, excluding ID field and checksum.- 指定者:
getFieldCount在接口中Sentence- 返回:
- Data field count
-
getSentenceId
从接口复制的说明:SentenceGet the sentence ID that specifies the sentence type and data it holds. ID is the last three characters in address field. For example, in case of$GPGGAthe method returnsSentenceId.GGA.- 指定者:
getSentenceId在接口中Sentence- 返回:
- Sentence id String, e.g. "GLL" or "GGA".
- 另请参阅:
-
getTalkerId
从接口复制的说明:SentenceGets the talker ID of the sentence. Talker ID is the next two characters after$in sentence address field. For example, in case of$GPGGA, the method returnsTalkerId.GP.- 指定者:
getTalkerId在接口中Sentence- 返回:
- Talker id enum.
-
hashCode
public int hashCode() -
isAISSentence
public boolean isAISSentence()从接口复制的说明:SentenceTells if this is an AIS sentence.- 指定者:
isAISSentence在接口中Sentence- 返回:
- True if AIS sentence, otherwise false.
-
isProprietary
public boolean isProprietary()从接口复制的说明:SentenceTells if the sentence is of proprietary format.- 指定者:
isProprietary在接口中Sentence- 返回:
- True if proprietary, otherwise false.
-
isValid
public boolean isValid()从接口复制的说明:SentenceTells if the sentence formatting matches NMEA 0183 format. -
reset
public final void reset()从接口复制的说明:SentenceResets the sentence contents, i.e. removes all existing values from data fields. After resetting, address field remains as is and checksum is calculated according to empty data fields. -
setBeginChar
public void setBeginChar(char ch) 从接口复制的说明:SentenceSet the sentence begin character. Although most of the sentences start with '$', some of them use '!' as begin character.- 指定者:
setBeginChar在接口中Sentence- 参数:
ch- Sentence begin char to set ('$' or '!')- 另请参阅:
-
setTalkerId
从接口复制的说明:SentenceSet the talker ID of the sentence. Typically, the ID might be changed if the sentence is to be sent from a computer to an NMEA device.- 指定者:
setTalkerId在接口中Sentence- 参数:
id- TalkerId to set
-
toSentence
从接口复制的说明:SentenceFormats and validates the String representation of sentence. Throws an exception if result is not considered a valid sentence. As validation is done bySentenceValidator, notice that resulting sentence length is not checked. To also validate the length, useSentence.toSentence(int).- 指定者:
toSentence在接口中Sentence- 返回:
- Sentence as String, equal to
toString(). - 另请参阅:
-
toSentence
从接口复制的说明:SentenceFormats and validates the sentence likeSentence.toSentence(), but checks also that resulting String does not exceed specified length.- 指定者:
toSentence在接口中Sentence- 参数:
maxLength- Maximum String length- 返回:
- Sentence as String, equal to
toString(). - 另请参阅:
-
toString
从接口复制的说明:SentenceReturns the String representation of the sentence, without line terminatorCR/LR. Checksum is calculated and appended at the end of the sentence, but no validation is done. UseSentence.toSentence()to also validate the result. -
getCharValue
protected final char getCharValue(int index) Parse a single character from the specified sentence field.- 参数:
index- Data field index in sentence- 返回:
- Character contained in the field
- 抛出:
ParseException- If field contains more than one character
-
getDoubleValue
protected final double getDoubleValue(int index) Parse double value from the specified sentence field.- 参数:
index- Data field index in sentence- 返回:
- Field as parsed by
Double.parseDouble(String)
-
getIntValue
protected final int getIntValue(int index) Parse integer value from the specified sentence field.- 参数:
index- Field index in sentence- 返回:
- Field parsed by
Integer.parseInt(String)
-
getStringValue
Get contents of a data field as a String. Field indexing is zero-based. The address field (e.g.$GPGGA) and checksum at the end are not considered as a data fields and cannot therefore be fetched with this method.Field indexing, let i = 1:
$<id>,<i>,<i+1>,<i+2>,...,<i+n>*<checksum>- 参数:
index- Field index- 返回:
- Field value as String
- 抛出:
DataNotAvailableException- If the field is empty
-
hasValue
protected final boolean hasValue(int index) Tells is if the field specified by the given index contains a value.- 参数:
index- Field index- 返回:
- True if field contains value, otherwise false.
-
setCharValue
protected final void setCharValue(int index, char value) Set a character in specified field.- 参数:
index- Field indexvalue- Value to set
-
setDegreesValue
protected final void setDegreesValue(int index, double deg) Set degrees value, e.g. course or heading.- 参数:
index- Field index where to insert valuedeg- The degrees value to set- 抛出:
IllegalArgumentException- If degrees value out of range [0..360]
-
setDoubleValue
protected final void setDoubleValue(int index, double value) Set double value in specified field. Value is set "as-is" without any formatting or rounding.- 参数:
index- Field indexvalue- Value to set- 另请参阅:
-
setDoubleValue
protected final void setDoubleValue(int index, double value, int leading, int decimals) Set double value in specified field, with given number of digits before and after the decimal separator ('.'). When necessary, the value is padded with leading zeros and/or rounded to meet the requested number of digits.- 参数:
index- Field indexvalue- Value to setleading- Number of digits before decimal separatordecimals- Maximum number of digits after decimal separator- 另请参阅:
-
setFieldCount
protected final void setFieldCount(int size) Sets the number of sentence data fields. Increases or decreases the fields array, values in fields not affected by the change remain unchanged. Does nothing if specified new size is equal to count returned bygetFieldCount().- 参数:
size- Number of data fields, must be greater than zero.
-
setIntValue
protected final void setIntValue(int index, int value) Set integer value in specified field.- 参数:
index- Field indexvalue- Value to set
-
setIntValue
protected final void setIntValue(int index, int value, int leading) Set integer value in specified field, with specified minimum number of digits. Leading zeros are added to value if when necessary.- 参数:
index- Field indexvalue- Value to setleading- Number of digits to use.
-
setStringValue
Set String value in specified data field.- 参数:
index- Field indexvalue- String to set,nullconverts to empty String.
-
setStringValues
Replace multiple fields with given String array, starting at the specified index. If parameterfirstis zero, all sentence fields are replaced.If the length of
newFieldsdoes not fit in the sentence field count or it contains less values, fields are removed or added accordingly. As the result, total number of fields may increase or decrease. Thus, if the sentence field count must not change, you may need to add empty Strings tonewFieldsin order to preserve the original number of fields. Also, all existing values afterfirstare lost.- 参数:
first- Index of first field to setnewFields- Array of Strings to set
-
getStringValues
Returns all field values, starting from the specified index towards the end of sentence.- 参数:
first- Index of first field to get.- 返回:
- Array of String values
-