From b83a01eec16b236d099dcea3e7a5051c8cae9c6c Mon Sep 17 00:00:00 2001 From: wells.liu <wells.liu@broconcentric.com> Date: 星期五, 03 七月 2020 10:48:37 +0800 Subject: [PATCH] Merge branch 'master' of http://gitblit.broconcentric.com:8088/r/M071 --- src/Bro.Device.GTSCard/GTSCardDriver.cs | 6 src/Bro.Common.Model/Helper/PropertyConvertHelper.cs | 96 +++++++++++++++++++++++ src/Bro.M071.Process/M071Process.cs | 16 ++- src/Bro.Common.Model/Model/IOItem.cs | 11 ++ src/Bro.Common.Model/Helper/EnumHelper.cs | 54 ++++--------- 5 files changed, 134 insertions(+), 49 deletions(-) diff --git a/src/Bro.Common.Model/Helper/EnumHelper.cs b/src/Bro.Common.Model/Helper/EnumHelper.cs index a264b4a..52c5349 100644 --- a/src/Bro.Common.Model/Helper/EnumHelper.cs +++ b/src/Bro.Common.Model/Helper/EnumHelper.cs @@ -523,44 +523,26 @@ } /// <summary> - /// IO瀹氫箟绫诲瀷 + /// IO棰勫畾涔夌被鍨� 涓昏閽堝杈撳嚭 /// </summary> - public enum IODefine + public enum IOPrestatement { - Nothing, - InputStartLeft, - InputStartRight, - InputCurtainLeft, - InputCurtainRight, - InputSafeDoor, - InputEmergency, - InputReset, - InputScrew1, - InputScrew2, - InputSuckLeft, - InputSuckRight, - InputSuckXYZ, - InputCylinderLeftLimitFront, - InputCylinderLeftLimitBack, - InputCylinderRightLimitFront, - InputCylinderRightLimitBack, + [Description("鑷畾涔�")] + Customized = 0, + [Description("鎸囩ず鐏�-榛�")] + Light_Yellow = 1, + [Description("鎸囩ず鐏�-绾�")] + Light_Green = 2, + [Description("鎸囩ず鐏�-缁�")] + Light_Red = 3, + [Description("铚傞福鍣�")] + Beep = 4, + [Description("鐓ф槑鐏�")] + Light = 5, - OutputYellow, - OutputGreen, - OutputRed, - OutputBeep, - OutputLight, - OutputMotorPower, - OutputInitOK, - OutputZLock, - OutputLeftCylinder, - OutputRightCylinder, - OutputLeftSuck, - OutputRightSuck, - OutputScrewBlow, - OutputCamera, - OutputScrewSuck, + [Description("鎬ュ仠")] + EmergencyStop = 99, } /// <summary> @@ -590,9 +572,9 @@ public enum IOType { [Description("INPUT")] - In = 0, + INPUT = 0, [Description("OUTPUT")] - Out = 1 + OUTPUT = 1 } /// <summary> diff --git a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs index 3117d1e..b802a92 100644 --- a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs +++ b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs @@ -392,6 +392,100 @@ return true; } } + + public class EnumDescriptionConverter<T> : TypeConverter where T : Enum + { + Dictionary<T, string> itemDict = new Dictionary<T, string>(); + public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) + { + typeof(T).GetEnumNames().ToList().ForEach(e => + { + T temp = (T)Enum.Parse(typeof(T), e); + itemDict[temp] = temp.GetEnumDescription(); + }); + + return new StandardValuesCollection(itemDict.Keys); + } + public override bool GetStandardValuesSupported(ITypeDescriptorContext context) + { + return true; + } + + public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) + { + return true; + } + + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + if (sourceType == typeof(String)) + return true; + + return base.CanConvertFrom(context, sourceType); + } + + public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) + { + return base.CanConvertTo(context, destinationType); + } + + public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) + { + return base.CreateInstance(context, propertyValues); + } + + /// <summary> + /// + /// </summary> + /// <param name="context"></param> + /// <param name="culture"></param> + /// <param name="value">string</param> + /// <returns></returns> + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + try + { + foreach (string e in typeof(T).GetEnumNames().ToList()) + { + T temp = (T)Enum.Parse(typeof(T), e); + + if (temp.GetEnumDescription() == value.ToString()) + return temp; + } + } + catch (Exception ex) + { + } + + return base.ConvertFrom(context, culture, value); + } + + /// <summary> + /// + /// </summary> + /// <param name="context"></param> + /// <param name="culture"></param> + /// <param name="value">IOItem</param> + /// <param name="destinationType"></param> + /// <returns></returns> + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + { + if (value is T temp) + { + //foreach (KeyValuePair<T, string> pair in itemDict) + //{ + // if (Convert.ToInt32(pair.Key) == Convert.ToInt32(temp)) + // { + // return pair.Value; + // } + //} + + return temp.GetEnumDescription(); + } + + return base.ConvertTo(context, culture, value, destinationType); + } + } #endregion #region UITypeEditor @@ -923,7 +1017,7 @@ return base.EditValue(context, provider, value); } - } + } #endregion } diff --git a/src/Bro.Common.Model/Model/IOItem.cs b/src/Bro.Common.Model/Model/IOItem.cs index 4b59a7c..147880e 100644 --- a/src/Bro.Common.Model/Model/IOItem.cs +++ b/src/Bro.Common.Model/Model/IOItem.cs @@ -42,7 +42,7 @@ return false; } - public string GetDisplayText() + public virtual string GetDisplayText() { return $"{IOType.GetEnumDescription()}-{IONum}-{Value}"; } @@ -56,6 +56,11 @@ public class IODefinition : IOItem { [Category("IO閰嶇疆")] + [Description("IO棰勫畾涔�")] + [TypeConverter(typeof(EnumDescriptionConverter<IOPrestatement>))] + public IOPrestatement IOPreStatement { get; set; } = IOPrestatement.Customized; + + [Category("IO閰嶇疆")] [Description("IO鐢ㄩ�旀弿杩�")] public string IODesc { get; set; } @@ -67,9 +72,9 @@ [JsonIgnore] public override int Value { get; set; } - public new string GetDisplayText() + public override string GetDisplayText() { - return $"{IODesc} {IOType.GetEnumDescription()} {IONum}"; + return $"{(IOPreStatement == IOPrestatement.Customized ? IODesc : IOPreStatement.GetEnumDescription())} {IOType.GetEnumDescription()} {IONum}"; } } diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs index c0da369..2cb1a6d 100644 --- a/src/Bro.Device.GTSCard/GTSCardDriver.cs +++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs @@ -710,13 +710,13 @@ { IONum = index, Value = (inValue & (1 << index)) == 0 ? 1 : 0, - IOType = IOType.In + IOType = IOType.INPUT }; IOItem outItem = new IOItem() { IONum = index, Value = (outValue & (1 << index)) == 0 ? 1 : 0, - IOType = IOType.Out + IOType = IOType.OUTPUT }; result.Add(inItem); result.Add(outItem); @@ -787,7 +787,7 @@ foreach (var replyIOData in monitorSet.ReplyIODatas) { //鍐欏叆IO杈撳嚭 - if (replyIOData.IOType == IOType.Out) + if (replyIOData.IOType == IOType.OUTPUT) { GTSCardAPI.GT_SetDoBit((short)IConfig.CardNum, GTSCardAPI.MC_GPI, (short)replyIOData.IONum, (short)replyIOData.Value); } diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs index a6a58a3..68b79c6 100644 --- a/src/Bro.M071.Process/M071Process.cs +++ b/src/Bro.M071.Process/M071Process.cs @@ -42,6 +42,16 @@ InitialSetting(); base.Open(); + + CheckMachineState(); + } + + /// <summary> + /// 妫�鏌ヨ澶囩姸鎬� + /// </summary> + private void CheckMachineState() + { + throw new NotImplementedException(); } private void InitialSetting() @@ -163,12 +173,6 @@ { throw new ProcessException("鏈緭鍏ヤ骇鍝佹潯鐮侊紝璇峰嬁寮�濮嬫祴閲�"); } - - //妫�鏌ヤ骇鍝佹斁缃甇K - - //姘旂几鎺ㄥ姩鍘嬫澘绉诲姩鍒颁骇鍝佷笂鏂� - - //鍘嬫澘鍘嬬揣浜у搧 OnMeasureStart?.BeginInvoke(null, null); -- Gitblit v1.8.0