コード例 #1
0
        public WatchItem(int index, ESignalType type)
        {
            this.index      = index;
            this.signalType = type;
            switch (type)
            {
            case ESignalType.DI:
                DIStruct signaldi = DIStruct.FindByIndex(index);
                signaldi.PropertyChanged += Signal_PropertyChanged;
                break;

            case ESignalType.AI:
                AIStruct signalai = AIStruct.FindByIndex(index);
                signalai.PropertyChanged += Signal_PropertyChanged;
                break;

            case ESignalType.DO:
                DOStruct signaldo = DOStruct.FindByIndex(index);
                signaldo.PropertyChanged += Signal_PropertyChanged;
                break;

            case ESignalType.AO:
                AOStruct signalao = AOStruct.FindByIndex(index);
                signalao.PropertyChanged += Signal_PropertyChanged;
                break;
            }
        }
コード例 #2
0
        /// <summary>
        /// актуализировать привязку
        /// </summary>
        public void RefreshLink()
        {
            if (index > -1)
            {
                switch (signalType)
                {
                case ESignalType.DI:
                    DIStruct signaldi = DIStruct.FindByIndex(index);
                    signaldi.PropertyChanged += Signal_PropertyChanged;
                    break;

                case ESignalType.AI:
                    AIStruct signalai = AIStruct.FindByIndex(index);
                    signalai.PropertyChanged += Signal_PropertyChanged;
                    break;

                case ESignalType.DO:
                    DOStruct signaldo = DOStruct.FindByIndex(index);
                    signaldo.PropertyChanged += Signal_PropertyChanged;
                    break;

                case ESignalType.AO:
                    AOStruct signalao = AOStruct.FindByIndex(index);
                    signalao.PropertyChanged += Signal_PropertyChanged;
                    break;
                }
            }
        }
コード例 #3
0
        private void Empty_Filter(object sender, FilterEventArgs e)
        {
            AIStruct item = e.Item as AIStruct;

            if (item != null)
            {
                if (item.NameAI == null)
                {
                    e.Accepted = !hideEmpty;
                }
                else
                {
                    e.Accepted = true;
                }
            }
        }
コード例 #4
0
        private void Name_Filter(object sender, FilterEventArgs e)
        {
            AIStruct item = e.Item as AIStruct;

            if (item != null)
            {
                if (item.NameAI != null)
                {
                    if (item.NameAI.ToLower().Contains(NameFilter.ToLower()))
                    {
                        e.Accepted = true;
                    }
                    else
                    {
                        e.Accepted = false;
                    }
                }
            }
        }
コード例 #5
0
ファイル: CL_MPNA.cs プロジェクト: YustasGals/Simulator_MPSA
        /// <summary>
        /// Обновление ссылок
        /// </summary>
        public void UpdateRefs()
        {
            ABB  = DOStruct.FindByIndex(_ABBindxArrDO);
            ABO  = DOStruct.FindByIndex(_ABOindxArrDO);
            ABO2 = DOStruct.FindByIndex(_ABO2indxArrDO);

            MBC12 = DIStruct.FindByIndex(_MBC12indxArrDI);
            MBC22 = DIStruct.FindByIndex(_MBC22indxArrDI);
            ECB   = DIStruct.FindByIndex(_ECBindxArrDI);
            ECO   = DIStruct.FindByIndex(_ECO12indxArrDI);
            CT_AI = AIStruct.FindByIndex(_CTindxArrDI);
            MBC11 = DIStruct.FindByIndex(_MBC11indxArrDI);
            MBC21 = DIStruct.FindByIndex(_MBC21indxArrDI);
            ECx   = DIStruct.FindByIndex(_ECxindxArrDI);
            ECO11 = DIStruct.FindByIndex(_ECO11indxArrDI);
            EC    = DIStruct.FindByIndex(_ECindxArrDI);

            /*current = AIStruct.FindByIndex(_current_indexArrAi);
             * RPM = AIStruct.FindByIndex(_RPMindxArrAI);*/
        }
