public void Process(OffGasEvent _event)
 {
     try
     {
         this._Module._Heat.OffGasHistory.Add(_event);
     }
     catch { }
 }
        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            m_vPathIsOutput = !VPathDataIsEqual(HDataList[m_position].Bunkers, m_vPathDataLast);
            if (m_vPathIsOutput) {
                Console.WriteLine(
                    "{17:0000}: {0:00000} > {1:000} | {2:0000.0} | {3:00.0} | {4:00.0} | {5:00.0} | {6:00.0} | {7:00.0} | {8:00.0} " +
                    "| {9:0000} | {10:0000} | {11:0000} | {12:0000} | {13:0000} | {14:0000} | {15:0000} | {16:0000}",
                    m_totalO2,
                    HDataList[m_position].HeightLance,
                    HDataList[m_position].RateO2,
                    HDataList[m_position].H2,
                    HDataList[m_position].O2,
                    HDataList[m_position].CO,
                    HDataList[m_position].CO2,
                    HDataList[m_position].N2,
                    HDataList[m_position].Ar,
                    HDataList[m_position].Bunkers.RB5,
                    HDataList[m_position].Bunkers.RB6,
                    HDataList[m_position].Bunkers.RB7,
                    HDataList[m_position].Bunkers.RB8,
                    HDataList[m_position].Bunkers.RB9,
                    HDataList[m_position].Bunkers.RB10,
                    HDataList[m_position].Bunkers.RB11,
                    HDataList[m_position].Bunkers.RB12,
                    ++m_step
                    );
                m_vPathDataLast = HDataList[m_position].Bunkers;
            }
            else {
                Console.WriteLine(
                    "{9:0000}: {0:00000} > {1:000} | {2:0000.0} | {3:00.0} | {4:00.0} | {5:00.0} | {6:00.0} | {7:00.0} | {8:00.0}",
                    m_totalO2,
                    HDataList[m_position].HeightLance,
                    HDataList[m_position].RateO2,
                    HDataList[m_position].H2,
                    HDataList[m_position].O2,
                    HDataList[m_position].CO,
                    HDataList[m_position].CO2,
                    HDataList[m_position].N2,
                    HDataList[m_position].Ar,
                    ++m_step
                    );
            }
            var le = new LanceEvent();
            le.LanceHeight = HDataList[m_position].HeightLance;
            le.O2Flow = HDataList[m_position].RateO2;
            le.O2TotalVol = (int) m_totalO2;

            var offGA = new OffGasAnalysisEvent();
            offGA.H2 = HDataList[m_position].H2;
            offGA.O2 = HDataList[m_position].O2;
            offGA.CO = HDataList[m_position].CO;
            offGA.CO2 = HDataList[m_position].CO2;
            offGA.N2 = HDataList[m_position].N2;
            offGA.Ar = HDataList[m_position].Ar;

            var fex = new FlexHelper("UDP.OffGasAnalysisEvent");
            fex.AddArg("H2", HDataList[m_position].H2);
            fex.AddArg("O2", HDataList[m_position].O2);
            fex.AddArg("CO", HDataList[m_position].CO);
            fex.AddArg("CO2", HDataList[m_position].CO2);
            fex.AddArg("N2", HDataList[m_position].N2);
            fex.AddArg("Ar", HDataList[m_position].Ar);
            fex.Fire(MainGate);

            var offG = new OffGasEvent();
            offG.OffGasFlow = HDataList[m_position].VOffGas;
            offG.OffGasTemp = (int) Math.Round(HDataList[m_position].TOffGas);

            var bE = new BlowingEvent();
            bE.O2TotalVol = (int) m_totalO2;
            bE.BlowingFlag = 1;

            var vate = new visAdditionTotalEvent();
            vate.RB5TotalWeight = HDataList[m_position].Bunkers.RB5;
            vate.RB6TotalWeight = HDataList[m_position].Bunkers.RB6;
            vate.RB7TotalWeight = HDataList[m_position].Bunkers.RB7;
            vate.RB8TotalWeight = HDataList[m_position].Bunkers.RB8;
            vate.RB9TotalWeight = HDataList[m_position].Bunkers.RB9;
            vate.RB10TotalWeight = HDataList[m_position].Bunkers.RB10;
            vate.RB11TotalWeight = HDataList[m_position].Bunkers.RB11;
            vate.RB12TotalWeight = HDataList[m_position].Bunkers.RB12;

            if ((HDataList[m_position].SublanceC > 0) && !m_sublanceCIsPushed) {
                Int64 reminder = 0;
                Int64 res = Math.DivRem(m_heatNumber, 10000, out reminder);
                Int64 longHN = res*100000 + reminder;
                MainGate.PushEvent(new visSpectrluksEvent() {C = HDataList[m_position].SublanceC, HeatNumber = longHN});
                Console.WriteLine("specroluks push Heat = {0} ", longHN);
                MainGate.PushEvent(new SublanceCEvent() {C = HDataList[m_position].SublanceC});
                m_sublanceCIsPushed = true;
                Console.WriteLine("Carbone pushed C = {0}, heatNumber = {1}", HDataList[m_position].SublanceC, longHN);
            }

            var doge = new DecompressionOffGasEvent();
            m_decompressionOffGas = HDataList[m_position].DecompressionOffGas == Int32.MinValue
                                        ? m_decompressionOffGas
                                        : HDataList[m_position].DecompressionOffGas;
            doge.Decompression = m_decompressionOffGas;

            MainGate.PushEvent(le);
            MainGate.PushEvent(offGA);
            MainGate.PushEvent(offG);
            MainGate.PushEvent(bE);
            MainGate.PushEvent(doge);

            m_totalO2 += HDataList[m_position].RateO2*0.01666666666666666666666666666667;

            if (m_vPathIsOutput) MainGate.PushEvent(vate);

            //Console.WriteLine("m_position -- {0}; HDataList.Count -- {1}", m_position, HDataList.Count);
            if (m_position < HDataList.Count - 1)
                m_position++;
            else {
                Console.WriteLine("Exit 0");
                System.Environment.Exit(0);
                m_timer.Enabled = false;
            }
        }
 private bool InsertOrUpdateTrends(OffGasEvent evt)
 {
     var sql = (CheckInsert("TREND_OFFGAS", evt.iCnvNr, evt.Time))
                   ? "UPDATE TREND_OFFGAS " +
                     "SET FLOW = :FLOW, TEMP = :TEMP, HOODPOS = :HOODPOS, FILTER = :FILTER, CNT = :CNT " +
                     "WHERE CNV_NO = :CNV_NO AND INSERTTIME = :INSERTTIME "
                   : "INSERT INTO TREND_OFFGAS(FLOW, TEMP, HOODPOS, FILTER, CNT, CNV_NO, INSERTTIME) " +
                     "VALUES (:FLOW, :TEMP, :HOODPOS, :FILTER, :CNT, :CNV_NO, :INSERTTIME) ";
     var parametres = new List<OracleParameter>
                          {
                              SetParams("FLOW", evt.OffGasFlow),
                              SetParams("TEMP", evt.OffGasTemp),
                              SetParams("HOODPOS", evt.OffGasHoodPos),
                              SetParams("FILTER", evt.OffGasFilterControlPos),
                              SetParams("CNT", evt.OffGasCounter)
                          };
     parametres.AddRange(MandatoryParams(evt.iCnvNr, evt.Time));
     return ExecuteNonQuery(sql, parametres);
 }
        private bool DoOffGasEvent(int iIdxInPointLi)
        {
            bool bErg = false;

             if (bIsBlasen(pointLi[iIdxInPointLi].iCnvNr)) {
            try {
               OffGasEvent evOffGas = new OffGasEvent();
               evOffGas.iCnvNr = pointLi[iIdxInPointLi].iCnvNr;
               j = findPoint("OFFGASCOUNTER",pointLi[iIdxInPointLi].iCnvNr);
               if (j >= 0) {
                  evOffGas.OffGasCounter = pointLi[j].iDataValue;
                  j = findPoint("OFFGASFLOW",pointLi[iIdxInPointLi].iCnvNr);
                  if (j >= 0) {
                     evOffGas.OffGasFlow = pointLi[j].iDataValue; // was asFloat
                     j = findPoint("OFFGASTEMP",pointLi[iIdxInPointLi].iCnvNr);
                     if (j >= 0) {
                        evOffGas.OffGasTemp = pointLi[j].iDataValue;
                        j = findPoint("GASFILTERCONTROLPOS",pointLi[iIdxInPointLi].iCnvNr);
                        if (j >= 0) {
                           evOffGas.OffGasFilterControlPos = pointLi[j].iDataValue;
                           j = findPoint("HOODPOS",pointLi[iIdxInPointLi].iCnvNr);
                           if (j >= 0) {
                              evOffGas.OffGasHoodPos = pointLi[j].iDataValue;
                              sLfdEvtMsg = evOffGas.ToString();
                              mainGate.PushEvent(evOffGas);
                              //AddLogg(evOffGas.ToString());
                              bErg = true;
                              }
                           else {
                              AddLogg("При OffGasEvent не найдена точка K" + pointLi[iIdxInPointLi].iCnvNr + " HOODPOS");
                              }
                           }
                        else {
                           AddLogg("При OffGasEvent не найдена точка K" + pointLi[iIdxInPointLi].iCnvNr +
                                   " GASFILTERCONTROLPOS");
                           }
                        }
                     else {
                        AddLogg("При OffGasEvent не найдена точка K" + pointLi[iIdxInPointLi].iCnvNr + " OFFGASTEMP");
                        }
                     }
                  else {
                     AddLogg("При OffGasEvent не найдена точка K" + pointLi[iIdxInPointLi].iCnvNr + " OFFGASFLOW");
                     }
                  }
               else {
                  AddLogg("При OffGasEvent не найдена точка K" + pointLi[iIdxInPointLi].iCnvNr + " OFFGASCOUNTER");
                  }
               }
            catch (Exception eXc) {
               sLfdEvtErr = eXc.Message;
               AddLogg("При OffGasEvent K" + pointLi[iIdxInPointLi].iCnvNr + " Exception: " + eXc.Message);
               }
            }
             return bErg;
        }