src/Bro.Common.Device/DeviceBase/MotionCardBase.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Model/Helper/PropertyConvertHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Common.Model/Model/IOItem.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.Process/ProcessControl.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/Bro.UI.Config/MenuForms/FrmOperation.resx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/Bro.Common.Device/DeviceBase/MotionCardBase.cs
@@ -1,14 +1,17 @@ using Bro.Common.Helper; using Autofac; using Bro.Common.Helper; using Bro.Common.Interface; using Bro.Common.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Bro.Common.Base { @@ -157,4 +160,110 @@ } } public class IORefrenceItemCollectionEditor : CollectionEditor { protected override CollectionForm CreateCollectionForm() { var form = base.CreateCollectionForm(); var prop = form.GetType().GetField("propertyBrowser", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if (prop != null) { if (prop.GetValue(form) is PropertyGrid grid) { grid.HelpVisible = true; grid.ToolbarVisible = false; } } return form; } //protected override object CreateInstance(Type itemType) //{ // return base.CreateInstance(itemType); //} //protected override object[] GetItems(object editValue) //{ // return base.GetItems(editValue); //} //protected override object SetItems(object editValue, object[] value) //{ // return base.SetItems(editValue, value); //} public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context.Instance is IOperationConfig opConfig) { if (string.IsNullOrWhiteSpace(opConfig.DeviceId)) { return base.EditValue(context, provider, value); } using (var scope = GlobalVar.Container.BeginLifetimeScope()) { List<IDevice> deviceList = scope.Resolve<List<IDevice>>(); var device = deviceList.FirstOrDefault(u => u.Id == opConfig.DeviceId); if (device == null) { return base.EditValue(context, provider, value); } if (device is MotionCardBase motionCard) { if (value is IORefrenceItem item) { item.IOItemSource = (motionCard.InitialConfig as MotionCardInitialConfigBase).IODefinitionCollection; } } } } return base.EditValue(context, provider, value); } public IORefrenceItemCollectionEditor(Type type) : base(type) { } /// <summary> /// 限制一次选一个实例 /// </summary> /// <returns></returns> protected override bool CanSelectMultipleInstances() { return false; } /// <summary> /// 指定创建的对象类型 /// </summary> /// <returns></returns> protected override Type CreateCollectionItemType() { return typeof(IORefrenceItem); } protected override string GetDisplayText(object value) { if (value is IComplexDisplay) { return (value as IComplexDisplay).GetDisplayText(); } return base.GetDisplayText(value); } //protected override void DestroyInstance(object instance) //{ // base.DestroyInstance(instance);//重要!自动删除组件的设计时代码! //} } } src/Bro.Common.Model/Forms/FrmDeviceOpConfigEditor.cs
@@ -70,9 +70,12 @@ } } bind.OpConfig.DeviceId = bind.Device; backOpConfig.DataFrom(bind.OpConfig); propGrid.SelectedObject = bind.OpConfig; } private void CboDevice_SelectedIndexChanged(object sender, EventArgs e) @@ -88,7 +91,9 @@ var attr = device.GetType().GetCustomAttribute<DeviceAttribute>(); if (attr != null) { propGrid.SelectedObject = ConfigFactory.GetOperationConfig(attr.TypeCode); var opConfig= ConfigFactory.GetOperationConfig(attr.TypeCode); opConfig.DeviceId = device.Id; propGrid.SelectedObject = opConfig; } } } src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
@@ -1,4 +1,5 @@ using Bro.Common.Factory; using Autofac; using Bro.Common.Factory; using Bro.Common.Interface; using Bro.Common.Model; using Newtonsoft.Json; @@ -915,85 +916,7 @@ return base.EditValue(context, provider, value); } } public class IORefrenceItemCollectionEditor : CollectionEditor { protected override CollectionForm CreateCollectionForm() { var form = base.CreateCollectionForm(); var prop = form.GetType().GetField("propertyBrowser", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if (prop != null) { if (prop.GetValue(form) is PropertyGrid grid) { grid.HelpVisible = true; grid.ToolbarVisible = false; } } return form; } //protected override object CreateInstance(Type itemType) //{ // return base.CreateInstance(itemType); //} //protected override object[] GetItems(object editValue) //{ // return base.GetItems(editValue); //} //protected override object SetItems(object editValue, object[] value) //{ // return base.SetItems(editValue, value); //} public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { return base.EditValue(context, provider, value); } public IORefrenceItemCollectionEditor(Type type) : base(type) { } /// <summary> /// 限制一次选一个实例 /// </summary> /// <returns></returns> protected override bool CanSelectMultipleInstances() { return false; } /// <summary> /// 指定创建的对象类型 /// </summary> /// <returns></returns> protected override Type CreateCollectionItemType() { return typeof(IORefrenceItem); } protected override string GetDisplayText(object value) { if (value is IComplexDisplay) { return (value as IComplexDisplay).GetDisplayText(); } return base.GetDisplayText(value); } //protected override void DestroyInstance(object instance) //{ // base.DestroyInstance(instance);//重要!自动删除组件的设计时代码! //} } } #endregion } src/Bro.Common.Model/Model/IOItem.cs
@@ -1,6 +1,7 @@ using Bro.Common.Helper; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using static Bro.Common.Helper.EnumHelper; @@ -60,6 +61,7 @@ { [Category("IO操作配置")] [Description("需要操作的IO")] [TypeConverter(typeof(IORefrenceItemSourceConverter))] public IOItem IOItem { get; set; } = new IOItem(); [Category("IO操作配置")] @@ -70,4 +72,22 @@ [JsonIgnore] public List<IODefinition> IOItemSource { get; set; } = new List<IODefinition>(); } public class IORefrenceItemSourceConverter : ComboBoxItemTypeConvert { public override Hashtable GetConvertHash(ITypeDescriptorContext context) { Hashtable table = new Hashtable(); if (context.Instance is IORefrenceItem item) { item.IOItemSource.ForEach(i => { table[i.IODesc + i.IOType.GetEnumDescription() + i.IONum] = i as IOItem; }); } return table; } } } src/Bro.Process/ProcessControl.cs
@@ -32,8 +32,8 @@ #region AutoFac注册 GlobalVar.Builder.RegisterInstance(this).As<IProcess>().ExternallyOwned(); GlobalVar.Builder.RegisterInstance(IConfig).As<IProcessConfig>().ExternallyOwned(); GlobalVar.Builder.RegisterInstance(DeviceCollection); GlobalVar.Builder.RegisterInstance(ProcessMethodCollection); GlobalVar.Builder.RegisterInstance(DeviceCollection).ExternallyOwned(); GlobalVar.Builder.RegisterInstance(ProcessMethodCollection).ExternallyOwned(); //if (isBuild) //{ src/Bro.UI.Config/MenuForms/FrmOperation.resx
@@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADm CgAAAk1TRnQBSQFMAgEBAgEAAdABAAHQAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo CgAAAk1TRnQBSQFMAgEBAgEAAdgBAAHYAQABGAEAARgBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABYAMAARgDAAEBAQABCAYAAQkYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -182,7 +182,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4 CAAAAk1TRnQBSQFMAwEBAAHQAQAB0AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA CAAAAk1TRnQBSQFMAwEBAAHYAQAB2AEAARgBAAEYAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AWADAAEYAwABAQEAAQgGAAEJGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm