예제 #1
0
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            SplashScreenManager.ShowForm(typeof(WaitFormEx));
            SplashScreenManager.Default.SetWaitFormDescription("Происходит поиск OPC-серверов.");

            OpcServers[] opcServers = new OpcServers[0];

            try
            {
                opcServers = OpcServerList.ListAllEx(textServer.Text);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, ex.Source);
            }

            OpcServerDefs.Clear();
            for (int i = 0; i < (opcServers.Length); i++)
            {
                OpcServerDefs.Add(new OpcServerDef(opcServers[i]));
            }

            gridProgID.RefreshDataSource();
            stlInfo.Caption = string.Format("Всего: {0}", OpcServerDefs.Count);
            SplashScreenManager.CloseForm();
        }
예제 #2
0
        static void Main()
        {
            Console.WriteLine("OPC Data Access 1.0");
            foreach (var server in OpcServerList.ListAll(OpcServerList.OpcDataAccess10))
            {
                Console.WriteLine("'{0}' ID={1} [{2}]", server.Name, server.ProgID, server.ClsID);
            }

            Console.WriteLine("OPC Data Access 2.0");
            foreach (var server in OpcServerList.ListAllData20())
            {
                Console.WriteLine("'{0}' ID={1} [{2}]", server.Name, server.ProgID, server.ClsID);
            }

            Console.WriteLine("OPC Data Access 3.0");
            foreach (var server in OpcServerList.ListAll(OpcServerList.OpcDataAccess30))
            {
                Console.WriteLine("'{0}' ID={1} [{2}]", server.Name, server.ProgID, server.ClsID);
            }

            Console.WriteLine("OPC XML Data Access");
            foreach (var server in OpcServerList.ListAll(OpcServerList.OpcDataAccessXML))
            {
                Console.WriteLine("'{0}' ID={1} [{2}]", server.Name, server.ProgID, server.ClsID);
            }
        }
예제 #3
0
        public void ListAllServers()
        {
            OpcDaSrvList.Items.Clear();

            OpcServerList lst = new OpcServerList();

            OpcServers[] svs = null;
            try
            {
                lst.ListAllData20(out svs);
            }
            catch (COMException)
            {
                MessageBox.Show(this, "Enum OPC servers failed!", "Select Server", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (svs == null)
            {
                return;
            }

            string[] itemstrings = new string[3];
            foreach (OpcServers l in svs)
            {
                itemstrings[0] = l.ServerName;
                itemstrings[1] = l.ProgID;
                itemstrings[2] = l.ClsID.ToString();
                OpcDaSrvList.Items.Add(new ListViewItem(itemstrings));
            }

            // preselect top item in ListView
            OpcDaSrvList.Items[0].Selected = true;
        }
예제 #4
0
        public List <OpcServerDescription> GetListAllServers()
        {
            List <OpcServerDescription> result = new List <OpcServerDescription>();

            OpcServerList lst = new OpcServerList();

            OpcServers[] svs = null;

            lst.ListAllData20(out svs);

            if (svs == null)
            {
                return(result);
            }

            string[] itemstrings = new string[3];
            foreach (OpcServers l in svs)
            {
                itemstrings[0] = l.ServerName;
                itemstrings[1] = l.ProgID;
                itemstrings[2] = l.ClsID.ToString();
                result.Add(new OpcServerDescription
                {
                    ServerName = l.ServerName,
                    ProgId     = l.ProgID,
                    ClsId      = l.ClsID
                });
            }
            return(result);
        }
예제 #5
0
        public OpcServerBrowserForm()
        {
            InitializeComponent();
            OpcServerDefs = new Collection <OpcServerDef>();
            OpcServerList = new OpcServerList();

            gridProgID.DataSource = OpcServerDefs;
        }
예제 #6
0
파일: Program.cs 프로젝트: tkouba/OPCdotNET
 private static void ListAllServers(Guid catid)
 {
     try
     {
         foreach (var server in OpcServerList.ListAll(catid))
         {
             Console.WriteLine("  '{0}' ID={1} [{2}]", server.Name, server.ProgID, server.ClsID);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("  *** ERROR *** {0}", ex.Message);
     }
 }
 public OpcServerListEnumerator(object enumerator)
 {
     _opcServerList = new OpcServerList(enumerator);
 }
예제 #8
0
		/// <summary>
		/// Возвращает список зарегистрированных в систмеме OPC DA серверов
		/// </summary>
		/// <returns></returns>
		public static OpcDaServer[] GetRegistredServers()
		{
			List<OpcDaServer> list = new List<OpcDaServer>();
			// Создаём объект списка OPC серверов
			OpcServerList pServerList = new OpcServerList();
			// Идентификатор категории OPC DA 2.0
			Guid clsidcat = new Guid("{63D5F432-CFE4-11D1-B2C8-0060083BA1FB}");
			// перечислитель, в котором будут храниться GUID серверов
			IOPCEnumGUID pIOPCEnumGuid;
			// запрос по группе серверов спецификации OPC DA 2.0
			try
			{
				pServerList.EnumClassesOfCategories(1, ref clsidcat, 0, ref clsidcat, out pIOPCEnumGuid);

				string pszProgID; // буфер для записи ProgID серверов
				string pszUserType; // буфер для записи описания серверов
				string pszVerIndProgId;
				Guid guid = new Guid();
				//int nServerCnt = 0;
				uint iRetSvr; // количество серверов, предоставленных запросом

				// Получение идентификаторов серверов
				pIOPCEnumGuid.Next(1, out guid, out iRetSvr);
				while (iRetSvr != 0)
				{
					//nServerCnt++;
					pServerList.GetClassDetails(ref guid, out pszProgID, out pszUserType, out pszVerIndProgId);
					list.Add(new OpcDaServer
					{
						Id = guid,
						ServerName = pszProgID
					});
					pIOPCEnumGuid.Next(1, out guid, out iRetSvr);
				}
			}
			catch
			{

			}
			return list.ToArray();
		}