/// <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); }
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); }
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; } } } }