public PATConfiguration(PAT pat)
        {
            InitializeComponent();

            foreach (var patItem in pat.PatItems)
            {
                colPatItem.Add(patItem.Key);

                if (flag)
                {
                    foreach (var regItem in patItem.Value.RegItems)
                    {
                        colRegItem.Add(regItem.Key);
                    }
                    flag = false;
                }
            }

            if (colRegItem.Count == 0)
            {
                colRegItem.Add("1C");
            }

            lstPatItem.ItemsSource = colPatItem;
            lstRegItem.ItemsSource = colRegItem;
        }
        private void mitNew_Click(object sender, RoutedEventArgs e)
        {
            pat = new PAT()
            {
                PosOfClock = 0, PosOfData = 1, UserID = "0"
            };
            txtPosOfClock.Text = "0";
            txtPosOfData.Text  = "1";
            txtUserID.Text     = "0";
            txtDataOf1C.Text   = sDataOf1C;
            txtData.Text       = "0";

            btnConfiguration.IsEnabled = true;
            txtPosOfClock.IsReadOnly   = false;
            txtPosOfData.IsReadOnly    = false;
            txtUserID.IsReadOnly       = false;
            txtDataOf1C.IsReadOnly     = false;
        }
        private void btnConfiguration_Click(object sender, RoutedEventArgs e)
        {
            PATConfiguration config = new PATConfiguration(pat);

            config.ShowDialog();

            if (config.listPatItemName != null && config.listRegItemName != null)
            {
                PAT patNew = new PAT();
                patNew.PosOfClock = pat.PosOfClock;
                patNew.PosOfData  = pat.PosOfData;
                patNew.UserID     = pat.UserID;

                foreach (var patName in config.listPatItemName)
                {
                    if (pat.PatItems.Any(x => x.Key == patName))
                    {
                        PATItem patItem    = pat.PatItems[patName];
                        PATItem patItemNew = new PATItem();
                        foreach (var regName in config.listRegItemName)
                        {
                            if (patItem.RegItems.Any(x => x.Key == regName))
                            {
                                patItemNew.RegItems.Add(regName, patItem.RegItems[regName]);
                            }
                            else
                            {
                                patItemNew.RegItems.Add(regName, "0");
                            }
                        }
                        patNew.PatItems.Add(patName, patItemNew);
                    }
                    else
                    {
                        PATItem patItemNew = new PATItem();
                        foreach (var regName in config.listRegItemName)
                        {
                            if (regName == "1C")
                            {
                                patItemNew.RegItems.Add(regName, sDataOf1C);
                            }
                            else
                            {
                                patItemNew.RegItems.Add(regName, "0");
                            }
                        }
                        patNew.PatItems.Add(patName, patItemNew);
                    }
                }

                pat = patNew;

                L1.Items.Clear();
                foreach (var patItem in pat.PatItems)
                {
                    TreeViewItem L2 = new TreeViewItem();
                    L2.Header = patItem.Key;
                    L1.Items.Add(L2);
                    foreach (var regitem in patItem.Value.RegItems)
                    {
                        TreeViewItem L3 = new TreeViewItem();
                        L3.Header = regitem.Key;
                        L2.Items.Add(L3);
                    }
                }

                listRegItemName = config.listRegItemName;
            }
        }