void loadPrj()
        {
            if (fnm != "")
            {
                treeStep7Project.Nodes.Clear();

                tmpPrj = new Step7ProjectV5(fnm, chkShowDeleted.Checked);

                //listBox1.Items.AddRange(tmp.PrgProjectFolders.ToArray());
                lblProjectName.Text = tmpPrj.ProjectName;
                lblProjectInfo.Text = tmpPrj.ProjectDescription;

                myTreeNode trnd = new myTreeNode();
                trnd.myObject   = tmpPrj.ProjectStructure;
                trnd.Text       = tmpPrj.ProjectStructure.Name;
                trnd.ImageIndex = 0;
                AddNodes(trnd, tmpPrj.ProjectStructure.SubItems);
                treeStep7Project.Nodes.Add(trnd);
            }
        }
        private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            if (lstListBox.SelectedItem == null)
                return;

            viewBlockList.Visible = false;

            if (lstListBox.SelectedItem is ProjectBlockInfo)
            {
                viewBlockList.Visible = false;

                lblStatus.Text = ((ProjectBlockInfo) lstListBox.SelectedItem).ToString();

                Block tmp;
                if (blkFld is BlocksOfflineFolder)
                    tmp = ((BlocksOfflineFolder) blkFld).GetBlock((ProjectBlockInfo) lstListBox.SelectedItem,
                        new S7ConvertingOptions(MnemonicLanguage.German)
                        {
                            GenerateCallsfromUCs = convertCallsToolStripMenuItem.Checked
                        });
                else tmp = blkFld.GetBlock((ProjectBlockInfo) lstListBox.SelectedItem);

                if (tmp != null)
                {
                    if (tmp.BlockType == PLCBlockType.UDT || tmp.BlockType == PLCBlockType.DB ||
                        tmp.BlockType == PLCBlockType.S5_DV || tmp.BlockType == PLCBlockType.S5_DB)
                    {
                        //dataBlockViewControl.DataBlockRows = ((PLCDataBlock) tmp).Structure;
                        myBlk = (IDataBlock) tmp;
                        //expRow = myBlk.Structure;
                        //if (mnuExpandDatablockArrays.Checked)
                        //    expRow = myBlk.GetArrayExpandedStructure(new S7DataBlockExpandOptions() { ExpandCharArrays = false });

                        dataBlockViewControl.ExpandDataBlockArrays = mnuExpandDatablockArrays.Checked;
                        dataBlockViewControl.DataBlock = myBlk;

                        datablockView.Visible = true;

                    }
                    else
                    {
                        txtTextBox.Text = tmp.ToString();
                        txtTextBox.Visible = true;
                    }
                }

            }
            else if (lstListBox.SelectedItem.GetType() == typeof (S7ProjectSourceInfo))
            {
                var tmp = (S7ProjectSourceInfo) lstListBox.SelectedItem;

                if (tmp != null)
                {
                    string fnm = tmp.Filename;

                    if (fnm != null && fnm != "")
                        if (System.IO.File.Exists(fnm))
                            txtTextBox.Text = new System.IO.StreamReader(tmp.Filename).ReadToEnd();
                }

                txtTextBox.Visible = true;
                //lstListBox.Visible = false;
            }

        }
