/// <summary> /// Instantiates a J1939 can message from the raw message, then passes the message to the J1939 parser, /// which handles both extraction and parsing /// </summary> /// <param name="rawMessage"></param> /// <param name="e"></param> private void ProcessJ1939Data(string rawMessage, VMSCommDataEventArgs e) { try { var canMessage = new J1939Message(rawMessage, e.timeStamp); if (canMessage.IsValidMessage()) { canMessage.ExtractMessage(); _J1939Parser.Parse(canMessage); PublishNewDataEvent(canMessage); } } catch (Exception ex) { RaiseVMSEvent?.Invoke(this, new VMSCommDataErrorEventArgs(e, MessageError.UnrecognizedMessage, ex)); ErrorLogger.GenerateErrorRecord(ex); } }
private void HandleMessage(VMSCommDataEventArgs e) { var message = RemoveControlCharacters(e.message); var type = GetMessageType(message); message = message.Substring(1); //remove the type indicator from the message ('J', 'R', or 'I') switch (type) { case VMSDataSource.J1708: ProcessJ1708Data(message, e); break; case VMSDataSource.J1939: ProcessJ1939Data(message, e); break; case VMSDataSource.None: break; } }
/// <summary> /// Istantiates a J1708 can message from the raw message. The J1708 Can Message handles it's own /// raw value extraction, which is then passed onto the J1708Parser to get standard and metric values /// </summary> /// <param name="rawMessage"></param> /// <param name="e"></param> private void ProcessJ1708Data(string rawMessage, VMSCommDataEventArgs e) { try { var canMessage = new J1708Message(rawMessage, e.timeStamp); if (canMessage.IsValidMessage()) { canMessage.ExtractMessage(); _J1708Parser.Parse(canMessage); PublishNewDataEvent(canMessage); } else { } } catch (Exception ex) { //Todo - trim this down to only invoke CommDataErrorEvent on specific exceptions (ie, from CanMesssage or parser) RaiseVMSEvent?.Invoke(this, new VMSCommDataErrorEventArgs(e, MessageError.UnrecognizedMessage, ex)); ErrorLogger.GenerateErrorRecord(ex); } }
public RawDataParsingException(VMSCommDataEventArgs e, Exception ex) : base($"Could not parse the raw message \"{e.message}\"" + ex.Message) { }