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; } }
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); } }