コード例 #6
0
        private void Filter_Func(object sender, FilterEventArgs e)
        {
            AIStruct item = e.Item as AIStruct;

            if (item != null)
            {
                if (item.NameAI == "")
                {
                    e.Accepted = !hideEmpty;
                }
                else
                {
                    if ((item.NameAI.ToLower().Contains(_nameFilter.ToLower())) && (item.TegAI.ToLower().Contains(_tagFilter.ToLower())))
                    {
                        e.Accepted = true;
                    }
                    else
                    {
                        e.Accepted = false;
                    }
                }
            }
        }
コード例 #7
0
        private static void ReadSignals(OleDbConnection conn)
        {
            OleDbCommand cmd = new OleDbCommand
            {
                Connection = conn
            };

            // Get all Sheets in Excel File
            DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

            // Loop through all Sheets to get data
            string sheetName = "";

            //==================================================== ЧТЕНИЕ ТАБЛИЦЫ СИГНАЛОВ ==========================================================
            foreach (DataRow dr in dtSheet.Rows)
            {
                sheetName = dr["TABLE_NAME"].ToString();
                if (sheetName.Contains("Таблица сигналов"))
                {
                    //LogViewModel.WriteLine("Таблица сигналов найдена, чтение данных...");
                    LogWriter.AppendLog("Таблица сигналов найдена, чтение данных...");
                    break;
                }
            }

            // Get all rows from the Sheet
            cmd.CommandText = "SELECT * FROM [" + sheetName + "]";

            DataTable dt = new DataTable
            {
                TableName = sheetName
            };

            OleDbDataAdapter da = new OleDbDataAdapter(cmd);

            da.Fill(dt);

            //       ds.Tables.Add(dt);

            foreach (DataColumn col in dt.Columns)
            {
                LogWriter.AppendLog(col.ColumnName);
            }
            //LogViewModel.WriteLine(col.ColumnName);

            //--- тип сигнала ai,di,do ---
            string signalType = "";
            //---адрес сигнала ---
            double currentAddr = 0;
            //---- номер бита если попадется
            int bit = 0;
            //----
            string tagName    = "";
            string signalName = "";

            //--- номер сигнала, пригодится---
            int NSign = 0;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //  mod =(string)dt.Rows[i].ItemArray[1];
                if (!(dt.Rows[i].ItemArray[1] is DBNull))
                {
                    signalType = (string)dt.Rows[i].ItemArray[1];
                }

                // addr = (string)dt.Rows[i].ItemArray[6];
                // if (!(dt.Rows[i].ItemArray[6] is DBNull))
                if (dt.Rows[i].ItemArray[6] is double)
                {
                    currentAddr = (double)dt.Rows[i].ItemArray[6];
                }
                else if (dt.Rows[i].ItemArray[6] is string)
                {
                    currentAddr = double.Parse((string)dt.Rows[i].ItemArray[6]);
                }

                try
                {
                    if (dt.Rows[i].ItemArray[7] is string)
                    {
                        bit = int.Parse((string)dt.Rows[i].ItemArray[7]);
                    }
                    else if (dt.Rows[i].ItemArray[7] is double)
                    {
                        bit = (int)((double)dt.Rows[i].ItemArray[7]);
                    }
                    else
                    {
                        bit = 0;
                    }

                    if (dt.Rows[i].ItemArray[8] is string)
                    {
                        NSign = int.Parse((string)dt.Rows[i].ItemArray[8]);
                    }
                    else if (dt.Rows[i].ItemArray[8] is double)
                    {
                        NSign = (int)((double)dt.Rows[i].ItemArray[8]);
                    }
                    else
                    {
                        NSign = 0;
                    }
                }
                catch (Exception ex)
                {
                    LogWriter.AppendLog(ex.Message);
                }

                try
                {
                    tagName = (string)dt.Rows[i].ItemArray[4];
                }
                catch
                {
                    tagName = "";
                }

                try
                {
                    signalName = (string)dt.Rows[i].ItemArray[5];
                }
                catch
                {
                    signalName = "";
                }

                if (signalType.ToLower() == "ai" && signalName != "")
                {
                    AIStruct ai = new AIStruct
                    {
                        En      = true,
                        NameAI  = signalName,
                        TegAI   = tagName,
                        PLCAddr = (int)currentAddr - 300000 + 40000
                    };
                    AIStruct.items.Add(ai);
                    //LogViewModel.WriteLine("прочитан сигнал AI: " + ai.NameAI);
                }

                if (signalType.ToLower() == "di" && signalName != "")
                {
                    DIStruct di = new DIStruct
                    {
                        En = true,

                        NameDI = signalName,
                        TegDI  = tagName,

                        PLCAddr = (int)currentAddr - 300000 + 40000,

                        indxBitDI = bit,

                        Nsign = NSign
                    };
                    DIStruct.items.Add(di);
                }

                if (signalType.ToLower() == "do" && signalName != "")
                {
                    DOStruct _do = new DOStruct
                    {
                        En     = true,
                        TegDO  = tagName,
                        NameDO = signalName,

                        PLCAddr   = (int)currentAddr - 400000,
                        indxBitDO = bit,
                        Nsign     = NSign
                    };
                    DOStruct.items.Add(_do);
                }
            }
            cmd = null;
        }
