Beispiel #1
0
        /// <summary>
        /// Phương thức ghi giá trị vào của thiết bị(ví dụ: Tag của PLC).
        /// </summary>
        /// <param name="data">byte[]</param>
        public void WriteTag(string tagName, dynamic value)
        {
            try
            {
                if (objChannelManager == null)
                {
                    return;
                }

                string[] strArrays = tagName.Split('.');
                string   str       = $"{strArrays[0]}.{strArrays[1]}";
                foreach (DriverBase.Devices.Channel Channels in objChannelManager.Channels)
                {
                    foreach (DriverBase.Devices.Device dv in Channels.Devices)
                    {
                        bool bEquals = $"{Channels.ChannelName}.{dv.DeviceName}".Equals(str);
                        if (bEquals)
                        {
                            driverHelper = GetDriver(Channels.ChannelTypes);

                            driverHelper?.WriteTag(tagName, value);
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(GetType().Name, ex.Message);
                throw new FaultException <IFaultException>(new IFaultException(ex.Message));
            }
        }
        public IODriver GetAssembly(string Path, string NameSpaceAndClass)
        {
            IODriver iODriver = null;

            try
            {
                // قراءة مصفوفة  البايت الخاصة بالمشروع الثاني
                string buffer = Application.StartupPath + Path;

                // تحميل الملف
                Assembly dll = Assembly.LoadFile(buffer);

                // تعريف متغير يعبر عن اسم الكلاس في المشروع الثاني شاملا الاسم الخاص بفضاء الأسماء الموجود بها الكلاس
                string dllName = NameSpaceAndClass;
                Type   t       = dll.GetType(dllName);
                // أخيرا نحصل علي الواجهة كالتالي
                iODriver = (IODriver)Activator.CreateInstance(t);
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(GetType().Name, ex.Message);
            }


            return(iODriver);
        }
Beispiel #3
0
        public bool InitializePLC()
        {
            ChannelService objChannelManager = ChannelService.GetChannelManager();

            try
            {
                RequestsDriver.Clear();
                string xmlFile = objChannelManager.ReadKey(objChannelManager.XML_NAME_DEFAULT);
                if (string.IsNullOrEmpty(xmlFile) || string.IsNullOrWhiteSpace(xmlFile))
                {
                    return(false);
                }

                objChannelManager.Channels.Clear();
                TagCollection.Tags.Clear();
                List <Channel> channels     = objChannelManager.GetChannels(xmlFile);
                GetIODriver    objFunctions = GetIODriver.GetFunctions();
                ////Sort.
                channels.Sort(delegate(Channel x, Channel y)
                {
                    return(x.ChannelTypes.CompareTo(y.ChannelTypes));
                });
                foreach (Channel item in channels)
                {
                    driverHelper = GetDriver(item.ChannelTypes);
                    if (driverHelper != null)
                    {
                        driverHelper.InitializeService(item);
                    }
                }
                foreach (Channel item in channels)
                {
                    _SerialNo    = (ushort)(_SerialNo++ % 255 + 1);
                    driverHelper = GetDriver(item.ChannelTypes);

                    if (RequestsDriver.ContainsKey(item.ChannelTypes))
                    {
                    }
                    else
                    {
                        RequestsDriver.Add(item.ChannelTypes, driverHelper);
                        if (driverHelper != null)
                        {
                            driverHelper?.Connect();
                        }
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(GetType().Name, ex.Message);
            }
            return(true);
        }
Beispiel #4
0
        private IODriver GetDriver(string ChannelTypes)
        {
            IODriver    DriverHelper = null;
            GetIODriver objFunctions = GetIODriver.GetFunctions();

            DriverHelper =
                objFunctions.GetAssembly($@"\AdvancedScada.{ChannelTypes}.Core.dll",
                                         $"AdvancedScada.{ChannelTypes}.Core.IODriverHelper");
            return(DriverHelper);
        }
        public IODriver GetAssemblyDrivers(string Path, string NameSpaceAndClass)
        {
            IODriver iODriver = null;

            try
            {
                iODriver = GetAssembly($@"\AdvancedScada.{Path}.Core.dll",
                                       string.Format("AdvancedScada.{0}.Core.{1}Service", NameSpaceAndClass));
            }
            catch (Exception ex)
            {
                EventscadaException?.Invoke(GetType().Name, ex.Message);
            }

            return(iODriver);
        }
        public void LoadPlug(string ImageUrl)
        {
            DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);

            foreach (FileInfo fi in di.GetFiles($"AdvancedScada.{ImageUrl}.Core.dll"))
            {
                Assembly lib = Assembly.LoadFrom(fi.FullName);
                foreach (Type t in lib.GetExportedTypes())
                {
                    if (t.GetInterface(typeof(IODriver).FullName) != null)
                    {
                        IODriver plug = (IODriver)Activator.CreateInstance(t);
                        picSelectedDrivers.Image = plug.ImageUrl;
                    }
                }
            }
        }