Exemplo n.º 1
0
        public static AlgorithmType Create(
            AlgorithmTypeValue algorithmValue,
            int index)
        {
            string minFormulaFormat = ParsingManager.TransformRawFormulaToFormulaFormat(
                algorithmValue.MinFormula
                );

            string averageFormulaFormat = ParsingManager.TransformRawFormulaToFormulaFormat(
                algorithmValue.AverageFormula
                );

            string maxFormulaFormat = ParsingManager.TransformRawFormulaToFormulaFormat(
                algorithmValue.MaxFormula
                );

            return(new AlgorithmType(
                       description: algorithmValue.Description,
                       value: index,
                       minFormulaFormat: minFormulaFormat,
                       averageFormulaFormat: averageFormulaFormat,
                       maxFormulaFormat: maxFormulaFormat,
                       analysisProgramName: algorithmValue.AnalysisProgramName,
                       outputFilenamePattern: algorithmValue.OutputFilenamePattern
                       ));
        }
Exemplo n.º 2
0
        public void ParseModbusPacket()
        {
            // SP003169<MENT(95,151,17,251,25,3,7,24,48,24,0,0,0,20,0,3,0,0,0,0,0,0,0,0,0,20,0,3,0,0,0,0,0,0,178,93)>
            // SP003199<MENT(95,156,6,32,25,3,3,0,0,20,19,10,0,0,1,98,254,153,0,0,0,0,0,0,0,0,11,74,11,4,49,170)>

            /*
             * Raw : SP002911<MENT(95,156,17,74,25,3,3,0,0,20,20,242,0,235,0,234,0,0,0,0,0,0,0,0,0,0,0,0,11,114,227,233)> Page3
             *  Data: 53.62,23.5,23.4,0,0,0,0,0,0,29.3
             * SP900019[MECM(95,192,125,175,1,4,5,0,0,66,0,251,0,16,133,36,0,0,33,135,0,15,252,125,0,0,170,46,0,0,23,152,0,16,143,19,0,11,67,100,0,5,99,71,0,9,129,106,0,7,37,65,0,16,166,157,0,0,0,14,0,16,166,156,0,0,0,15,0,16,166,151,0,0,0,20,0,0]
             * SP003230[MENT(95,189,32,28,25,3,12,27,36,80,56,39,87,80,21,24,4,238,10,240,11,184,0,38,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,168]
             * SP002968[MEMT(95,189,32,28,25,3,3,2,178,90,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,228,61]
             */
            var message = CreateModbusPacket("SP900019", "MECM",
                                             new byte[] { 95, 192, 125, 175, 1, 4, 5, 0, 0, 66, 0, 251, 0, 16, 133, 36, 0, 0, 33, 135, 0, 15, 252, 125, 0, 0, 170, 46, 0, 0, 23, 152, 0, 16, 143, 19, 0, 11, 67, 100, 0, 5, 99, 71, 0, 9, 129, 106, 0, 7, 37, 65, 0, 16, 166, 157, 0, 0, 0, 14, 0, 16, 166, 156, 0, 0, 0, 15, 0, 16, 166, 151, 0, 0, 0, 20, 0, 0 });
            //var message = "SP002411<SGRC(ID(00,30/10/2020,14:23:19)X(28.0,24.2,-65,0)H(14,45,32264261,10478812,32264298,32236195,32216922,32217082)L(99,900.35,43106,21828503,43109,71240,90465,90265)A(00101111))>";

            var packet  = ParsingManager.FirstLevelParser(message);
            var protocl = ProtocolList.Instance.Find(packet.ProtocolHeader);

            if (protocl.ProtocolType == Core.Enumerations.ProtocolType.Monitoring)
            {
                var pkt = Parser.ParsingManager.SecondLevelParser(packet);
                var str = JsonConvert.SerializeObject(pkt, Formatting.Indented);
            }
            else
            {
                var pkt = string.Format("{0}<{1}({2})>\r", packet.TerminalId, packet.ProtocolHeader, packet.Data);
            }
        }
Exemplo n.º 3
0
        public static HtmlDocument Load(string html)
        {
            ParsingManager parsingManger = new ParsingManager();
            var            document      = parsingManger.Parse(html);

            return(document);
        }
        public static AlgorithmTypeValue Create(
            AlgorithmType algorithmValue)
        {
            string rawMinFormula = ParsingManager.TransformFormulaFormatToRawFormula(
                algorithmValue.MinFormulaFormat
                );

            string rawAverageFormula = ParsingManager.TransformFormulaFormatToRawFormula(
                algorithmValue.AverageFormulaFormat
                );

            string rawMaxFormula = ParsingManager.TransformFormulaFormatToRawFormula(
                algorithmValue.MaxFormulaFormat
                );

            return(new AlgorithmTypeValue
            {
                Description = algorithmValue.Description,
                MinFormula = rawMinFormula,
                AverageFormula = rawAverageFormula,
                MaxFormula = rawMaxFormula,
                AnalysisProgramName = algorithmValue.AnalysisProgramName,
                OutputFilenamePattern = algorithmValue.OutputFilenamePattern
            });
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Upload(ICollection <IFormFile> files)
        {
            foreach (var file in files.Where(f => f.Length > 0))
            {
                if (ModelState.IsValid)
                {
                    ParsingManager.Parse(file);
                }
            }

            return(View("Index", await _context.Game.ToListAsync()));
        }
Exemplo n.º 6
0
        public void JsonParserSelectionUnitTest()
        {
            var incomingJson = GenerateJsonData(parserName: typeof(CocaColaParser).ToString());

            var parsingManager = new ParsingManager();
            var userdto        = parsingManager.ParseData(incomingJson);

            Assert.AreEqual(userdto.Email, _email);
            Assert.AreEqual(userdto.FirstName, _firstname);
            Assert.AreEqual(userdto.LastName, _lastname);
            Assert.AreEqual(userdto.Age, _age);
        }
Exemplo n.º 7
0
        public void ParseModbusGetParsing()
        {
            string            raw      = "SP003254<CMOD(GET[MNAR,38,4,4095,51,0])>";
            var               packet   = ParsingManager.FirstLevelParser(raw);
            var               str      = packet.Data.Replace("GET[", "").TrimEnd(']');
            var               strArray = str.Split(',');
            GTGetModbusDevice device   = new GTGetModbusDevice(packet.TerminalId);

            device.Parse(strArray);

            device.DeviceName = "MDPC";
            var s = device.ToString();
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            var parsingManager = new ParsingManager(new BookParser(), new JsonFileReader(), new CsvFileSaver(new CsvExport <Book>(), "outputCsv.csv"), new List <IParsingRule>()
            {
                new PriceRule()
            }, new List <IDeleteRule>()
            {
                new SabathDeleteRule(), new AuthorNameDeleteRule()
            });

            parsingManager.ParsedBookData("books.json");
            Console.WriteLine("Hello World!");
        }
Exemplo n.º 9
0
        public void SecondLevelParsing()
        {
            //SP900018[MECM(95,211,185,189,1,4,9,0,0,64,0,3,14,169,244,125,230,174,0,1,116,236,190,125,218,223,0,1,255,175,160,43,2,28,0,41,2,43,138,2,39,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
            Parser.ReceivedPacket packet = new ReceivedPacket
            {
                Data           = "95,211,185,189,1,4,9,0,0,64,0,3,14,169,244,125,230,174,0,1,116,236,190,125,218,223,0,1,255,175,160,43,2,28,0,41,2,43,138,2,39,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0",
                ProtocolHeader = "MECM",
                ReceivedOn     = DateTime.UtcNow,
                TerminalId     = "SP111111"
            };

            var pkt = ParsingManager.SecondLevelParser(packet);
            var str = JsonConvert.SerializeObject(pkt, Formatting.Indented);
        }
Exemplo n.º 10
0
        public void FirsLevelParsing()
        {
            //CGRC00 cgrc00 = new CGRC00();
            //CGRC01 cgrc01 = new CGRC01();
            //CGRC02 cgrc02 = new CGRC02();

            string raw    = "SP333444<CGRC(ID(00,17/01/2021,07:51:07)N(+923333451191,+923468220229,+923333404763,,,,,,,,SR117R00BL01R00,13-Jan-16,16:27:21,+923,internet,,,+923,internet,,,333444,+923333451191,67.23.248.114,30004,SPMX00DT,SPMX01DT,,,,,,,1,15,2,4,30,9600,15,2)L(1000101101000000000001000000000000))\r>";
            var    packet = ParsingManager.FirstLevelParser(raw);

            var list = GTCommandFactory.GetConfiguration(packet);
            //cgrc00.Parse(packet.Data);
            //cgrc01.Parse(packet.Data);
            //cgrc02.Parse(packet.Data);
        }
Exemplo n.º 11
0
        private void SendToListener(ReceivedPacket receivedPacket)
        {
            try
            {
                if (Context != null)
                {
                    Context.TransferText(receivedPacket.ToString());
                }

                ParsingManager.SecondLevelParser(receivedPacket);
            }
            catch (Exception ex)
            {
                LoggingManager.Log(ex);
            }
        }
Exemplo n.º 12
0
        void TerminalDataReceived(object Sender, DataReceivedEventArgs e)
        {
            try
            {
                //byte[] dataBytes1 = Encoding.Default.GetBytes(e.ReceivedText);
                var result = ParsingManager.FirstLevelParser(e.ReceivedText);


                UpdateGTStatus(e.ClientSocket, result.ToString());
                SendToListener(result);
                TransferText(result.ToString());
            }
            catch (Exception ex)
            {
                LoggingManager.Log(ex);
            }
        }
Exemplo n.º 13
0
        public async Task <IHttpActionResult> PostFormData()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            var root     = HttpContext.Current.Server.MapPath("~//Templates");
            var provider = new MultipartFormDataStreamProvider(root);
            await Request.Content.ReadAsMultipartAsync(provider);

            var parser   = new ParsingManager();
            var buffer   = File.ReadAllBytes(provider.FileData.SingleOrDefault()?.LocalFileName);
            var contacts = parser.RetrieveContactsFromFile(buffer);
            var success  = await appManager.AddMultipleContacts(contacts);

            if (success == false || contacts.TrueForAll(x => x == null))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "File or data is corrupt")));
            }
            return(ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, $"Added: {contacts.Count(x => x != null)}, Failed: {contacts.Count(x => x == null)}")));
        }
