コード例 #1
0
 public VaiListener(INamedPort namedPort, PortDataParser portDataParser, int lineTimeoutSeconds = 300)
 {
     NamedPort          = namedPort;
     PortDataParser     = portDataParser;
     lineTimeoutManager = new LineTimeoutManager(this);
     lineTimeoutManager.LineIdleTimeout = TimeSpan.FromSeconds(lineTimeoutSeconds);
 }
コード例 #2
0
        private void ProcessSmsAwsMsg(INamedPort virtualPort, string curMessage, bool qmlLogFileData)
        {
            var measMsg = smsAwsParser.ParseMessageIntoMeasMsg(curMessage, virtualPort);

            if (measMsg != null)
            {
                var parserStatus = GetParsingStatus(measMsg);
                if (RemoveDuplicateMessages)
                {
                    if (duplicateMessageAssistant.DuplicateMeasMsgDetected(measMsg))
                    {
                        portListenerEventHandler.ProcessPortStatusData(virtualPort, parserStatus);
                        return;
                    }
                }


                if (qmlLogFileData)
                {
                    portListenerEventHandler.ProcessLogFileData(virtualPort, measMsg);
                }
                else
                {
                    portListenerEventHandler.ProcessObservationData(virtualPort, measMsg, curMessage);
                    portListenerEventHandler.ProcessPortStatusData(virtualPort, parserStatus);
                }
            }
        }
コード例 #3
0
        private void LogInputData(string text, INamedPort virtualPort)
        {
            if (virtualPort.RemoteSocketName == null)
            {
                return;
            }

            if (WriteAllInputIntoLog)
            {
                if (WriteAllInputPortIntoLog)
                {
                    SimpleFileWriter.WriteLineToEventFile(DirectoryName.Input,
                                                          string.Concat(virtualPort.RemoteSocketName
                                                                        , "_"
                                                                        , virtualPort.LocalSocketName
                                                                        ,
                                                                        text.Replace("\r", "<CR>").Replace("\n", "<NL>")));
                }
                else
                {
                    SimpleFileWriter.WriteLineToEventFile(DirectoryName.Input,
                                                          text.Replace("\r", "<CR>").Replace("\n", "<NL>"));
                }
            }
        }
コード例 #4
0
        internal void PlainTextReceived(string text, INamedPort virtualPort)
        {
            LogInputData(text, virtualPort);

            // To dialler task, to mmoc console terminal
            portListenerEventHandler.ProcessPlainText(virtualPort, text);
        }
コード例 #5
0
        public MeasMsg ParseMessageIntoMeasMsg(string data, INamedPort virtualPort = null)
        {
            this.virtualPort = virtualPort;

            IList <string> sc      = ParseMessage(data);
            var            measMsg = new MeasMsg();
            var            sb      = new StringBuilder();

            foreach (var s in sc)
            {
                sb.Append(s);
            }

            if (!measMsg.Initialise(sb.ToString()))
            {
                return(null);
            }

            if (RoundSecondsToClosestFullMinute)
            {
                var timeSpan = measMsg.Time.TimeOfDay;
                if (timeSpan.Seconds < 30)
                {
                    timeSpan = timeSpan.Add(-TimeSpan.FromSeconds(timeSpan.Seconds));
                }
                else
                {
                    timeSpan = timeSpan.Add(TimeSpan.FromSeconds(60 - timeSpan.Seconds));
                }
                measMsg.Time = measMsg.Time.Date.Add(timeSpan);
            }
            return(measMsg);
        }
コード例 #6
0
        private void ProcessSmsAwsObservationData(INamedPort virtualPort, string text, bool qmlLogFileData = false)
        {
            //if (UseCrc32WithSmsAWS)
            //{
            //    var ok = crc32Checker.CheckSmsAwsMessage(text);
            //    if (!ok)
            //    {
            //        var parserStatus = StringManager.GetString("Crc32 check failure ");
            //        SimpleFileWriter.WriteLineToEventFile(DirectoryName.EventLog, parserStatus + text);
            //        portListenerEventHandler.ProcessPortStatusData(virtualPort, parserStatus);
            //        return;
            //    }
            //}


            smsAwsMmessages = SmsAwsPreParser.FindSmsAwsSubMessages(text);
            if (smsAwsMmessages.Count == 0)
            {
                return;
            }

            smsAwsMmessages.ForEach(curMessage =>
                                    ProcessSmsAwsMsg(virtualPort, curMessage, qmlLogFileData)
                                    );


            // trigger event informing the last message has been processed.
            if (qmlLogFileData)
            {
                int index   = smsAwsMmessages.Count - 1;
                var measMsg = smsAwsParser.ParseMessageIntoMeasMsg(smsAwsMmessages[index], virtualPort);
                portListenerEventHandler.OnEndOfLogFileData(virtualPort, measMsg);
            }
        }
コード例 #7
0
 internal void RegisterMessage(INamedPort namedPort)
 {
     try
     {
         if (namedPort == null)
         {
             return;
         }
         if (namedPort.RemoteSocketName == null)
         {
             return;
         }
         var key = namedPort.RemoteSocketName;
         if (!channelDataCount.ContainsKey(key))
         {
             channelDataCount.Add(key, 0);
         }
         channelDataCount[key]++;
         if (DateTime.Now.Subtract(lastChannelDataCountReset) > OneHour)
         {
             PrintChannelDataCount();
         }
     }
     catch (Exception ex)
     {
         ExceptionHandler.HandleException(ex, "RegisterMessage");
     }
 }
コード例 #8
0
        internal void ProcessCouldNotConnectError(INamedPort port, string error)
        {
            var e = new PortListenerEventArgs(port, error);

            if (PortListenerCouldNotConnectEvent != null)
            {
                PortListenerCouldNotConnectEvent(this, e);
            }
        }
コード例 #9
0
        public void OnEndOfLogFileData(INamedPort port, MeasMsg measMsg)
        {
            var e = new PortListenerEventArgs(port, measMsg);

            if (EndOfLogFileData != null)
            {
                EndOfLogFileData(this, e);
            }
        }
コード例 #10
0
        internal void ProcessPortStatusData(INamedPort port, string msg)
        {
            var e = new PortListenerEventArgs(port, msg);

            if (PortStatusEvent != null)
            {
                PortStatusEvent(this, e);
            }
        }
コード例 #11
0
        public void ProcessLogFileData(INamedPort port, MeasMsg measMsg)
        {
            var e = new PortListenerEventArgs(port, measMsg);

            if (PortListenerLogFileEvent != null)
            {
                PortListenerLogFileEvent(this, e);
            }
        }
コード例 #12
0
        internal void ProcessOttParsivelData(INamedPort port, MeasMsg measMsg, string text)
        {
            var e = new PortListenerEventArgs(port, measMsg, text);

            if (OttParsivelEvent != null)
            {
                OttParsivelEvent(this, e);
            }
        }
コード例 #13
0
        // used by mmoc and modem task, smsmodem task
        internal void ProcessPlainText(INamedPort port, string messageText)
        {
            var e = new PortListenerEventArgs(port, messageText);

            if (PortListenerPlainTextEvent != null)
            {
                PortListenerPlainTextEvent(this, e);
            }
        }
コード例 #14
0
        internal void ProcessObservationData(INamedPort port, MeasMsg measMsg, string text)
        {
            var e = new PortListenerEventArgs(port, measMsg, text);

            if (PortListenerMeasMsgEvent != null)
            {
                PortListenerMeasMsgEvent(this, e);
            }
        }
コード例 #15
0
        internal void ProcessUnparsedData(INamedPort port, string text)
        {
            var e = new PortListenerEventArgs(port, text);

            if (UnparsedMsgEvent != null)
            {
                UnparsedMsgEvent(this, e);
            }
        }
コード例 #16
0
        internal void ProcessModemEventData(INamedPort port, string msg)
        {
            var e = new PortListenerEventArgs(port, msg);

            if (SerialModemEvent != null)
            {
                SerialModemEvent(this, e);
            }
        }
コード例 #17
0
        private static void ProcessObservationData(INamedPort virtualPort, string text, ParserBase parser)
        {
            MeasMsg msg = parser.ParseMessageIntoMeasMsg(text, virtualPort);

            // To AwsDataReceiver && Observation Console
            if (msg != null) // msg will be null if garbage was received
            {
                portListenerEventHandler.ProcessObservationData(virtualPort, msg, text);
            }
        }
