/// <summary> /// Imports a list of servers from a file. /// </summary> public static void Import(string filepath, bool register) { Export.ListOfRegisteredServers list = new Opc.ConfigTool.Export.ListOfRegisteredServers(); // read from file. XmlTextReader reader = new XmlTextReader(filepath); XmlSerializer serializer = new XmlSerializer(typeof(Export.ListOfRegisteredServers), ConfigUtils.ConfigToolSchemaUri); Export.ListOfRegisteredServers servers = (Export.ListOfRegisteredServers)serializer.Deserialize(reader); reader.Close(); if (ConfigUtils.IsEmpty(servers.Server)) { return; } // registers the servers. for (int ii = 0; ii < servers.Server.Length; ii++) { RegisteredDotNetOpcServer server = Import(servers.Server[ii]); if (register) { server.Register(); } else { server.Unregister(); } } }
/// <summary> /// Exports a server to a export file. /// </summary> private static Export.RegisteredServer Export(RegisteredDotNetOpcServer server) { Export.RegisteredServer serverToExport = new Export.RegisteredServer(); serverToExport.Clsid = server.Clsid.ToString(); serverToExport.ProgId = server.ProgId; if (server.Description != server.ProgId) { serverToExport.Description = server.Description; } serverToExport.WrapperClsid = ConfigUtils.ProgIDFromCLSID(server.WrapperClsid); serverToExport.ServerClsid = ConfigUtils.ProgIDFromCLSID(server.ServerClsid); // export parameters. serverToExport.Parameter = new Export.Parameter[server.Parameters.Count]; int index = 0; foreach (KeyValuePair <string, string> entry in server.Parameters) { Export.Parameter parameter = new Export.Parameter(); parameter.Name = entry.Key; parameter.Value = entry.Value; serverToExport.Parameter[index++] = parameter; } // return exported server. return(serverToExport); }
/// <summary> /// Displays the parameters in the control. /// </summary> public void Initialize(RegisteredDotNetOpcServer server) { Clear(); if (server != null) { foreach (KeyValuePair <string, string> entry in server.Parameters) { AddItem(entry); } } AdjustColumns(); }
/// <summary> /// Displays the parameters in the control. /// </summary> public void Initialize(RegisteredDotNetOpcServer server) { Clear(); if (server != null) { foreach (KeyValuePair<string,string> entry in server.Parameters) { AddItem(entry); } } AdjustColumns(); }
private void ExportMI_Click(object sender, EventArgs e) { try { Cursor = Cursors.WaitCursor; // select file. OpenFileDialog dialog = new OpenFileDialog(); dialog.CheckFileExists = false; dialog.CheckPathExists = true; dialog.DefaultExt = ".xml"; dialog.Filter = "Registration Files (*.xml)|*.xml|All Files (*.*)|*.*"; dialog.ValidateNames = true; dialog.Title = "Export Registered Servers"; dialog.RestoreDirectory = true; dialog.AddExtension = true; dialog.FileName = ""; dialog.InitialDirectory = m_currentDirectory; if (dialog.ShowDialog() != DialogResult.OK) { return; } RegisteredDotNetOpcServer.Export(dialog.FileName); m_currentDirectory = new FileInfo(dialog.FileName).DirectoryName; } catch (Exception exception) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception); } finally { Cursor = Cursors.Default; } }
/// <summary> /// Imports a server from a export file. /// </summary> private static RegisteredDotNetOpcServer Import(Export.RegisteredServer serverToImport) { RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer(); // assign clsid if none specified. if (String.IsNullOrEmpty(serverToImport.Clsid)) { server.Clsid = ConfigUtils.CLSIDFromProgID(serverToImport.ProgId); if (server.Clsid == Guid.Empty) { server.Clsid = Guid.NewGuid(); } } else { server.Clsid = new Guid(serverToImport.Clsid); } // get prog id and description. server.ProgId = serverToImport.ProgId; server.Description = serverToImport.Description; // parse wrapper clsid/prog id. try { server.WrapperClsid = new Guid(serverToImport.WrapperClsid); } catch { server.WrapperClsid = ConfigUtils.CLSIDFromProgID(serverToImport.WrapperClsid); } // parse wrapped server clsid/prog id. try { server.ServerClsid = new Guid(serverToImport.ServerClsid); } catch { server.ServerClsid = ConfigUtils.CLSIDFromProgID(serverToImport.ServerClsid); } // read parameters. server.Parameters.Clear(); if (!ConfigUtils.IsEmpty(serverToImport.Parameter)) { for (int ii = 0; ii < serverToImport.Parameter.Length; ii++) { Export.Parameter parameter = serverToImport.Parameter[ii]; if (parameter != null && !String.IsNullOrEmpty(parameter.Name)) { server.Parameters.Add(parameter.Name, parameter.Value); } } } // return new server. return(server); }
/// <summary> /// Initializes and displays a modal dialog. /// </summary> public RegisteredDotNetOpcServer ShowDialog(RegisteredDotNetOpcServer registeredServer) { Initialize(); m_registeredServer = registeredServer; if (registeredServer != null) { // select the .NET server. bool found = false; for (int ii = 0; ii < DotNetServerCB.Items.Count; ii++) { DotNetOpcServer server = DotNetServerCB.Items[ii] as DotNetOpcServer; if (server.Clsid == registeredServer.ServerClsid) { DotNetServerCB.SelectedIndex = ii; found = true; break; } } if (!found) { DotNetServerCB.SelectedIndex = DotNetServerCB.Items.Add(new DotNetOpcServer(registeredServer.ServerClsid)); } // select the wrapper process. found = false; for (int ii = 0; ii < WrapperCB.Items.Count; ii++) { DotNetOpcServerWrapper wrapper = WrapperCB.Items[ii] as DotNetOpcServerWrapper; if (wrapper.Clsid == registeredServer.WrapperClsid) { WrapperCB.SelectedIndex = ii; found = true; break; } } if (!found) { WrapperCB.SelectedIndex = WrapperCB.Items.Add(new DotNetOpcServerWrapper(registeredServer.WrapperClsid)); } // set the remaining parameters. ClsidTB.Text = registeredServer.Clsid.ToString(); ProgIdTB.Text = registeredServer.ProgId; DescriptionTB.Text = registeredServer.Description; ParametersCTRL.Initialize(registeredServer); } if (DotNetServerCB.SelectedIndex == -1 && DotNetServerCB.Items.Count > 0) { DotNetServerCB.SelectedIndex = 0; } if (WrapperCB.SelectedIndex == -1 && WrapperCB.Items.Count > 0) { WrapperCB.SelectedIndex = 0; } ShowDialog(); if (DialogResult != DialogResult.OK) { return(null); } return(m_registeredServer); }
private void OkBTN_Click(object sender, EventArgs e) { try { RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer(); // set the .NET server. if (DotNetServerCB.SelectedIndex == -1) { throw new ApplicationException("No .NET OPC server selected."); } server.ServerClsid = ((DotNetOpcServer)DotNetServerCB.SelectedItem).Clsid; // set the wrapper. if (WrapperCB.SelectedIndex == -1) { throw new ApplicationException("No wrapper process selected."); } server.WrapperClsid = ((DotNetOpcServerWrapper)WrapperCB.SelectedItem).Clsid; // set the clsid. if (String.IsNullOrEmpty(ClsidTB.Text)) { server.Clsid = Guid.NewGuid(); } else { server.Clsid = new Guid(ClsidTB.Text); } // set the prog id. if (String.IsNullOrEmpty(ProgIdTB.Text)) { server.ProgId = ((DotNetOpcServer)DotNetServerCB.SelectedItem).ProgId + ".Wrapped"; } else { server.ProgId = ProgIdTB.Text; } // save the decription. server.Description = DescriptionTB.Text; // save the parameters. Dictionary <string, string> parameters = ParametersCTRL.GetParameters(); if (parameters != null) { foreach (KeyValuePair <string, string> entry in parameters) { server.Parameters[entry.Key] = entry.Value; } } // remove existing registration. if (m_registeredServer != null) { m_registeredServer.Unregister(); } // update registry. server.Register(); m_registeredServer = server; // close dialog. DialogResult = DialogResult.OK; } catch (Exception exception) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception); } }
/// <summary> /// Initializes and displays a modal dialog. /// </summary> public RegisteredDotNetOpcServer ShowDialog(RegisteredDotNetOpcServer registeredServer) { Initialize(); m_registeredServer = registeredServer; if (registeredServer != null) { // select the .NET server. bool found = false; for (int ii = 0; ii < DotNetServerCB.Items.Count; ii++) { DotNetOpcServer server = DotNetServerCB.Items[ii] as DotNetOpcServer; if (server.Clsid == registeredServer.ServerClsid) { DotNetServerCB.SelectedIndex = ii; found = true; break; } } if (!found) { DotNetServerCB.SelectedIndex = DotNetServerCB.Items.Add(new DotNetOpcServer(registeredServer.ServerClsid)); } // select the wrapper process. found = false; for (int ii = 0; ii < WrapperCB.Items.Count; ii++) { DotNetOpcServerWrapper wrapper = WrapperCB.Items[ii] as DotNetOpcServerWrapper; if (wrapper.Clsid == registeredServer.WrapperClsid) { WrapperCB.SelectedIndex = ii; found = true; break; } } if (!found) { WrapperCB.SelectedIndex = WrapperCB.Items.Add(new DotNetOpcServerWrapper(registeredServer.WrapperClsid)); } // set the remaining parameters. ClsidTB.Text = registeredServer.Clsid.ToString(); ProgIdTB.Text = registeredServer.ProgId; DescriptionTB.Text = registeredServer.Description; ParametersCTRL.Initialize(registeredServer); } if (DotNetServerCB.SelectedIndex == -1 && DotNetServerCB.Items.Count > 0) { DotNetServerCB.SelectedIndex = 0; } if (WrapperCB.SelectedIndex == -1 && WrapperCB.Items.Count > 0) { WrapperCB.SelectedIndex = 0; } ShowDialog(); if (DialogResult != DialogResult.OK) { return null; } return m_registeredServer; }
private void OkBTN_Click(object sender, EventArgs e) { try { RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer(); // set the .NET server. if (DotNetServerCB.SelectedIndex == -1) { throw new ApplicationException("No .NET OPC server selected."); } server.ServerClsid = ((DotNetOpcServer)DotNetServerCB.SelectedItem).Clsid; // set the wrapper. if (WrapperCB.SelectedIndex == -1) { throw new ApplicationException("No wrapper process selected."); } server.WrapperClsid = ((DotNetOpcServerWrapper)WrapperCB.SelectedItem).Clsid; // set the clsid. if (String.IsNullOrEmpty(ClsidTB.Text)) { server.Clsid = Guid.NewGuid(); } else { server.Clsid = new Guid(ClsidTB.Text); } // set the prog id. if (String.IsNullOrEmpty(ProgIdTB.Text)) { server.ProgId = ((DotNetOpcServer)DotNetServerCB.SelectedItem).ProgId + ".Wrapped"; } else { server.ProgId = ProgIdTB.Text; } // save the decription. server.Description = DescriptionTB.Text; // save the parameters. Dictionary<string,string> parameters = ParametersCTRL.GetParameters(); if (parameters != null) { foreach (KeyValuePair<string,string> entry in parameters) { server.Parameters[entry.Key] = entry.Value; } } // remove existing registration. if (m_registeredServer != null) { m_registeredServer.Unregister(); } // update registry. server.Register(); m_registeredServer = server; // close dialog. DialogResult = DialogResult.OK; } catch (Exception exception) { GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception); } }
/// <summary> /// Imports a server from a export file. /// </summary> private static RegisteredDotNetOpcServer Import(Export.RegisteredServer serverToImport) { RegisteredDotNetOpcServer server = new RegisteredDotNetOpcServer(); // assign clsid if none specified. if (String.IsNullOrEmpty(serverToImport.Clsid)) { server.Clsid = ConfigUtils.CLSIDFromProgID(serverToImport.ProgId); if (server.Clsid == Guid.Empty) { server.Clsid = Guid.NewGuid(); } } else { server.Clsid = new Guid(serverToImport.Clsid); } // get prog id and description. server.ProgId = serverToImport.ProgId; server.Description = serverToImport.Description; // parse wrapper clsid/prog id. try { server.WrapperClsid = new Guid(serverToImport.WrapperClsid); } catch { server.WrapperClsid = ConfigUtils.CLSIDFromProgID(serverToImport.WrapperClsid); } // parse wrapped server clsid/prog id. try { server.ServerClsid = new Guid(serverToImport.ServerClsid); } catch { server.ServerClsid = ConfigUtils.CLSIDFromProgID(serverToImport.ServerClsid); } // read parameters. server.Parameters.Clear(); if (!ConfigUtils.IsEmpty(serverToImport.Parameter)) { for (int ii = 0; ii < serverToImport.Parameter.Length; ii++) { Export.Parameter parameter = serverToImport.Parameter[ii]; if (parameter != null && !String.IsNullOrEmpty(parameter.Name)) { server.Parameters.Add(parameter.Name, parameter.Value); } } } // return new server. return server; }
/// <summary> /// Exports a server to a export file. /// </summary> private static Export.RegisteredServer Export(RegisteredDotNetOpcServer server) { Export.RegisteredServer serverToExport = new Export.RegisteredServer(); serverToExport.Clsid = server.Clsid.ToString(); serverToExport.ProgId = server.ProgId; if (server.Description != server.ProgId) { serverToExport.Description = server.Description; } serverToExport.WrapperClsid = ConfigUtils.ProgIDFromCLSID(server.WrapperClsid); serverToExport.ServerClsid = ConfigUtils.ProgIDFromCLSID(server.ServerClsid); // export parameters. serverToExport.Parameter = new Export.Parameter[server.Parameters.Count]; int index = 0; foreach (KeyValuePair<string,string> entry in server.Parameters) { Export.Parameter parameter = new Export.Parameter(); parameter.Name = entry.Key; parameter.Value = entry.Value; serverToExport.Parameter[index++] = parameter; } // return exported server. return serverToExport; }
/// <summary> /// Processes the command line arguments. /// </summary> private static bool ProcessCommandLine() { string commandLine = Environment.CommandLine; List <string> tokens = new List <string>(); bool quotedToken = false; StringBuilder token = new StringBuilder(); for (int ii = 0; ii < commandLine.Length; ii++) { char ch = commandLine[ii]; if (quotedToken) { if (ch == '"') { if (token.Length > 0) { tokens.Add(token.ToString()); token = new StringBuilder(); } quotedToken = false; continue; } token.Append(ch); } else { if (token.Length == 0) { if (ch == '"') { quotedToken = true; continue; } } if (Char.IsWhiteSpace(ch)) { if (token.Length > 0) { tokens.Add(token.ToString()); token = new StringBuilder(); } continue; } token.Append(ch); } } if (token.Length > 0) { tokens.Add(token.ToString()); } // launch gui if no arguments provided. if (tokens.Count == 1) { return(false); } bool silent = false; for (int ii = 1; ii < tokens.Count; ii++) { if (tokens[ii] == "-?") { StreamReader reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Opc.ConfigTool.HelpText.txt")); MessageBox.Show(reader.ReadToEnd(), "Opc.ConfigTool"); reader.Close(); return(true); } if (tokens[ii] == "-s") { silent = true; continue; } try { if (tokens[ii] == "-ra") { if (tokens.Count - ii != 2) { throw new ArgumentException("Incorrect number of parameters specified with the -ra option."); } DotNetOpcServer.RegisterAssembly(tokens[ii + 1]); return(true); } if (tokens[ii] == "-ua") { if (tokens.Count - ii != 2) { throw new ArgumentException("Incorrect number of parameters specified with the -ua option."); } DotNetOpcServer.UnregisterAssembly(tokens[ii + 1]); return(true); } if (tokens[ii] == "-rx") { if (tokens.Count - ii != 2) { throw new ArgumentException("Incorrect number of parameters specified with the -rx option."); } RegisteredDotNetOpcServer.Import(tokens[ii + 1], true); return(true); } if (tokens[ii] == "-ux") { if (tokens.Count - ii != 2) { throw new ArgumentException("Incorrect number of parameters specified with the -ux option."); } RegisteredDotNetOpcServer.Import(tokens[ii + 1], false); return(true); } } catch (Exception e) { if (!silent) { new ExceptionDlg().ShowDialog("Opc.ConfigTool", e); return(true); } } } return(true); }