private void port_NewMessage(object sender, NewNMEAMessageEventArgs e) { try { var result = NMEAParser.Parse(e.Message); if (result is NMEAStandartSentence) { var sResult = (result as NMEAStandartSentence); if (cmdProcessor.ContainsKey(sResult.SentenceID)) { cmdProcessor[sResult.SentenceID].Invoke(sResult.TalkerID, sResult.parameters); } } } catch (Exception ex) { if (LogEvent != null) { LogEvent(this, new LogEventArgs(LogLineType.ERROR, ex)); } } }
private void port_NewNMEAMessage(object sender, NewNMEAMessageEventArgs e) { if (LogEvent != null) { LogEvent(this, new LogEventArgs(LogLineType.INFO, string.Format("<< {0}", e.Message))); } try { var sentence = NMEAParser.Parse(e.Message); if (sentence is NMEAProprietarySentence) { NMEAProprietarySentence snt = ((NMEAProprietarySentence)(sentence)); if (snt.SentenceIDString == "0") { // ACK - analyze error code Process_ACK(snt.parameters); } else if (snt.SentenceIDString == "5") { // local data value Process_LOC_DATA(snt.parameters); } else if (snt.SentenceIDString == "!") { // device info Process_DEVICE_INFO(snt.parameters); } else if (snt.SentenceIDString == "C") { Process_FIX_UPDATE(snt.parameters); } else if (snt.SentenceIDString == "M") { Process_BUOYS_STATUS(snt.parameters); } else if (snt.SentenceIDString == "N") { Process_DPTTMP(snt.parameters); } else if (snt.SentenceIDString == "O") { Process_PRETMP(snt.parameters); } else { if (LogEvent != null) { LogEvent(this, new LogEventArgs(LogLineType.ERROR, string.Format("Unsupported sentence ID: {0}", snt.SentenceIDString))); } } } else { NMEAStandartSentence snt = ((NMEAStandartSentence)(sentence)); if (snt.SentenceID == SentenceIdentifiers.GGA) { Process_GGA(snt.parameters); } else if (snt.SentenceID == SentenceIdentifiers.RMC) { Process_RMC(snt.parameters); } else if (snt.SentenceID == SentenceIdentifiers.MTW) { Process_MTW(snt.parameters); } else { if (LogEvent != null) { LogEvent(this, new LogEventArgs(LogLineType.ERROR, string.Format("Unsupported sentence ID: {0}", snt.SentenceID))); } } } } catch (Exception ex) { if (LogEvent != null) { LogEvent(this, new LogEventArgs(LogLineType.ERROR, ex)); } } }