コード例 #18
0
        private void ProcessAwacNMEAObservationData(INamedPort virtualPort, string text)
        {
            MeasMsg msg = this.awacNmeaParser.Parse(text);

            // To AwsDataReceiver && Observation Console
            if (msg != null) // msg will be null if garbage was received
            {
                portListenerEventHandler.ProcessObservationData(virtualPort, msg, text);
            }
        }
コード例 #19
0
        private void ProcessYourViewObservationData(INamedPort virtualPort, string text)
        {
            MeasMsg msg;

            yourViewParser.Parse(text, out msg);
            // To AwsDataReceiver && Observation Console
            if (msg != null) // msg will be null if garbage was received
            {
                portListenerEventHandler.ProcessObservationData(virtualPort, msg, text);
            }
        }
コード例 #20
0
 private static void ProcessWxtArObservationData(INamedPort virtualPort, string text)
 {
     try
     {
         var msg = wxtArParser.Parse(text);
         // To AwsDataReceiver && Observation Console
         if (msg != null) // msg will be null if garbage was received
         {
             portListenerEventHandler.ProcessObservationData(virtualPort, msg, text);
         }
     }
     catch (Exception ex)
     {
         ExceptionHandler.HandleException(ex, "Wxt AR message");
     }
 }
コード例 #21
0
 private static bool ProcessCeiloObservationData(INamedPort virtualPort, string text)
 {
     try
     {
         MeasMsg measMsg;
         var     ok = ceiloMsg61Parser.Parse(text, out measMsg);
         if (ok)
         {
             portListenerEventHandler.ProcessObservationData(virtualPort, measMsg, text);
         }
         return(ok);
     }
     catch (Exception ex)
     {
         ExceptionHandler.HandleException("ProcessCeiloObservationData", ex);
         return(false);
     }
 }
コード例 #22
0
        internal static void RaiseTextReceived(INamedPort ivp, string messageText)
        {
            int test = 0;

            try
            {
                test = 1;
                var e = new NamedPortEventArgs(NamedPortEventArgs.PortEventType.TextReceived, messageText, ivp);
                test++;
                if (VirtualPortEvent != null)
                {
                    test = 10;
                    VirtualPortEvent(ivp, e);
                    test = 11;
                }
            }
            catch (Exception ex)
            {
                ExceptionHandler.HandleException("RaiseTextReceived:" + test + ">", ex);
            }
        }
コード例 #23
0
        internal static void RaiseDialUpModemEvent(INamedPort port, string text)
        {
            var e = new NamedPortEventArgs(NamedPortEventArgs.PortEventType.ModemEvent, text, port);

            VirtualPortEvent?.Invoke(port, e);
        }
コード例 #24
0
        internal static void RaiseLineTimeoutEvent(INamedPort ivp)
        {
            var e = new NamedPortEventArgs(NamedPortEventArgs.PortEventType.LineIdleTimeout, ivp);

            VirtualPortEvent?.Invoke(ivp, e);
        }
コード例 #25
0
        internal static void RaiseByteReceivedEvent(INamedPort ivp, byte messageBytes)
        {
            var e = new NamedPortEventArgs(NamedPortEventArgs.PortEventType.ByteReceived, messageBytes, ivp);

            VirtualPortEvent?.Invoke(ivp, e);
        }
コード例 #26
0
 internal PortListenerEventArgs(INamedPort port, MeasMsg measMsg, string text)
 {
     _text        = text;
     virtualPort  = port;
     this.measMsg = measMsg;
 }
コード例 #27
0
 internal PortListenerEventArgs(INamedPort port, string text)
 {
     _text       = text;
     virtualPort = port;
 }
コード例 #28
0
        private static void ProcessPwdMsg7(INamedPort virtualPort, string text)
        {
            var parser = pwdMsg7Parser;

            ProcessObservationData(virtualPort, text, parser);
        }
コード例 #29
0
        internal static void RaiseTextWithEndCharReceived(INamedPort ivp, string messageText)
        {
            var e = new NamedPortEventArgs(NamedPortEventArgs.PortEventType.DataWithEndCharReceived, messageText, ivp);

            VirtualPortEvent?.Invoke(ivp, e);
        }
コード例 #30
0
 internal PortListenerEventArgs(INamedPort port, MeasMsg msg)
 {
     measMsg     = msg;
     virtualPort = port;
 }