ManiOperate.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using Polly;
  3. using System.Threading;
  4. using SHJX.Service.Common.Extend;
  5. using SHJX.Service.Model.Control;
  6. using SHJX.Service.Control.Modules;
  7. using SHJX.Service.Control.Interface;
  8. using SHJX.Service.Common.UserDelegate;
  9. using SHJX.Service.Common.ReadXML;
  10. namespace SHJX.Service.Control.Route.RouteController
  11. {
  12. public class ManiOperate : FlowControlOperateImp
  13. {
  14. private const string OpName = "Mani";
  15. public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
  16. {
  17. var res = false;
  18. var portArgs = new PortArgs
  19. {
  20. TypeName = OpName
  21. };
  22. switch (data.Task.RouteStep)
  23. {
  24. case "Mani_Loosen":
  25. if ( DataCentre.GetConfig.ManiGrabFeedBack)
  26. {
  27. var judgeValue = 0;
  28. Policy.HandleResult<bool>(Arg => Arg.Equals(false)).Retry(3, (resultArg, retryCount) =>
  29. {
  30. #region 松开
  31. portArgs.WriteWay = WriteWay.Normotopia;
  32. res = data.Client.Factory(OpName).Write(portArgs);
  33. #endregion
  34. #region 抓取
  35. portArgs.WriteWay = WriteWay.Antiposition;
  36. res = res && data.Client.Factory(OpName).Write(portArgs);
  37. #endregion
  38. judgeValue = retryCount;
  39. }).Execute(() =>
  40. {
  41. portArgs.ReadWay = "Judge";
  42. var judgeRes = Convert.ToBoolean(data.Client.Factory(OpName).Read(portArgs));
  43. #region 任务取消,加入取消缓存
  44. if (judgeValue.Equals(3) && !judgeRes)
  45. {
  46. portArgs.WriteWay = WriteWay.Normotopia;
  47. res = data.Client.Factory(OpName).Write(portArgs);
  48. Messager.Send("getCupError", data.Task);
  49. }
  50. #endregion
  51. res = judgeRes;
  52. return judgeRes;
  53. });
  54. }
  55. portArgs.WriteWay = WriteWay.Normotopia;//松开
  56. res = data.Client.Factory(OpName).Write(portArgs);
  57. break;
  58. case "Mani_Grab":
  59. portArgs.WriteWay = WriteWay.Antiposition;
  60. res = data.Client.Factory(OpName).Write(portArgs);
  61. if ( DataCentre.GetConfig.ManiGrabFeedBack)
  62. {
  63. var judgeValue = 0;
  64. Policy.HandleResult<bool>(Arg => Arg.Equals(false)).Retry(3, (resultArg, retryCount) =>
  65. {
  66. #region 松开
  67. portArgs.WriteWay = WriteWay.Normotopia;
  68. res = data.Client.Factory(OpName).Write(portArgs);
  69. #endregion
  70. #region 抓取
  71. portArgs.WriteWay = WriteWay.Antiposition;
  72. res = res && data.Client.Factory(OpName).Write(portArgs);
  73. #endregion
  74. judgeValue = retryCount;
  75. }).Execute(() =>
  76. {
  77. portArgs.ReadWay = "Judge";
  78. var judgeRes = Convert.ToBoolean(data.Client.Factory(OpName).Read(portArgs));
  79. #region 任务取消,加入取消缓存
  80. if (judgeValue.Equals(3) && !judgeRes)
  81. {
  82. portArgs.WriteWay = WriteWay.Normotopia;
  83. res = data.Client.Factory(OpName).Write(portArgs);
  84. //CancelCache.Set(data.Task.OriginLocalName, "Cancel");
  85. //data.DataManager.Delete(data.Task);
  86. Messager.Send("getCupError", data.Task);
  87. }
  88. #endregion
  89. res = judgeRes;
  90. return judgeRes;
  91. });
  92. }
  93. break;
  94. default:
  95. res = false;
  96. break;
  97. }
  98. Thread.Sleep(10);
  99. return res;
  100. }
  101. }
  102. }