示例#1
0
        }               //	end OpcServer
        //--
        #endregion

        #region Public Methods
        //--------------------------
        public void CreateOpcServer()
        {
            if (m_opcServer == null)
            {
                m_opcServer = new OpcServer();
            }           //	em=nd if
        }               //	end CreateOpcClient
        public Form1(OutProc anOutProc)
        {
            InitializeComponent();

            try{
                m_outProc = anOutProc;

                m_opcServer = m_outProc.OpcServer;
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            }           //	end try...catch
        }               //	end constructor
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            OutProc outProc = new OutProc();
            int     result  = (int)EnumResultCode.S_OK;

            try{
                //	create and initialize the OpcServer instance
                outProc.CreateOpcServer();
                OpcServer opcServer = outProc.OpcServer;
                opcServer.Initialize();

                MyCreator creator = new MyCreator();
                if (!ResultCode.SUCCEEDED(opcServer.Prepare(creator)))
                {
                    opcServer.Terminate();
                    opcServer = null;
                    return;
                }                       //	end if
                //	handle the command line arguments (register/unregister, etc)
                string commandline = Environment.CommandLine;
                result = opcServer.ProcessCommandLine(commandline);

                if (result != (uint)EnumResultCode.S_OK)
                {
                    if (result == (uint)EnumResultCode.S_FALSE)
                    {
                        //registration operation succesful
                        opcServer.Trace(
                            EnumTraceLevel.INF,
                            EnumTraceGroup.USER1,
                            "OpcForm::Main",
                            "Registration succeeded");
                    }
                    else
                    {
                        opcServer.Trace(
                            EnumTraceLevel.INF,
                            EnumTraceGroup.USER1,
                            "OpcForm::Main",
                            "Registration failed");
                    }                           //	end if...else

                    //	no matter what close the application if
                    //processCommandLine returned something different of S_OK
                    opcServer.Terminate();
                    opcServer = null;
                    return;
                }

                //	start the OPC server's I/O internal mechanism
                if (ResultCode.SUCCEEDED(opcServer.Start()))
                {
                    //	build the namespace
                    opcServer.BuildAddressSpace();
                    //	declare the namespaces built and the server ready for clients to connect
                    opcServer.Ready();
                }                       //	end if

                Form1 opcForm = new Form1(outProc);

                opcServer.MainForm = opcForm;

                Application.Run(opcForm);


                opcServer.Stop();
                opcServer.Terminate();
                opcServer = null;
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.ToString());
            } //	end try...catch
        }     //	end Main