LedTask.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Device.Unit;
  3. using Aitex.Core.RT.Event;
  4. using Aitex.Sorter.Common;
  5. using Aitex.Sorter.RT.EFEMs.Servers;
  6. using MECF.Framework.Common.Device.Bases;
  7. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.LoadPorts;
  8. namespace Aitex.Sorter.RT.EFEMs.Tasks
  9. {
  10. class SetLedTask : CheckImp, ITask
  11. {
  12. public SetLedTask()
  13. {
  14. }
  15. public bool Execute(out string result, params string[] args)
  16. {
  17. string device = Args2Unit(args.Length > 0 ? args[0] : string.Empty);
  18. if (device == null)
  19. {
  20. result = PARAM_NG;
  21. return false;
  22. }
  23. if (!CheckIsPort(device) && !CheckIsTower(device) && !CheckIsShorn(device))
  24. {
  25. result = PARAM_NG;
  26. return false;
  27. }
  28. if (args.Length < 3)
  29. {
  30. result = PARAM_NG;
  31. return false;
  32. }
  33. if (!Check<NoReadyPolicy>(device, out result))
  34. {
  35. return false;
  36. }
  37. if (!Check<RemovePolicy>(device, out result))
  38. {
  39. return false;
  40. }
  41. if (!Check<MaintenancePolicy>(device, out result))
  42. {
  43. return false;
  44. }
  45. if (!Check<LinkPolicy>(device, out result))
  46. {
  47. return false;
  48. }
  49. if (CheckIsTower(device))
  50. {
  51. IoSignalTower tower = DEVICE.GetDevice<IoSignalTower>(device);
  52. LightState state = LightState.Off;
  53. int interval = 5;
  54. if (args[2].Equals("ON"))
  55. {
  56. state = LightState.On;
  57. }
  58. else if (args[2].Equals("OFF"))
  59. {
  60. state = LightState.Off;
  61. }
  62. else if (args[2].StartsWith("BLINK"))
  63. {
  64. state = LightState.Blink;
  65. string cycle = args[2].Substring(5);
  66. if (string.IsNullOrEmpty(cycle) || !int.TryParse(cycle, out interval))
  67. {
  68. //result = PARAM_NG;
  69. //return false;
  70. }
  71. //if (interval < 1 || interval > 200)
  72. {
  73. //result = PARAM_NG;
  74. //return false;
  75. }
  76. interval = interval * 100;
  77. }
  78. else
  79. {
  80. result = PARAM_NG;
  81. return false;
  82. }
  83. switch (args[1])
  84. {
  85. case "RED":
  86. tower.SetLight(LightType.Red, state, interval);
  87. break;
  88. case "YELLOW":
  89. tower.SetLight(LightType.Yellow, state, interval);
  90. break;
  91. case "GREEN":
  92. tower.SetLight(LightType.Green, state, interval);
  93. break;
  94. case "BLUE":
  95. tower.SetLight(LightType.Blue, state, interval);
  96. break;
  97. case "WHITE":
  98. tower.SetLight(LightType.White, state, interval);
  99. break;
  100. case "BUZZER1":
  101. if (state != LightState.Off && state != LightState.On)
  102. {
  103. result = PARAM_NG;
  104. return false;
  105. }
  106. tower.SetLight(LightType.Buzzer, state);
  107. break;
  108. case "BUZZER2":
  109. if (state != LightState.Off && state != LightState.On)
  110. {
  111. result = PARAM_NG;
  112. return false;
  113. }
  114. if (state == LightState.On)
  115. state = LightState.Blink;
  116. tower.SetLight(LightType.Buzzer, state, interval);
  117. break;
  118. default:
  119. result = PARAM_NG;
  120. return false;
  121. }
  122. }
  123. if (CheckIsPort(device))
  124. {
  125. LoadPort lp = DEVICE.GetDevice<LoadPort>(device);
  126. IndicatorState state = IndicatorState.OFF;
  127. if (args[2].Equals("ON"))
  128. {
  129. state = IndicatorState.ON;
  130. }
  131. else if (args[2].Equals("OFF"))
  132. {
  133. state = IndicatorState.OFF;
  134. }
  135. else if (args[2].StartsWith("BLINK"))
  136. {
  137. state = IndicatorState.BLINK;
  138. }
  139. else
  140. {
  141. result = PARAM_NG;
  142. return false;
  143. }
  144. switch (args[1])
  145. {
  146. case "LOAD":
  147. lp.SetIndicator(IndicatorType.Load, state);
  148. break;
  149. case "UNLOAD":
  150. lp.SetIndicator(IndicatorType.Unload, state);
  151. break;
  152. case "MANUAL MODE":
  153. lp.SetIndicator(IndicatorType.Manual, state);
  154. break;
  155. case "ACCESS":
  156. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  157. break;
  158. case "CLAMP":
  159. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  160. break;
  161. case "DOCK":
  162. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  163. break;
  164. case "AUTO":
  165. lp.SetIndicator(IndicatorType.Auto, state);
  166. break;
  167. case "RESERVED":
  168. lp.SetIndicator(IndicatorType.Reserve, state);
  169. break;
  170. case "PRESENCE":
  171. lp.SetIndicator(IndicatorType.Presence, state);
  172. break;
  173. case "PLACEMENT":
  174. lp.SetIndicator(IndicatorType.Placement, state);
  175. break;
  176. case "ERROR":
  177. lp.SetIndicator(IndicatorType.Error, state);
  178. break;
  179. case "ACCESS SW":
  180. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  181. break;
  182. default:
  183. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  184. result = PARAM_NG;
  185. return false;
  186. }
  187. }
  188. if(CheckIsShorn(device))//SHORN
  189. {
  190. switch (args[1])
  191. {
  192. case "MELODY1":
  193. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  194. break;
  195. case "MELODY2":
  196. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  197. break;
  198. case "MELODY3":
  199. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  200. break;
  201. case "MELODY4":
  202. //lp.SetIndicator(IndicatorType.Auto, state);
  203. break;
  204. default:
  205. EV.PostWarningLog("Server", $"Not supported indicator {args[1]}");
  206. result = PARAM_NG;
  207. return false;
  208. }
  209. }
  210. return true;
  211. }
  212. public bool? Monitor(out string result, params string[] args)
  213. {
  214. result = string.Empty;
  215. string device = Args2Unit(args.Length > 0 ? args[0] : string.Empty);
  216. if (CheckIsTower(device) || CheckIsShorn(device))
  217. {
  218. return true;
  219. }
  220. LoadPort _lp = DEVICE.GetDevice<LoadPort>(device);
  221. if (_lp.Error)
  222. {
  223. flag1 = ErrorCheckList1.VAC | ErrorCheckList1.AIR | ErrorCheckList1.STALL
  224. | ErrorCheckList1.LIMIT | ErrorCheckList1.SENSOR | ErrorCheckList1.POSITION | ErrorCheckList1.EMS
  225. | ErrorCheckList1.COMM | ErrorCheckList1.COMM2 | ErrorCheckList1.VACON | ErrorCheckList1.VACOFF
  226. | ErrorCheckList1.CLAMPON | ErrorCheckList1.CLAMPOF;
  227. flag2 = ErrorCheckList2.RRTWAF | ErrorCheckList2.CRSWAF | ErrorCheckList2.THICKWAF | ErrorCheckList2.THINWAF
  228. | ErrorCheckList2.DBLWAF | ErrorCheckList2.BAOWAF | ErrorCheckList2.COMMAND | ErrorCheckList2.PODNG
  229. | ErrorCheckList2.PODMISMATCH | ErrorCheckList2.VAC_S | ErrorCheckList2.CLAMP_S | ErrorCheckList2.SAFTY
  230. | ErrorCheckList2.LOCKNG | ErrorCheckList2.UNLOCKNG | ErrorCheckList2.L_KEY_LK | ErrorCheckList2.L_KEY_UL;
  231. flag3 = ErrorCheckList3.MAP_S | ErrorCheckList3.MAP_S1 | ErrorCheckList3.MAP_S2 | ErrorCheckList3.WAFLOST
  232. | ErrorCheckList3.ALIGNNG
  233. | ErrorCheckList3.DRIVER | ErrorCheckList3.DRPOWERDOWN | ErrorCheckList3.HARDWARE
  234. | ErrorCheckList3.INTERNAL | ErrorCheckList3.E84_TIMEOUTx | ErrorCheckList3.E84_CS_VALID | ErrorCheckList3.READFAIL;
  235. return CheckError(device, out result);
  236. }
  237. if (!_lp.IsBusy)
  238. {
  239. return true;
  240. }
  241. return null;
  242. }
  243. }
  244. }