form1.cs

来自「OPC工具包是用来简化OPC规范服务器/客户端开发的工具包」· CS 代码 · 共 452 行 · 第 1/2 页

CS
452
字号
        private void ConnectMenu_Click(object sender, EventArgs e)
        {
            Servers sf = new Servers();
            try
            {
                if (sf.ShowDialog() == DialogResult.OK)
                {
                    DAC_CSDEMO.Properties.Settings.Default.Host = sf.Server.m_Host;
                    DAC_CSDEMO.Properties.Settings.Default.ProgID = sf.Server.m_ProgID;
                    DAC_CSDEMO.Properties.Settings.Default.ClassID = sf.Server.m_ClassID;
                    Connect();
                }
            }
            finally
            {
                sf.Dispose();
            }
        }

        private void DisconnectMenu_Click(object sender, EventArgs e)
        {
            Disconnect();
        }

        private void AddItemMenu_Click(object sender, EventArgs e)
        {
            Items itemFrm=new Items();
            try
            {
                itemFrm.ShowDialog();
            }
            finally
            {
                itemFrm.Dispose();
            }
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            ASDAC_Uninit();
        }

        private void RemoveItemMenu_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                ListViewItem lvi = listView1.SelectedItems[0];
                ASDAC_RemoveItem(m_ServerHandle, m_GroupHandle, ((OPCItem)ItemArray[listView1.SelectedItems[0].Index]).m_Handle);
                ItemArray.RemoveAt(lvi.Index);
                listView1.Items.Remove(lvi);
            }
        }

        private void ReadItemMenu_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                object value=null;
                long timeStamp=0;
                ushort quality=0;
                ListViewItem lvi = listView1.SelectedItems[0];
                ASDAC_ReadItem(m_ServerHandle, m_GroupHandle, ((OPCItem)ItemArray[listView1.SelectedItems[0].Index]).m_Handle, ref value, ref timeStamp, ref quality);
                if (value != null)
                    lvi.SubItems[1].Text = value.ToString();
                else
                    lvi.SubItems[1].Text = "";
                lvi.SubItems[2].Text = DateTime.FromFileTime(timeStamp).ToString(); 
            }
        }

        private void WriteItemMenu_Click(object sender, EventArgs e)
        {
            WriteValue.Focus();
        }

        private void WriteItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                object value = WriteValue.Text;
                ListViewItem lvi = listView1.SelectedItems[0];
                ASDAC_WriteItem(m_ServerHandle, m_GroupHandle, ((OPCItem)ItemArray[listView1.SelectedItems[0].Index]).m_Handle, value,true);
            }
        }

        private void ServerStatusMenu_Click(object sender, EventArgs e)
        {
            long startTime=0, currentTime=0, updateTime=0;
            ushort state=0,majorVersion=0,minorVersion=0, buildNum=0;
            uint bandWidth=0,groupCount=0;

            StringBuilder vendor=new StringBuilder(128);
            ASDAC_GetServerStatus(m_ServerHandle, ref startTime, ref currentTime, ref updateTime, ref state, 
                 ref bandWidth, ref groupCount, ref majorVersion, ref minorVersion, ref buildNum, vendor, 128);
            Status stFrm = new Status();
            try
            {
                stFrm.AddNameValue("startTime",DateTime.FromFileTime(startTime).ToString());
                stFrm.AddNameValue("currentTime",DateTime.FromFileTime(currentTime).ToString());
                stFrm.AddNameValue("updateTime",DateTime.FromFileTime(updateTime).ToString());
                stFrm.AddNameValue("state",state.ToString());
                stFrm.AddNameValue("bandWidth",bandWidth.ToString());
                stFrm.AddNameValue("groupCount",groupCount.ToString());
                stFrm.AddNameValue("majorVersion",majorVersion.ToString());
                stFrm.AddNameValue("minorVersion",minorVersion.ToString());
                stFrm.AddNameValue("buildNum",buildNum.ToString());
                stFrm.AddNameValue("vendor",vendor.ToString());
                stFrm.ShowDialog();
            }
            finally
            {
                stFrm.Dispose();
            }
        }

        private void GroupStatusMenu_Click(object sender, EventArgs e)
        {
            uint groupRate=0;
            bool active=false;
            int timeBias=0;
            float deadBand=0;
            uint LCID=0;
            ASDAC_GetGroupStat(m_ServerHandle, m_GroupHandle, ref groupRate, ref active, ref  timeBias, ref deadBand, ref LCID);
            Status stFrm = new Status();
            try
            {
                stFrm.AddNameValue("groupRate", groupRate.ToString());
                stFrm.AddNameValue("active", active.ToString());
                stFrm.AddNameValue("timeBias", timeBias.ToString());
                stFrm.AddNameValue("deadBand", deadBand.ToString());
                stFrm.AddNameValue("LCID", LCID.ToString());
                stFrm.ShowDialog();
            }
            finally
            {
                stFrm.Dispose();
            }
        }

        public void GetItemProps(string tagName, ref NameValueCollection nvs)
        {
            object propIDs=null, propDatatypes=null, propDescs=null;
            uint count;
            count = ASDAC_GetItemProperties(m_ServerHandle, tagName, ref propIDs, ref propDatatypes, ref propDescs);
            for (int i = 0; i < count; i++)
            {
                uint propID=((uint[])propIDs)[i];
                object propValue = null;
                //ushort propDatatype=ushort;
                string propDesc=((string[])propDescs)[i];
                ASDAC_GetItemPropertyValue(m_ServerHandle, tagName, propID, ref propValue);
                if (propValue != null)
                {
                    nvs.Add(propDesc, propValue.ToString());
                }
                else
                {
                    nvs.Add(propDesc, "");
                }
            }
        }

        private void ItemPropMenu_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                ListViewItem lvi = listView1.SelectedItems[0];
                NameValueCollection nvs = new NameValueCollection();
                GetItemProps(lvi.Text,ref nvs);
                Status stFrm = new Status();
                try
                {
                    for (int i = 0; i < nvs.Count; i++)
                    {
                        stFrm.AddNameValue(nvs.GetKey(i), nvs.GetValues(i)[0]);
                    }
                    stFrm.ShowDialog();
                }
                finally
                {
                    stFrm.Dispose();
                }
            }
        }

        private void ExitMenu_Click(object sender, EventArgs e)
        {
            Disconnect();
            Close();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                RemoveItemMenu.Enabled = true;
                ReadItemMenu.Enabled = true;
                WriteItemMenu.Enabled = true;
                ItemPropMenu.Enabled = true;
                WriteItem.Enabled = true;
            }
            else
            {
                RemoveItemMenu.Enabled = false;
                ReadItemMenu.Enabled = false;
                WriteItemMenu.Enabled =false;
                ItemPropMenu.Enabled =false;
                WriteItem.Enabled = false;
            }
        }

        private void AboutMenu_Click(object sender, EventArgs e)
        {
            AboutBox1 abFrm = new AboutBox1();
            try
            {
                abFrm.ShowDialog();
            }
            finally
            {
                abFrm.Dispose();
            }
        }
    }
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?