コード例 #8
0
        void ReadTableAI(StreamReader reader)
        {
            int    Nline = 2;
            string line;
            //CultureInfo culture = new CultureInfo("ru-RU");
            CultureInfo culture = new CultureInfo("en-US");

            //считываем страницу DI
            try
            {
                reader.ReadLine();//пропускаем строку с заголовками
                List <AIStruct> items = new List <AIStruct>();
                while (!reader.EndOfStream)
                {
                    line = reader.ReadLine();


                    string[] values = line.Split('\t');
                    if (values.Count() < 11)
                    {
                        continue;
                        //  System.Windows.Forms.MessageBox.Show("Ошибка чтения файла");
                    }
                    AIStruct item = new AIStruct
                    {
                        En          = bool.Parse(values[0]),
                        indxAI      = int.Parse(values[1]),
                        OPCtag      = values[2],
                        PLCAddr     = int.Parse(values[3]),
                        PLCDestType = (EPLCDestType)Enum.Parse(typeof(EPLCDestType), values[4]),

                        Forced      = bool.Parse(values[5]),
                        ForcedValue = float.Parse(values[6], culture),
                        fValAI      = float.Parse(values[7], culture),
                        minACD      = ushort.Parse(values[8], culture),
                        maxACD      = ushort.Parse(values[9], culture),
                        minPhis     = float.Parse(values[10], culture),
                        maxPhis     = float.Parse(values[11], culture)
                    };


                    if (values.Length > 11)
                    {
                        item.TegAI = values[12];
                    }

                    if (values.Length > 12)
                    {
                        item.NameAI = values[13];
                    }

                    items.Add(item);

                    Nline++;
                }

                //    Debug.WriteLine(count.ToString() + " successfuly parsed");
                //     AIStruct.items.Clear();
                foreach (AIStruct item in items)
                {
                    AIStruct.items.Add(item);
                }

                //DITableViewModel.Instance.Init(DIStruct.items);
                //    dataGridDI.ItemsSource = DITableViewModel.Instance.viewSource.View;

                //обновление ссылок
                foreach (KLStruct kl in KLTableViewModel.KL)
                {
                    kl.UpdateRefs();
                }

                foreach (ZDStruct zd in ZDTableViewModel.ZDs)
                {
                    zd.UpdateRefs();
                }

                foreach (VSStruct vs in VSTableViewModel.VS)
                {
                    vs.UpdateRefs();
                }

                foreach (MPNAStruct mpna in MPNATableViewModel.MPNAs)
                {
                    mpna.UpdateRefs();
                }

                foreach (USOCounter counter in CountersTableViewModel.Counters)
                {
                    counter.Refresh();
                }

                foreach (WatchItem item in WatchItem.Items)
                {
                    item.RefreshLink();
                }
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show("Ошибка импорта таблицы AI в строке " + Nline.ToString() + ":\n\r" + ex.Message);
            }
        }
コード例 #9
0
 public WatchItem(AIStruct signal)
 {
     index                   = signal.indxAI;
     signalType              = ESignalType.AI;
     signal.PropertyChanged += Signal_PropertyChanged;
 }