예제 #1
0
 /// <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);
 }
예제 #2
0
        /// <summary>
        /// Initializes the controls.
        /// </summary>
        private void Initialize()
        {
            DotNetServerCB.Items.Clear();
            List <DotNetOpcServer> servers = DotNetOpcServer.EnumServers();

            foreach (DotNetOpcServer server in servers)
            {
                DotNetServerCB.Items.Add(server);
            }
            DotNetServerCB.SelectedIndex = -1;
            WrapperCB.Items.Clear();
            List <DotNetOpcServerWrapper> wrappers = DotNetOpcServerWrapper.EnumWrappers();

            foreach (DotNetOpcServerWrapper wrapper in wrappers)
            {
                WrapperCB.Items.Add(wrapper);
            }
            ParametersCTRL.Initialize(null);
        }
예제 #3
0
 private void DotNetServerCB_SelectedIndexChanged(object sender, EventArgs e)
 {
     try
     {
         DotNetOpcServer server = DotNetServerCB.SelectedItem as DotNetOpcServer;
         if (server == null)
         {
             return;
         }
         if (String.IsNullOrEmpty(ProgIdTB.Text))
         {
             ProgIdTB.Text = server.ProgId + ".Wrapped";
         }
         if (String.IsNullOrEmpty(ClsidTB.Text))
         {
             ClsidTB.Text = Guid.NewGuid().ToString();
         }
         // display the supported specifications.
         StringBuilder specifications = new StringBuilder();
         foreach (Specifications value in Enum.GetValues(typeof(Specifications)))
         {
             if ((server.Specifications & value) != 0)
             {
                 if (specifications.Length > 0)
                 {
                     specifications.Append(", ");
                 }
                 specifications.Append(value);
             }
         }
         if (specifications.Length == 0)
         {
             specifications.Append(Specifications.None);
         }
         SpecificationsTB.Text = specifications.ToString();
     }
     catch (Exception exception)
     {
         GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
     }
 }
예제 #4
0
 private void BrowseBTN_Click(object sender, EventArgs e)
 {
     try
     {
         Cursor = Cursors.WaitCursor;
         // select file.
         using (OpenFileDialog dialog = new OpenFileDialog())
         {
             dialog.CheckFileExists  = true;
             dialog.CheckPathExists  = true;
             dialog.DefaultExt       = ".dll";
             dialog.Filter           = ".NET Assemblies (*.dll)|*.dll|All Files (*.*)|*.*";
             dialog.ValidateNames    = true;
             dialog.Title            = "Load .NET Assembly";
             dialog.RestoreDirectory = true;
             dialog.AddExtension     = true;
             dialog.FileName         = "";
             dialog.InitialDirectory = m_currentDirectory;
             if (dialog.ShowDialog() != DialogResult.OK)
             {
                 return;
             }
             DotNetOpcServer.RegisterAssembly(dialog.FileName);
             m_currentDirectory = new FileInfo(dialog.FileName).DirectoryName;
         }
         Initialize();
         if (DotNetServerCB.SelectedIndex == -1 && DotNetServerCB.Items.Count > 0)
         {
             DotNetServerCB.SelectedIndex = 0;
         }
         if (WrapperCB.SelectedIndex == -1 && WrapperCB.Items.Count > 0)
         {
             WrapperCB.SelectedIndex = 0;
         }
     }
     finally
     {
         Cursor = Cursors.Default;
     }
 }
예제 #5
0
        /// <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);
        }