Exemplo n.º 14
0
 public static ReonParsedPacket SecondLevelParsing(ReceivedPacket packet)
 {
     return(ParsingManager.SecondLevelParser(packet));
 }
        protected override void ChannelRead0(IChannelHandlerContext context, string message)
        {
            string methodName = nameof(ChannelRead0);

            Log?.Verbose(className, methodName, string.Format("{0}: [{1}]", context.Channel, message));

            try
            {
                var info = ChannelManager.Instance.FindChannelInfo(context);
                if (info != null)
                {
                    string filter       = string.Empty;
                    int    filterLenght = 3;
                    if (!string.IsNullOrEmpty(message))
                    {
                        if (message.Length > filterLenght)
                        {
                            filter = message.Substring(message.Length - filterLenght, filterLenght);
                            if (!filter.Contains(">"))
                            {
                                Log?.Warning(className, methodName, string.Format("Partial Packet Received {0}: [{1}]", context.Channel, message));
                                info.MessageBuffer.Append(message);
                                info.PartialPacket = true;
                                return;
                            }
                            else
                            {
                                info.MessageBuffer.Append(message);

                                message = info.MessageBuffer.ToString();
                                info.MessageBuffer.Clear();
                                if (info.PartialPacket)
                                {
                                    Log?.Warning(className, methodName, string.Format("Merging Partial Packets {0}: [{1}]", context.Channel, message));
                                }
                                info.PartialPacket = false;
                            }
                        }
                        else
                        {
                            info.MessageBuffer.Append(message);
                            info.PartialPacket = false;
                            message            = info.MessageBuffer.ToString();
                            info.MessageBuffer.Clear();
                            Log?.Warning(className, methodName, string.Format("Merging Partial Packets {0}: [{1}]", context.Channel, message));
                        }
                    }
                }

                string key    = string.Empty;
                var    result = ParsingManager.FirstLevelParser(message);

                if (result != null)
                {
                    if (!result.Data.Equals(TerminalHelper.PONG))
                    {
                        int logLevel = (int)WebApiServerConfigurationManager.Instance.Configurations.LogLevel;
                        if (logLevel >= (int)Component.Logging.Models.LogLevel.Debug)
                        {
                            ReceivedPacketEntity entity = new ReceivedPacketEntity
                            {
                                ReceivedOn     = result.ReceivedOn,
                                Data           = result.Data,
                                ProtocolHeader = result.ProtocolHeader,
                                TerminalId     = result.TerminalId
                            };
                            //ReceivedPacketRepository.Save(entity);
                            Logging.Logger.Instance.Log.Write(JsonConvert.SerializeObject(entity));
                        }


                        var protocol = ProtocolList.Instance.Find(result.ProtocolHeader);
                        if (protocol != null)
                        {
                            if (protocol.ProtocolType == ProtocolType.Monitoring)
                            {
                                var packet = ParsingManager.SecondLevelParser(result);
                                if (packet != null)
                                {
                                    var json = JsonConvert.SerializeObject(packet, Formatting.None);
                                    ChannelManager.Instance.UpdateChannelInfo(context, result.TerminalId);
                                    Console.WriteLine(json);
                                    if (!string.IsNullOrEmpty(json))
                                    {
                                        PushToServer(packet);
                                    }
                                }
                            }
                            else if (protocol.ProtocolType == ProtocolType.Control)
                            {
                                if (protocol.DeviceType == DeviceType.Saltec)
                                {
                                    ChannelHandler.TerminalCommandReceived(new TerminalCommandReceivedEventArgs
                                    {
                                        ChannelKey = result.TerminalId,
                                        Message    = message
                                    });
                                }
                                else if (protocol.DeviceType == DeviceType.Modbus)
                                {
                                    //string.Format("{0}<{1}({2})>\r", packet.TerminalId, packet.ProtocolHeader, packet.Data);
                                    ChannelHandler.TerminalCommandReceived(new TerminalCommandReceivedEventArgs
                                    {
                                        ChannelKey = result.TerminalId,
                                        Message    = string.Format("{0}<{1}({2})>\r", result.TerminalId, result.ProtocolHeader, result.Data)
                                    });
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log?.Error(className, methodName, ex.ToString());
            }
        }
        public static TerminalCommandResponse SendGTCommandRequest(TerminalCommandRequest commandRequest,
                                                                   GTCommandType commandType)
        {
            var config = WebApiServerConfigurationManager.Instance.Configurations;
            TerminalCommandResponse response = new TerminalCommandResponse();

            try
            {
                var connected = WebServer.server.ChannelKeys.Contains(commandRequest.TerminalId);
                if (!connected)
                {
                    return(new TerminalCommandResponse
                    {
                        RequestId = commandRequest.RequestId,
                        Data = null,//commandRequest.Data,
                        RequestType = commandRequest.RequestType,
                        ResponseStatus = ResponseStatus.Failed,
                        Message = "Site not connected."
                    });
                }
                var cmd = TerminalCommandHandler.Instance.Find(commandRequest.TerminalId);
                if (cmd != null)
                {
                    return(new TerminalCommandResponse
                    {
                        RequestId = commandRequest.RequestId,
                        Data = commandRequest.Data,
                        RequestType = commandRequest.RequestType,
                        ResponseStatus = ResponseStatus.Failed,
                        Message = "Another configuration already in process. Please try again later"
                    });
                }
                TerminalCommandHandler.Instance.Add(new TerminalCommand
                {
                    RequestData       = commandRequest.Data,
                    TerminalId        = commandRequest.TerminalId,
                    RequestReceivedOn = DateTimeHelper.CurrentUniversalTime,
                    Status            = CommandStatus.RequestReceived
                });
                WebServer.server.Notify(commandRequest);

                int retries = config.TerminalCommandRetries;
                while (retries > 0)
                {
                    retries--;
                    try
                    {
                        var command = TerminalCommandHandler.Instance.Find(commandRequest.TerminalId);
                        if (command.Status == CommandStatus.ResponseReceived)
                        {
                            TerminalCommandHandler.Instance.Remove(commandRequest.TerminalId);
                            var   data     = command.ResponseData;
                            ICGRC gtConfig = null;
                            if (!string.IsNullOrEmpty(data))
                            {
                                var packet = ParsingManager.FirstLevelParser(data);
                                gtConfig = GTCommandFactory.GetConfiguration(packet, commandType);
                            }
                            return(new TerminalCommandResponse
                            {
                                RequestId = commandRequest.RequestId,
                                Data = gtConfig,
                                RequestType = commandRequest.RequestType,
                                ResponseStatus = ResponseStatus.Success,
                                Message = "Response Received",
                                TerminalId = command.TerminalId
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                        return(new TerminalCommandResponse
                        {
                            RequestId = commandRequest.RequestId,
                            Data = null,
                            RequestType = commandRequest.RequestType,
                            ResponseStatus = ResponseStatus.Failed,
                            Message = ex.Message
                        });
                    }
                    Thread.Sleep(config.TerminalCommandRetryIntervalInSeconds * 1000);
                }

                TerminalCommandHandler.Instance.Remove(commandRequest.TerminalId);
                return(new TerminalCommandResponse
                {
                    RequestId = commandRequest.RequestId,
                    Data = null,
                    RequestType = commandRequest.RequestType,
                    ResponseStatus = ResponseStatus.Failed,
                    Message = "Request Timed Out",
                    TerminalId = commandRequest.TerminalId
                });
            }
            catch (Exception ex)
            {
                return(new TerminalCommandResponse
                {
                    RequestId = commandRequest.RequestId,
                    Data = null,
                    RequestType = commandRequest.RequestType,
                    ResponseStatus = ResponseStatus.Failed,
                    Message = ex.Message
                });
            }
        }