Ejemplo n.º 3
0
        internal void GetBlocksAsync(string strRightProjectPath, string strLeftProjectPath)
        {
            try
            {
                EventFire.Info("Loading blocks. Begin.");

                // Trying to find a project name from the path
                strRightProjectPath = GetProjectFileNameFromPath(strRightProjectPath);
                strLeftProjectPath = GetProjectFileNameFromPath(strLeftProjectPath);
                Step7ProjectV5 left = new Step7ProjectV5(strLeftProjectPath, false);
                Step7ProjectV5 right = new Step7ProjectV5(strRightProjectPath, false);

                //grab blocks from projects
                List<ProjectBlockInfo> blkPojectLeft = GetBlocksFromProject(left.ProjectStructure);
                List<ProjectBlockInfo> blkPojectRight = GetBlocksFromProject(right.ProjectStructure);

                LeftBlocks.Clear();
                RightBlocks.Clear();

                EventFire.Info("Loading blocks. Parsing projects.");
                foreach (ProjectBlockInfo item in blkPojectLeft)
                {
                    if (item != null)
                    {
                        DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5.S7Block blk = (DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5.S7Block)item.GetBlock();
                        LeftBlocks.Add(item.ParentFolder.ToString().Replace("(zipped)", "") + "\\" + blk.BlockName, CreateNewBlock(item));
                    }
                }

                foreach (ProjectBlockInfo item in blkPojectRight)
                {
                    //if ((item != null) && (item.BlockType != PLCBlockType.SDB) && (item.BlockType != PLCBlockType.SFB) && (item.BlockType != PLCBlockType.SFC))
                    if (item != null)
                    {
                        DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5.S7Block blk = (DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5.S7Block)item.GetBlock();
                        RightBlocks.Add(item.ParentFolder.ToString().Replace("(zipped)", "") + "\\" + blk.BlockName, CreateNewBlock(item));
                    }
                }

                // Add symbol tables
                List<ISymbolTable> symLeft = GetSymbolTablesFromProject(left.ProjectStructure);
                List<ISymbolTable> symRight = GetSymbolTablesFromProject(right.ProjectStructure);

                foreach (ISymbolTable item in symLeft)
                {
                    LeftBlocks.Add(item.ToString().Replace("(zipped)", "") + "\\" + item.Name, new Block()
                    {
                        Name = item.Name,
                        SymbolicName = "Symbol Table",
                        Type = PLCBlockType.AllBlocks,
                        TypeString = "",
                        Language = PLCLanguage.SYM,
                        LanguageString = "SYM",
                        Modified = item.LastChange,
                        Size = item.SymbolTableEntrys.Count
                    });
                }

                foreach (ISymbolTable item in symRight)
                {
                    RightBlocks.Add(item.ToString().Replace("(zipped)", "") + "\\" + item.Name, new Block()
                    {
                        Name = item.Name,
                        SymbolicName = "Symbol Table",
                        Type = PLCBlockType.AllBlocks,
                        TypeString = "",
                        Language = PLCLanguage.SYM,
                        LanguageString = "SYM",
                        Modified = item.LastChange,
                        Size = item.SymbolTableEntrys.Count
                    });
                }

                // Add HMIs
                foreach (HMIFolder item in left.HMIFolders)
                {
                    LeftBlocks.Add(item.ToString().Replace("(zipped)", "") + "\\" + item.Name, new Block()
                    {
                        Name = item.Type.ToString(),    // HMI type
                        SymbolicName = item.Name,       // Full station name
                        Type = PLCBlockType.AllBlocks,
                        TypeString = "",
                        Language = PLCLanguage.HMI,
                        LanguageString = "HMI",
                        Modified = item.Modified,
                        Size = null
                    });
                }

                foreach (HMIFolder item in right.HMIFolders)
                {
                    RightBlocks.Add(item.ToString().Replace("(zipped)", "") + "\\" + item.Name, new Block()
                    {
                        Name = item.Type.ToString(),    // HMI type
                        SymbolicName = item.Name,       // Full station name
                        Type = PLCBlockType.AllBlocks,
                        TypeString = "",
                        Language = PLCLanguage.HMI,
                        LanguageString = "HMI",
                        Modified = item.Modified,
                        Size = null
                    });
                }

                // Add HW configs
                foreach (ProjectFolder item in left.ProjectStructure.SubItems)
                {
                    if (item.GetType() == typeof(StationConfigurationFolder))
                    {
                        StationConfigurationFolder it = (StationConfigurationFolder)item;
                        LeftBlocks.Add(it.ToString().Replace("(zipped)", "") + "\\" + it.Name, new Block()
                        {
                            Name = "HW Config",    // HW config type
                            SymbolicName = it.Name,       // Full station name
                            Type = PLCBlockType.AllBlocks,
                            TypeString = "",
                            Language = PLCLanguage.HWC,
                            LanguageString = "HWC",
                            Modified = it.HW_Config_Modified,
                            Size = (int)it.HW_Config_Size
                        });
                    }
                }

                foreach (ProjectFolder item in right.ProjectStructure.SubItems)
                {
                    if (item.GetType() == typeof(StationConfigurationFolder))
                    {
                        StationConfigurationFolder it = (StationConfigurationFolder)item;
                        RightBlocks.Add(it.ToString().Replace("(zipped)", "") + "\\" + it.Name, new Block()
                        {
                            Name = "HW Config",    // HW config type
                            SymbolicName = it.Name,       // Full station name
                            Type = PLCBlockType.AllBlocks,
                            TypeString = "",
                            Language = PLCLanguage.HWC,
                            LanguageString = "HWC",
                            Modified = it.HW_Config_Modified,
                            Size = (int)it.HW_Config_Size
                        });
                    }
                }

                // Add orpah blocks
                foreach (String key in LeftBlocks.Keys)
                {
                    if (!RightBlocks.Keys.Contains(key))
                    {
                        RightBlocks.Add(key, new Block()
                        {
                            Name = LeftBlocks[key].Name,
                            SymbolicName = "-------NOT FOUND-------",
                            Type = PLCBlockType.AllBlocks,
                            TypeString = "",
                            Language = PLCLanguage.UNDEF,
                            LanguageString = ""
                        });
                        LeftBlocks[key].NameSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].SizeSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].SymbolicNameSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].ModifiedSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].NameSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].SizeSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].SymbolicNameSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].ModifiedSimilarity = BlockSimilarityType.Orphan;
                    }
                }

                foreach (String key in RightBlocks.Keys)
                {
                    if (!LeftBlocks.Keys.Contains(key))
                    {
                        LeftBlocks.Add(key, new Block()
                        {
                            Name = RightBlocks[key].Name,
                            SymbolicName = "-------NOT FOUND-------",
                            Type = PLCBlockType.AllBlocks,
                            TypeString = "",
                            Language = PLCLanguage.UNDEF,
                            LanguageString = ""
                        });
                        LeftBlocks[key].NameSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].SizeSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].SymbolicNameSimilarity = BlockSimilarityType.Orphan;
                        LeftBlocks[key].ModifiedSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].NameSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].SizeSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].SymbolicNameSimilarity = BlockSimilarityType.Orphan;
                        RightBlocks[key].ModifiedSimilarity = BlockSimilarityType.Orphan;
                    }
                }

                foreach (String key in RightBlocks.Keys)
                {
                    if (RightBlocks[key].SizeSimilarity != BlockSimilarityType.Orphan)
                    {
                        RightBlocks[key].NameSimilarity = RightBlocks[key].Name.Equals(LeftBlocks[key].Name) ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        RightBlocks[key].SizeSimilarity = RightBlocks[key].Size == LeftBlocks[key].Size ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        RightBlocks[key].SymbolicNameSimilarity = RightBlocks[key].SymbolicName.Equals(LeftBlocks[key].SymbolicName) ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        RightBlocks[key].ModifiedSimilarity = RightBlocks[key].Modified == LeftBlocks[key].Modified ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        LeftBlocks[key].NameSimilarity = RightBlocks[key].Name.Equals(LeftBlocks[key].Name) ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        LeftBlocks[key].SizeSimilarity = RightBlocks[key].Size == LeftBlocks[key].Size ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        LeftBlocks[key].SymbolicNameSimilarity = RightBlocks[key].SymbolicName.Equals(LeftBlocks[key].SymbolicName) ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                        LeftBlocks[key].ModifiedSimilarity = RightBlocks[key].Modified == LeftBlocks[key].Modified ? BlockSimilarityType.Identical : BlockSimilarityType.Different;
                    }
                }

                Dictionary<String, Blocks> newAllBlocks = new Dictionary<string, Blocks>();
                foreach (String key in RightBlocks.Keys)
                {
                    newAllBlocks.Add(key, new Blocks() { LeftBlock = LeftBlocks[key], RightBlock = RightBlocks[key] });
                }
                AllBlocks = newAllBlocks;

                // Assuming we got a s7 v5 project - close them
                ((DotNetSiemensPLCToolBoxLibrary.Projectfiles.Step7ProjectV5)left).Dispose();
                ((DotNetSiemensPLCToolBoxLibrary.Projectfiles.Step7ProjectV5)right).Dispose();

                NotifyPropertyChanged("LeftBlocks");
                NotifyPropertyChanged("RightBlocks");
                NotifyPropertyChanged("AllBlocks");

                EventFire.Info("Loading blocks. Process completed.");
            }
            catch (Exception err)
            {
                EventFire.Error(err.ToString());
            }
        }
 private void parseAllBlocksToolStripMenuItem_Click(object sender, EventArgs e)
 {
     MessageBox.Show("Try to parse all Blocks");
     foreach (var item in lstListBox.Items)
     {
         if (item is ProjectBlockInfo)
         {
             Block tmp;
             if (blkFld is BlocksOfflineFolder)
                 tmp = ((BlocksOfflineFolder) blkFld).GetBlock((ProjectBlockInfo) item,
                     new S7ConvertingOptions(MnemonicLanguage.German)
                     {
                         GenerateCallsfromUCs = convertCallsToolStripMenuItem.Checked
                     });
             else tmp = blkFld.GetBlock((ProjectBlockInfo) lstListBox.SelectedItem);
         }
     }
     MessageBox.Show("Finished parse all Blocks");
 }
        void loadPrj()
        {
            if (fnm != "")
            {
                treeStep7Project.Nodes.Clear();

                tmpPrj = new Step7ProjectV5(fnm, chkShowDeleted.Checked);

                //listBox1.Items.AddRange(tmp.PrgProjectFolders.ToArray());
                lblProjectName.Text = tmpPrj.ProjectName;
                lblProjectInfo.Text = tmpPrj.ProjectDescription;

                myTreeNode trnd = new myTreeNode();
                trnd.myObject = tmpPrj.ProjectStructure;
                trnd.Text = tmpPrj.ProjectStructure.Name;
                trnd.ImageIndex = 0;
                AddNodes(trnd, tmpPrj.ProjectStructure.SubItems);
                treeStep7Project.Nodes.Add(trnd);
            }
        }