}           //	end ProcessCommandLine

        public void Terminate()
        {
            if (m_areDaObjectsInitialized)
            {
                if (m_daSubscription.CurrentState != EnumObjectState.DISCONNECTED)
                {
                    m_daSubscription.Disconnect(new ExecutionOptions());
                }
                if (m_daSession.CurrentState != EnumObjectState.DISCONNECTED)
                {
                    m_daSession.Disconnect(new ExecutionOptions());
                }

                m_daSubscription.RemoveDaItem(m_daItem1);
                m_daSubscription.RemoveDaItem(m_daItem2);
                m_daSubscription.RemoveDaItem(m_daItem3);
                m_daSubscription.RemoveDaItem(m_daItem4);

                m_daSession.RemoveDaSubscription(m_daSubscription);

                GetApplication().RemoveDaSession(m_daSession);
            }

            GetApplication().Terminate();
            m_daSession      = null;
            m_daSubscription = null;
            m_daItem1        = null;
            m_daItem2        = null;
            m_daItem3        = null;
            m_daItem4        = null;
        }           //	end Terminate
Esempio n. 2
0
        //--
        #endregion

        #region Private Members
        //---------------------

        #region Private Attributes
        //------------------------


        //--
        #endregion

        //--
        #endregion

        #region Public Methods
        //---------------------

        //--
        #endregion

        #region Public Properties
        //-----------------------


        //--
        #endregion

        #region Handles

        public static void HandleStateChanged(ObjectSpaceElement sender, EnumObjectState state)
        {
            MyDaItem     item         = sender as MyDaItem;
            FileStream   fs           = new FileStream("C:\\ClientService.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fs);

            streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            streamWriter.WriteLine(item + " " + item.Id + " State Changed - " + state);
            streamWriter.Flush();
            streamWriter.Close();
        }         // end HandleStateChanged
Esempio n. 3
0
        }         // end HandleStateChanged

        public static void HandlePerformStateTransition(
            ObjectSpaceElement sender,
            uint executionContext,
            int result)
        {
            FileStream   fs           = new FileStream("C:\\ClientService.txt", FileMode.OpenOrCreate, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fs);

            streamWriter.BaseStream.Seek(0, SeekOrigin.End);
            if (ResultCode.SUCCEEDED(result))
            {
                MyDaItem item = sender as MyDaItem;
                streamWriter.WriteLine(sender + " " + item.Id + " Performed state transition - " + executionContext);
            }
            else
            {
                streamWriter.WriteLine(sender + "  Performed state transition failed! Result: " + result);
            }
            streamWriter.Flush();
            streamWriter.Close();
        }         // end HandlePerformStateTransition
        }         //end ReadItems

        public void WriteItems(bool sync)
        {
            DateTime writeDateTime = new DateTime();

            if (sync)
            {
                ValueQT[] inValues = new ValueQT[2];

                SByte[] v1 = new SByte[5];
                v1[0]       = 7; v1[1] = 8; v1[2] = 9; v1[3] = 10; v1[4] = 11;
                inValues[0] = new ValueQT(v1, EnumQuality.QUALITY_NOT_SET, writeDateTime);

                System.String v2 = "abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ";
                inValues[1] = new ValueQT(v2, EnumQuality.QUALITY_NOT_SET, writeDateTime);
                int result = (int)EnumResultCode.E_FAIL;

                MyDaItem[] inItems = new MyDaItem[2];
                inItems.SetValue(m_daItem3, 0);
                inItems.SetValue(m_daItem4, 1);

                int[] inResults = new int[2];

                FileStream   fs           = new FileStream("C:\\ClientService.txt", FileMode.OpenOrCreate, FileAccess.Write);
                StreamWriter streamWriter = new StreamWriter(fs);
                streamWriter.BaseStream.Seek(0, SeekOrigin.End);
                if (ResultCode.SUCCEEDED(result = m_daSubscription.Write(inItems, inValues, out inResults, new ExecutionOptions())))
                {
                    streamWriter.WriteLine();
                    streamWriter.WriteLine(" Subscription synchronous write succeeded");
                    for (int i = 0; i < inItems.Length; i++)
                    {
                        if (inResults[i] >= 0)
                        {
                            streamWriter.WriteLine(String.Format("{0,-19} {1} {2,-50} ", inItems[i], "-", inValues[i].ToString()));
                            streamWriter.WriteLine();
                        }
                        else
                        {
                            streamWriter.WriteLine(" Item synchronous write failed!  " + inItems[i].Id + " [ResultID: " + inResults[i] + " ]");
                        }
                    }
                }
                else
                {
                    streamWriter.WriteLine("Subscription synchronous write failed! Result: " + result);
                }
                streamWriter.Flush();
                streamWriter.Close();
            }             // end if
            else
            {
                ValueQT[] inValues = new ValueQT[2];

                SByte[] v1 = new SByte[5];
                v1[0]       = 7; v1[1] = 8; v1[2] = 9; v1[3] = 10; v1[4] = 11;
                inValues[0] = new ValueQT(v1, EnumQuality.QUALITY_NOT_SET, writeDateTime);

                System.String v2 = "SOFTING";
                inValues[1] = new ValueQT(v2, EnumQuality.QUALITY_NOT_SET, writeDateTime);

                MyDaItem[] inItems = new MyDaItem[2];
                inItems[0] = m_daItem3;
                inItems[1] = m_daItem4;

                int[] inResults = new int[2];

                m_daSubscription.Write(inItems, inValues, out inResults, m_executionOptions);
                m_executionOptions.ExecutionContext++;
            }     // end else
        }         //end WriteItems
        }           //	end Terminate

        public int InitializeDaObjects()
        {
            int connectResult = (int)EnumResultCode.E_FAIL;

            m_executionOptions = new ExecutionOptions();
            m_executionOptions.ExecutionType    = EnumExecutionType.ASYNCHRONOUS;
            m_executionOptions.ExecutionContext = 0;

            m_itemList = new MyDaItem[4];
            m_itemIds  = new string[] { "maths.sin", "time.local.second", "increment.UI1 array", "increment.BSTR" };

            try
            {
                //	TODO add your server URL here
                //	this is the server url for Softing OPCToolbox Demo Server
                //	first choice is COM-DA
                string url = "opcda:///Softing.OPCToolboxDemo_ServerDA.1/{2E565242-B238-11D3-842D-0008C779D775}";

                //uncomment if you need an XML-DA access
                //	string url = "http://localhost:8079/OPC/DA";

                m_daSession = new MyDaSession(url);

                if (!m_daSession.Valid)
                {
                    return(connectResult);
                }

                m_daSubscription = new MyDaSubscription(1000, m_daSession);

                if (!m_daSubscription.Valid)
                {
                    return(connectResult);
                }

                m_daItem1 = new MyDaItem("maths.sin", m_daSubscription);

                if (!m_daItem1.Valid)
                {
                    return(connectResult);
                }
                m_itemList[0] = m_daItem1;

                m_daItem2 = new MyDaItem("time.local.second", m_daSubscription);

                if (!m_daItem2.Valid)
                {
                    return(connectResult);
                }
                m_itemList[1] = m_daItem2;

                m_daItem3 = new MyDaItem("increment.UI1 array", m_daSubscription);
                if (!m_daItem3.Valid)
                {
                    return(connectResult);
                }
                m_itemList[2] = m_daItem3;

                m_daItem4 = new MyDaItem("increment.BSTR", m_daSubscription);
                if (!m_daItem4.Valid)
                {
                    return(connectResult);
                }

                m_itemList[3] = m_daItem4;

                m_areDaObjectsInitialized = true;

                connectResult = m_daSession.Connect(true, true, null);
            }
            catch (Exception exc)
            {
                GetApplication().Trace(
                    EnumTraceLevel.ERR,
                    EnumTraceGroup.USER,
                    "OpcClient::InitializaDaObjects",
                    exc.ToString());
            }               //	end try...catch

            return(connectResult);
        }           //	end InitializeDaObjects