TMViewModel.cs 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273
  1. using Aitex.Sorter.Common;
  2. using MECF.Framework.Common.CommonData;
  3. using MECF.Framework.Common.DataCenter;
  4. using MECF.Framework.Common.Equipment;
  5. using MECF.Framework.Common.OperationCenter;
  6. using MECF.Framework.Common.Schedulers;
  7. using OpenSEMI.ClientBase;
  8. using Prism.Commands;
  9. using Prism.Mvvm;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Collections.ObjectModel;
  13. using System.Linq;
  14. using System.Threading.Tasks;
  15. using System.Windows.Threading;
  16. using Venus_Core;
  17. using Venus_MainPages.Unity;
  18. using Venus_Themes.CustomControls;
  19. using Venus_Themes.Unity;
  20. namespace Venus_MainPages.ViewModels
  21. {
  22. public enum TMModule
  23. {
  24. PMA, PMB, PMC, PMD, LLA, LLB
  25. }
  26. public enum TMBlade
  27. {
  28. Blade1, Blade2
  29. }
  30. internal class TMViewModel : BindableBase
  31. {
  32. #region 私有字段
  33. //private ModuleInfo m_PMAWafer;
  34. private ModuleInfo m_LLAModuleInfo;
  35. private ModuleInfo m_LLBModuleInfo;
  36. private ModuleInfo m_TMModuleInfo;
  37. private bool m_TMIsOFFline;
  38. private bool m_LLIsOFFline;
  39. private WaferInfo m_PMAWafer;
  40. private WaferInfo m_PMBWafer;
  41. private WaferInfo m_PMCWafer;
  42. private WaferInfo m_PMDWafer;
  43. private WaferInfo m_LLAWafer;
  44. private WaferInfo m_LLBWafer;
  45. private WaferInfo m_BladeAWafer;
  46. private WaferInfo m_BladeBWafer;
  47. private bool m_PMADoorIsOpen;
  48. //private bool m_PMBDoorIsOpen;
  49. //private bool m_PMCDoorIsOpen;
  50. //private bool m_PMDDoorIsOpen;
  51. private bool m_LLADoorIsOpen;
  52. private WaferRobotTAction m_WaferRobotTAction;
  53. private WaferRobotTAction m_Robot1TAction;
  54. private WaferRobotXAction m_Robot1XAction;
  55. private WaferRobotTAction m_Robot2TAction;
  56. private WaferRobotXAction m_Robot2XAction;
  57. private TMModule m_PickSelectedModule;
  58. private TMModule m_PlaceSelectedModule;
  59. private TMModule m_ExtendSelectedModule;
  60. private TMModule m_RetractSelectedModule;
  61. private TMBlade m_PickSelectedBlade;
  62. private TMBlade m_PlaceSelectedBlade;
  63. private TMBlade m_ExtendSelectedBlade;
  64. private TMBlade m_RetractSelectedBlade;
  65. private TMBlade m_GoToSelectedBlade;
  66. private ObservableCollection<int> m_PlaceSoltItemsSource = new ObservableCollection<int>();
  67. private ObservableCollection<int> m_PickSoltItemsSource = new ObservableCollection<int>();
  68. private ObservableCollection<int> m_ExtendSoltItemsSource = new ObservableCollection<int>();
  69. private ObservableCollection<int> m_RetractSoltItemsSource = new ObservableCollection<int>();
  70. private int m_PickSoltSelectedIndex;
  71. private int m_PlaceSoltSelectedIndex;
  72. private int m_ExtendSoltSelectedIndex;
  73. private int m_RetractSoltSelectedIndex;
  74. private List<string> m_RtDataKeys=new List<string> ();
  75. private Dictionary<string, object> m_RtDataValues;
  76. private string m_ModuleCheckedName="TM";
  77. private string m_RobotAction;
  78. private string m_RobotTarget;
  79. private string m_RobotArm;
  80. private bool m_PMAIsInstalled;
  81. private bool m_PMBIsInstalled;
  82. private bool m_PMCIsInstalled;
  83. private bool m_PMDIsInstalled;
  84. private bool m_LLAIsInstalled;
  85. private bool m_LLBIsInstalled;
  86. private bool m_TMIsInstalled;
  87. private List<string> m_OriginalCycle=new List<string> ();
  88. private List<string> m_ToCycle = new List<string>();
  89. private List<TMModule> m_TMModules= new List<TMModule>();
  90. private bool m_CycleEnable;
  91. private string m_OriginalCycleSelectedItem;
  92. private string m_ToCycleSelectedItem;
  93. private bool m_PMAIsCycle;
  94. private bool m_PMBIsCycle;
  95. private bool m_PMCIsCycle;
  96. private bool m_PMDIsCycle;
  97. private int m_CycleCount;
  98. #endregion
  99. #region 属性
  100. public List<string> OriginalCycle
  101. {
  102. get { return m_OriginalCycle; }
  103. set { SetProperty(ref m_OriginalCycle, value); }
  104. }
  105. public List<string> ToCycle
  106. {
  107. get { return m_ToCycle; }
  108. set { SetProperty(ref m_ToCycle, value); }
  109. }
  110. public string RobotAction2
  111. {
  112. get { return m_RobotAction; }
  113. set
  114. {
  115. //RobotActiont(m_RobotAction, value);
  116. SetProperty(ref m_RobotAction, value);
  117. }
  118. }
  119. public RobotMoveInfo m_robotMoveInfo;
  120. public RobotMoveInfo RobotMoveInfo
  121. {
  122. get { return m_robotMoveInfo; }
  123. set
  124. {
  125. RobotMoveInfoChanged(m_robotMoveInfo, value);
  126. m_robotMoveInfo = value;
  127. }
  128. }
  129. public string RobotTarget
  130. {
  131. get { return m_RobotTarget; }
  132. set
  133. {
  134. SetProperty(ref m_RobotTarget, value);
  135. }
  136. }
  137. public string RobotArm
  138. {
  139. get { return m_RobotArm; }
  140. set
  141. {
  142. SetProperty(ref m_RobotArm, value);
  143. }
  144. }
  145. int arm1oldWaferStatus = 100;
  146. int arm2oldWaferStatus = 100;
  147. private async void RobotMoveInfoChanged(RobotMoveInfo oldValue, RobotMoveInfo newValue)
  148. {
  149. string RobotTarget;
  150. if (oldValue == null || newValue == null)
  151. {
  152. return;
  153. }
  154. #region Rotating
  155. if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Rotating))
  156. {
  157. var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
  158. if (TMRobotMoveActionBladeTarget != null)
  159. {
  160. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  161. }
  162. else
  163. {
  164. return;
  165. }
  166. var values = RobotTarget.Split('.');
  167. var arm = values[0];
  168. var module = values[1];
  169. if (arm == "ArmA")
  170. {
  171. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  172. }
  173. else if (arm == "ArmB")
  174. {
  175. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  176. }
  177. }
  178. #endregion
  179. #region pick 和 place LL
  180. else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && (newValue.Action == RobotAction.Placing || newValue.Action == RobotAction.Picking))
  181. {
  182. var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
  183. if (TMRobotMoveActionBladeTarget != null)
  184. {
  185. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  186. }
  187. else
  188. {
  189. return;
  190. }
  191. var values = RobotTarget.Split('.');
  192. var arm = values[0];
  193. var module = values[1];
  194. if (arm == "ArmA")
  195. {
  196. var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  197. if (waferRobotTAction != Robot1TAction)
  198. {
  199. Robot1TAction = waferRobotTAction;
  200. }
  201. else
  202. {
  203. //await Task.Delay(100);
  204. }
  205. await Task.Delay(600);
  206. //Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  207. //await Task.Delay(600);
  208. Robot1XAction = WaferRobotXAction.Extend;
  209. while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus == 0))
  210. {
  211. await Task.Delay(100);
  212. }
  213. Robot1XAction = WaferRobotXAction.Retract;
  214. }
  215. else if (arm == "ArmB")
  216. {
  217. var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  218. if (waferRobotTAction != Robot2TAction)
  219. {
  220. Robot2TAction = waferRobotTAction;
  221. }
  222. else
  223. {
  224. //await Task.Delay(100);
  225. }
  226. await Task.Delay(600);
  227. //Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  228. //await Task.Delay(600);
  229. Robot2XAction = WaferRobotXAction.Extend;
  230. while ((newValue.Action == RobotAction.Placing && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus != 0) || (newValue.Action == RobotAction.Picking && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 0))
  231. {
  232. await Task.Delay(100);
  233. }
  234. Robot2XAction = WaferRobotXAction.Retract;
  235. }
  236. }
  237. #endregion
  238. #region pick 和 place pm
  239. else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && newValue.Action == RobotAction.Extending)
  240. {
  241. var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
  242. if (TMRobotMoveActionBladeTarget != null)
  243. {
  244. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  245. }
  246. else
  247. {
  248. return;
  249. }
  250. var values = RobotTarget.Split('.');
  251. var arm = values[0];
  252. var module = values[1];
  253. if (arm == "ArmA")
  254. {
  255. var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  256. if (waferRobotTAction != Robot1TAction)
  257. {
  258. Robot1TAction = waferRobotTAction;
  259. }
  260. else
  261. {
  262. // await Task.Delay(100);
  263. }
  264. await Task.Delay(600);
  265. Robot1XAction = WaferRobotXAction.Extend;
  266. }
  267. else if (arm == "ArmB")
  268. {
  269. var waferRobotTAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  270. if (waferRobotTAction != Robot2TAction)
  271. {
  272. Robot2TAction = waferRobotTAction;
  273. }
  274. else
  275. {
  276. // await Task.Delay(100);
  277. }
  278. await Task.Delay(600);
  279. Robot2XAction = WaferRobotXAction.Extend;
  280. }
  281. }
  282. else if ((oldValue.Action == RobotAction.None || oldValue.ArmTarget != newValue.ArmTarget) && newValue.Action == RobotAction.Retracting)
  283. {
  284. var TMRobotMoveActionBladeTarget = newValue.BladeTarget;
  285. if (TMRobotMoveActionBladeTarget != null)
  286. {
  287. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  288. }
  289. else
  290. {
  291. return;
  292. }
  293. var values = RobotTarget.Split('.');
  294. var arm = values[0];
  295. if (arm == "ArmA")
  296. {
  297. Robot1XAction = WaferRobotXAction.Retract;
  298. }
  299. else if (arm == "ArmB")
  300. {
  301. Robot2XAction = WaferRobotXAction.Retract;
  302. }
  303. }
  304. #endregion
  305. }
  306. private async void RobotActiont(string oldValue,string newValue)
  307. {
  308. if (oldValue == "None" && newValue == "Placing" && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus==1)
  309. {
  310. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  311. if (TMRobotMoveActionBladeTarget != null)
  312. {
  313. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  314. }
  315. else
  316. {
  317. return;
  318. }
  319. var values = RobotTarget.Split('.');
  320. var arm = values[0];
  321. var module = values[1];
  322. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  323. await Task.Delay(1500);
  324. Robot1XAction = WaferRobotXAction.Extend;
  325. if (arm == "ArmA")
  326. {
  327. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  328. await Task.Delay(1500);
  329. Robot1XAction = WaferRobotXAction.Extend;
  330. }
  331. else if (arm == "ArmB")
  332. {
  333. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  334. await Task.Delay(1500);
  335. Robot2XAction = WaferRobotXAction.Extend;
  336. }
  337. }
  338. if (oldValue == "None" && newValue == "Placing" && ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1].WaferStatus == 1)
  339. {
  340. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  341. if (TMRobotMoveActionBladeTarget != null)
  342. {
  343. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  344. }
  345. else
  346. {
  347. return;
  348. }
  349. var values = RobotTarget.Split('.');
  350. var arm = values[0];
  351. var module = values[1];
  352. if (arm == "ArmA")
  353. {
  354. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  355. await Task.Delay(1500);
  356. Robot1XAction = WaferRobotXAction.Extend;
  357. }
  358. else if (arm == "ArmB")
  359. {
  360. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  361. await Task.Delay(1500);
  362. Robot2XAction = WaferRobotXAction.Extend;
  363. }
  364. //Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  365. //await Task.Delay(1500);
  366. //Robot2XAction = WaferRobotXAction.Extend;
  367. }
  368. if (arm1oldWaferStatus != ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus)
  369. {
  370. Robot1XAction = WaferRobotXAction.Retract;
  371. }
  372. if (arm2oldWaferStatus != ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus)
  373. {
  374. Robot2XAction = WaferRobotXAction.Retract;
  375. }
  376. if (oldValue == "None" && newValue == "Picking" && ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus == 0)
  377. {
  378. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  379. if (TMRobotMoveActionBladeTarget != null)
  380. {
  381. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  382. }
  383. else
  384. {
  385. return;
  386. }
  387. var values = RobotTarget.Split('.');
  388. var arm = values[0];
  389. var module = values[1];
  390. if (arm == "ArmA")
  391. {
  392. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  393. await Task.Delay(1500);
  394. Robot1XAction = WaferRobotXAction.Extend;
  395. }
  396. else if (arm == "ArmB")
  397. {
  398. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  399. await Task.Delay(1500);
  400. Robot2XAction = WaferRobotXAction.Extend;
  401. }
  402. }
  403. #region pick 和 place pm
  404. if (oldValue == "None" && newValue == "Extending")
  405. {
  406. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  407. if (TMRobotMoveActionBladeTarget != null)
  408. {
  409. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  410. }
  411. else
  412. {
  413. return;
  414. }
  415. var values = RobotTarget.Split('.');
  416. var arm = values[0];
  417. var module = values[1];
  418. if (arm == "ArmA")
  419. {
  420. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  421. await Task.Delay(1500);
  422. Robot1XAction = WaferRobotXAction.Extend;
  423. }
  424. else if (arm == "ArmB")
  425. {
  426. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  427. await Task.Delay(1500);
  428. Robot2XAction = WaferRobotXAction.Extend;
  429. }
  430. }
  431. if (oldValue == "None" && newValue == "Retracting")
  432. {
  433. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  434. if (TMRobotMoveActionBladeTarget != null)
  435. {
  436. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  437. }
  438. else
  439. {
  440. return;
  441. }
  442. var values = RobotTarget.Split('.');
  443. var arm = values[0];
  444. if (arm == "ArmA")
  445. {
  446. Robot1XAction = WaferRobotXAction.Retract;
  447. }
  448. else if (arm == "ArmB")
  449. {
  450. Robot2XAction = WaferRobotXAction.Retract;
  451. }
  452. }
  453. #endregion
  454. arm1oldWaferStatus = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus;
  455. arm2oldWaferStatus = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus;
  456. }
  457. public WaferInfo LLAWafer
  458. {
  459. get { return m_LLAWafer; }
  460. set { SetProperty(ref m_LLAWafer, value); }
  461. }
  462. public WaferInfo LLBWafer
  463. {
  464. get { return m_LLBWafer; }
  465. set { SetProperty(ref m_LLBWafer, value); }
  466. }
  467. public WaferInfo PMAWafer
  468. {
  469. get { return m_PMAWafer; }
  470. set { SetProperty(ref m_PMAWafer, value); }
  471. }
  472. public WaferInfo PMBWafer
  473. {
  474. get { return m_PMBWafer; }
  475. set { SetProperty(ref m_PMBWafer, value); }
  476. }
  477. public WaferInfo PMCWafer
  478. {
  479. get { return m_PMCWafer; }
  480. set { SetProperty(ref m_PMCWafer, value); }
  481. }
  482. public WaferInfo PMDWafer
  483. {
  484. get { return m_PMDWafer; }
  485. set { SetProperty(ref m_PMDWafer, value); }
  486. }
  487. public WaferInfo BladeAWafer
  488. {
  489. get { return m_BladeAWafer; }
  490. set { SetProperty(ref m_BladeAWafer, value); }
  491. }
  492. public WaferInfo BladeBWafer
  493. {
  494. get { return m_BladeBWafer; }
  495. set { SetProperty(ref m_BladeBWafer, value); }
  496. }
  497. public ModuleInfo LLAModuleInfo
  498. {
  499. get { return m_LLAModuleInfo; }
  500. set { SetProperty(ref m_LLAModuleInfo, value); }
  501. }
  502. public ModuleInfo LLBModuleInfo
  503. {
  504. get { return m_LLBModuleInfo; }
  505. set { SetProperty(ref m_LLBModuleInfo, value); }
  506. }
  507. public ModuleInfo TMModuleInfo
  508. {
  509. get { return m_TMModuleInfo; }
  510. set { SetProperty(ref m_TMModuleInfo, value); }
  511. }
  512. public bool TMIsOFFline
  513. {
  514. get { return m_TMIsOFFline; }
  515. set { SetProperty(ref m_TMIsOFFline, value); }
  516. }
  517. public bool LLIsOFFline
  518. {
  519. get { return m_LLIsOFFline; }
  520. set { SetProperty(ref m_LLIsOFFline, value); }
  521. }
  522. public bool PMADoorIsOpen
  523. {
  524. get { return m_PMADoorIsOpen; }
  525. set { SetProperty(ref m_PMADoorIsOpen, value); }
  526. }
  527. public bool LLADoorIsOpen
  528. {
  529. get { return m_LLADoorIsOpen; }
  530. set { SetProperty(ref m_LLADoorIsOpen, value); }
  531. }
  532. public WaferRobotTAction WaferRobotTAction
  533. {
  534. get { return m_WaferRobotTAction; }
  535. set { SetProperty(ref m_WaferRobotTAction, value); }
  536. }
  537. public WaferRobotTAction Robot1TAction
  538. {
  539. get { return m_Robot1TAction; }
  540. set { SetProperty(ref m_Robot1TAction, value); }
  541. }
  542. public WaferRobotXAction Robot1XAction
  543. {
  544. get { return m_Robot1XAction; }
  545. set { SetProperty(ref m_Robot1XAction, value); }
  546. }
  547. public WaferRobotTAction Robot2TAction
  548. {
  549. get { return m_Robot2TAction; }
  550. set { SetProperty(ref m_Robot2TAction, value); }
  551. }
  552. public WaferRobotXAction Robot2XAction
  553. {
  554. get { return m_Robot2XAction; }
  555. set { SetProperty(ref m_Robot2XAction, value); }
  556. }
  557. public TMModule PickSelectedModule
  558. {
  559. get { return m_PickSelectedModule; }
  560. set { SetProperty(ref m_PickSelectedModule, value); }
  561. }
  562. public TMModule PlaceSelectedModule
  563. {
  564. get { return m_PlaceSelectedModule; }
  565. set { SetProperty(ref m_PlaceSelectedModule, value); }
  566. }
  567. public TMModule ExtendSelectedModule
  568. {
  569. get { return m_ExtendSelectedModule; }
  570. set { SetProperty(ref m_ExtendSelectedModule, value); }
  571. }
  572. public TMModule RetractSelectedModule
  573. {
  574. get { return m_RetractSelectedModule; }
  575. set { SetProperty(ref m_RetractSelectedModule, value); }
  576. }
  577. public TMBlade PickSelectedBlade
  578. {
  579. get { return m_PickSelectedBlade; }
  580. set { SetProperty(ref m_PickSelectedBlade, value); }
  581. }
  582. public TMBlade PlaceSelectedBlade
  583. {
  584. get { return m_PlaceSelectedBlade; }
  585. set { SetProperty(ref m_PlaceSelectedBlade, value); }
  586. }
  587. public TMBlade ExtendSelectedBlade
  588. {
  589. get { return m_ExtendSelectedBlade; }
  590. set { SetProperty(ref m_ExtendSelectedBlade, value); }
  591. }
  592. public TMBlade RetractSelectedBlade
  593. {
  594. get { return m_RetractSelectedBlade; }
  595. set { SetProperty(ref m_RetractSelectedBlade, value); }
  596. }
  597. public TMBlade GoToSelectedBlade
  598. {
  599. get { return m_GoToSelectedBlade; }
  600. set { SetProperty(ref m_GoToSelectedBlade, value); }
  601. }
  602. public ObservableCollection<int> PickSoltItemsSource
  603. {
  604. get { return m_PickSoltItemsSource; }
  605. set { SetProperty(ref m_PickSoltItemsSource, value); }
  606. }
  607. public ObservableCollection<int> PlaceSoltItemsSource
  608. {
  609. get { return m_PlaceSoltItemsSource; }
  610. set { SetProperty(ref m_PlaceSoltItemsSource, value); }
  611. }
  612. public ObservableCollection<int> ExtendSoltItemsSource
  613. {
  614. get { return m_ExtendSoltItemsSource; }
  615. set { SetProperty(ref m_ExtendSoltItemsSource, value); }
  616. }
  617. public ObservableCollection<int> RetractSoltItemsSource
  618. {
  619. get { return m_RetractSoltItemsSource; }
  620. set { SetProperty(ref m_RetractSoltItemsSource, value); }
  621. }
  622. public int PickSoltSelectedIndex
  623. {
  624. get { return m_PickSoltSelectedIndex; }
  625. set { SetProperty(ref m_PickSoltSelectedIndex, value); }
  626. }
  627. public int PlaceSoltSelectedIndex
  628. {
  629. get { return m_PlaceSoltSelectedIndex; }
  630. set { SetProperty(ref m_PlaceSoltSelectedIndex, value); }
  631. }
  632. public int ExtendSoltSelectedIndex
  633. {
  634. get { return m_ExtendSoltSelectedIndex; }
  635. set { SetProperty(ref m_ExtendSoltSelectedIndex, value); }
  636. }
  637. public int RetractSoltSelectedIndex
  638. {
  639. get { return m_RetractSoltSelectedIndex; }
  640. set { SetProperty(ref m_RetractSoltSelectedIndex, value); }
  641. }
  642. public Dictionary<string, object> RtDataValues
  643. {
  644. get { return m_RtDataValues; }
  645. set { SetProperty(ref m_RtDataValues, value); }
  646. }
  647. public bool PMAIsInstalled
  648. {
  649. get { return m_PMAIsInstalled; }
  650. set { SetProperty(ref m_PMAIsInstalled, value); }
  651. }
  652. public bool PMBIsInstalled
  653. {
  654. get { return m_PMBIsInstalled; }
  655. set { SetProperty(ref m_PMBIsInstalled, value); }
  656. }
  657. public bool PMCIsInstalled
  658. {
  659. get { return m_PMCIsInstalled; }
  660. set { SetProperty(ref m_PMCIsInstalled, value); }
  661. }
  662. public bool PMDIsInstalled
  663. {
  664. get { return m_PMDIsInstalled; }
  665. set { SetProperty(ref m_PMDIsInstalled, value); }
  666. }
  667. public bool LLAIsInstalled
  668. {
  669. get { return m_LLAIsInstalled; }
  670. set { SetProperty(ref m_LLAIsInstalled, value); }
  671. }
  672. public bool LLBIsInstalled
  673. {
  674. get { return m_LLBIsInstalled; }
  675. set { SetProperty(ref m_LLBIsInstalled, value); }
  676. }
  677. public bool TMIsInstalled
  678. {
  679. get { return m_TMIsInstalled; }
  680. set { SetProperty(ref m_TMIsInstalled, value); }
  681. }
  682. public List<TMModule> TMModules
  683. {
  684. get { return m_TMModules; }
  685. set { SetProperty(ref m_TMModules, value); }
  686. }
  687. public bool CycleEnable
  688. {
  689. get { return m_CycleEnable; }
  690. set { SetProperty(ref m_CycleEnable, value); }
  691. }
  692. public string OriginalCycleSelectedItem
  693. {
  694. get { return m_OriginalCycleSelectedItem; }
  695. set { SetProperty(ref m_OriginalCycleSelectedItem, value); }
  696. }
  697. public string ToCycleSelectedItem
  698. {
  699. get { return m_ToCycleSelectedItem; }
  700. set { SetProperty(ref m_ToCycleSelectedItem, value); }
  701. }
  702. public bool PMAIsCycle
  703. {
  704. get { return m_PMAIsCycle; }
  705. set { SetProperty(ref m_PMAIsCycle, value); }
  706. }
  707. public bool PMBIsCycle
  708. {
  709. get { return m_PMBIsCycle; }
  710. set { SetProperty(ref m_PMBIsCycle, value); }
  711. }
  712. public bool PMCIsCycle
  713. {
  714. get { return m_PMCIsCycle; }
  715. set { SetProperty(ref m_PMCIsCycle, value); }
  716. }
  717. public bool PMDIsCycle
  718. {
  719. get { return m_PMDIsCycle; }
  720. set { SetProperty(ref m_PMDIsCycle, value); }
  721. }
  722. public int CycleCount
  723. {
  724. get { return m_CycleCount; }
  725. set { SetProperty(ref m_CycleCount, value); }
  726. }
  727. #endregion
  728. #region 命令
  729. private DelegateCommand _RobotHomeCommand;
  730. public DelegateCommand RobotHomeCommand =>
  731. _RobotHomeCommand ?? (_RobotHomeCommand = new DelegateCommand(OnRobotHome));
  732. private DelegateCommand _GotoCommand;
  733. public DelegateCommand GotoCommand =>
  734. _GotoCommand ?? (_GotoCommand = new DelegateCommand(OnGoto));
  735. private DelegateCommand _ExtendCommand;
  736. public DelegateCommand ExtendCommand =>
  737. _ExtendCommand ?? (_ExtendCommand = new DelegateCommand(OnExtend));
  738. private DelegateCommand _RetractCommand;
  739. public DelegateCommand RetractCommand =>
  740. _RetractCommand ?? (_RetractCommand = new DelegateCommand(OnRetract));
  741. private DelegateCommand<object> _ModuleChangeCommand;
  742. public DelegateCommand<object> ModuleChangeCommand =>
  743. _ModuleChangeCommand ?? (_ModuleChangeCommand = new DelegateCommand<object>(OnModuleChange));
  744. private DelegateCommand _PickCommand;
  745. public DelegateCommand PickCommand =>
  746. _PickCommand ?? (_PickCommand = new DelegateCommand(OnPick));
  747. private DelegateCommand _PlaceCommand;
  748. public DelegateCommand PlaceCommand =>
  749. _PlaceCommand ?? (_PlaceCommand = new DelegateCommand(OnPlace));
  750. private DelegateCommand _HomeCommand;
  751. public DelegateCommand HomeCommand =>
  752. _HomeCommand ?? (_HomeCommand = new DelegateCommand(OnHome));
  753. private DelegateCommand _VentCommand;
  754. public DelegateCommand VentCommand =>
  755. _VentCommand ?? (_VentCommand = new DelegateCommand(OnVent));
  756. private DelegateCommand _PumpCommand;
  757. public DelegateCommand PumpCommand =>
  758. _PumpCommand ?? (_PumpCommand = new DelegateCommand(OnPump));
  759. private DelegateCommand _PurgeCommand;
  760. public DelegateCommand PurgeCommand =>
  761. _PurgeCommand ?? (_PurgeCommand = new DelegateCommand(OnPurge));
  762. private DelegateCommand<object> _ModuleCheckedCommand;
  763. public DelegateCommand<object> ModuleCheckedCommand =>
  764. _ModuleCheckedCommand ?? (_ModuleCheckedCommand = new DelegateCommand<object>(OnModuleChecked));
  765. private DelegateCommand _AbortCommand;
  766. public DelegateCommand AbortCommand =>
  767. _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
  768. private DelegateCommand _StartCycleCommand;
  769. public DelegateCommand StartCycleCommand =>
  770. _StartCycleCommand ?? (_StartCycleCommand = new DelegateCommand(OnStartCycle));
  771. private DelegateCommand _StopCycleCommand;
  772. public DelegateCommand StopCycleCommand =>
  773. _StopCycleCommand ?? (_StopCycleCommand = new DelegateCommand(OnStopCycle));
  774. private DelegateCommand _SystemHomeCommand;
  775. public DelegateCommand SystemHomeCommand =>
  776. _SystemHomeCommand ?? (_SystemHomeCommand = new DelegateCommand(OnSystemHome));
  777. private DelegateCommand<object> _ChamberDoorOpenCommand;
  778. public DelegateCommand<object> ChamberDoorOpenCommand =>
  779. _ChamberDoorOpenCommand ?? (_ChamberDoorOpenCommand = new DelegateCommand<object>(OnChamberDoorOpen));
  780. private DelegateCommand<object> _ChamberDoorCloseCommand;
  781. public DelegateCommand<object> ChamberDoorCloseCommand =>
  782. _ChamberDoorCloseCommand ?? (_ChamberDoorCloseCommand = new DelegateCommand<object>(OnChamberDoorClose));
  783. #endregion
  784. #region 构造函数
  785. public TMViewModel()
  786. {
  787. string allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString();
  788. PMAIsInstalled = allModules.Contains("PMA");
  789. PMBIsInstalled = allModules.Contains("PMB");
  790. PMCIsInstalled = allModules.Contains("PMC");
  791. PMDIsInstalled = allModules.Contains("PMD");
  792. LLAIsInstalled = allModules.Contains("LLA");
  793. LLBIsInstalled = allModules.Contains("LLB");
  794. TMIsInstalled= allModules.Contains("TM");
  795. if (PMAIsInstalled == true)
  796. {
  797. TMModules.Add(TMModule.PMA);
  798. }
  799. if (PMBIsInstalled == true)
  800. {
  801. TMModules.Add(TMModule.PMB);
  802. }
  803. if (PMCIsInstalled == true)
  804. {
  805. TMModules.Add(TMModule.PMC);
  806. }
  807. if (PMDIsInstalled == true)
  808. {
  809. TMModules.Add(TMModule.PMD);
  810. }
  811. if (LLAIsInstalled == true)
  812. {
  813. OriginalCycle.Add("LLA");
  814. ToCycle.Add("LLA");
  815. TMModules.Add(TMModule.LLA);
  816. }
  817. if (LLBIsInstalled == true)
  818. {
  819. OriginalCycle.Add("LLB");
  820. ToCycle.Add("LLB");
  821. TMModules.Add(TMModule.LLB);
  822. }
  823. addDataKeys();
  824. DispatcherTimer timer = new DispatcherTimer();
  825. timer.Interval = TimeSpan.FromSeconds(0.1);
  826. timer.Tick += Timer_Tick;
  827. timer.Start();
  828. PickSoltItemsSource.Add(1);
  829. PlaceSoltItemsSource.Add(1);
  830. ExtendSoltItemsSource.Add(1);
  831. RetractSoltItemsSource.Add(1);
  832. //Robot1TAction = WaferRobotTAction.PMA;
  833. //Robot2TAction = WaferRobotTAction.PMD;
  834. //UIEvents.PMDoorRaiseChangedEvent += UIEvents_PMDoorRaiseChangedEvent;
  835. //UIEvents.LLTDoorRaiseChangedEvent += UIEvents_LLTDoorRaiseChangedEvent;
  836. //UIEvents.LLEDoorRaiseChangedEvent += UIEvents_LLEDoorRaiseChangedEvent;
  837. }
  838. private void Timer_Tick(object sender, EventArgs e)
  839. {
  840. if (LLAIsInstalled == true)
  841. {
  842. LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x=>x.WaferStatus!=0);
  843. LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
  844. }
  845. if (LLBIsInstalled == true)
  846. {
  847. LLBWafer = ModuleManager.ModuleInfos["LLB"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
  848. LLBModuleInfo = ModuleManager.ModuleInfos["LLB"];
  849. }
  850. if (PMAIsInstalled == true)
  851. {
  852. PMAWafer = ModuleManager.ModuleInfos["PMA"].WaferManager.Wafers[0];
  853. }
  854. if (PMBIsInstalled == true)
  855. {
  856. PMBWafer = ModuleManager.ModuleInfos["PMB"].WaferManager.Wafers[0];
  857. }
  858. if (PMCIsInstalled == true)
  859. {
  860. PMCWafer = ModuleManager.ModuleInfos["PMC"].WaferManager.Wafers[0];
  861. }
  862. if (PMDIsInstalled == true)
  863. {
  864. PMDWafer = ModuleManager.ModuleInfos["PMD"].WaferManager.Wafers[0];
  865. }
  866. if (TMIsInstalled == true)
  867. {
  868. BladeAWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0];
  869. BladeBWafer = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[1];
  870. TMModuleInfo = ModuleManager.ModuleInfos["TMRobot"];
  871. }
  872. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  873. var TMRobotMoveActionArmTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.ArmTarget");
  874. if (TMRobotMoveActionArmTarget != null)
  875. {
  876. RobotArm = ModuleManager.ModuleInfos["TMRobot"].WaferManager.Wafers[0].WaferStatus.ToString();
  877. }
  878. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  879. if (TMRobotMoveActionBladeTarget != null)
  880. {
  881. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  882. }
  883. var TMRobotMoveActionRobotAction = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.RobotAction");
  884. if (TMRobotMoveActionRobotAction != null)
  885. {
  886. RobotAction2 = TMRobotMoveActionRobotAction.ToString();
  887. }
  888. RobotMoveInfo = (RobotMoveInfo)QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction");
  889. }
  890. #endregion
  891. #region 命令方法
  892. private void OnRobotHome()
  893. {
  894. InvokeClient.Instance.Service.DoOperation($"TM.RobotHome", "TMRobot");
  895. }
  896. private void OnGoto()
  897. {
  898. //if (GoToSelectedBlade == TMBlade.Blade1)
  899. //{
  900. // Robot1TAction = WaferRobotTAction;
  901. //}
  902. //else if (GoToSelectedBlade == TMBlade.Blade2)
  903. //{
  904. // Robot2TAction = WaferRobotTAction;
  905. //}
  906. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), WaferRobotTAction.ToString(), true);
  907. var selectedHand = (Hand)Enum.Parse(typeof(Hand), GoToSelectedBlade.ToString(), true);
  908. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Goto}", moduleName, 0, selectedHand);
  909. }
  910. private void OnExtend()
  911. {
  912. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  913. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  914. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Extend}", moduleName, 0, selectedHand);
  915. }
  916. private void OnRetract()
  917. {
  918. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  919. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  920. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Retract}", moduleName, 0, selectedHand);
  921. }
  922. private void OnModuleChange(object obj)
  923. {
  924. var value = obj.ToString();
  925. switch (value)
  926. {
  927. case "Pick":
  928. PickSoltItemsSource.Clear();
  929. if ((int)PickSelectedModule == 4)
  930. {
  931. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  932. {
  933. PickSoltItemsSource.Add(i);
  934. }
  935. }
  936. else if ((int)PickSelectedModule == 5)
  937. {
  938. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  939. {
  940. PickSoltItemsSource.Add(i);
  941. }
  942. }
  943. else
  944. {
  945. PickSoltItemsSource.Add(1);
  946. }
  947. PickSoltSelectedIndex = 0;
  948. break;
  949. case "Place":
  950. PlaceSoltItemsSource.Clear();
  951. if ((int)PlaceSelectedModule == 4)
  952. {
  953. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  954. {
  955. PlaceSoltItemsSource.Add(i);
  956. }
  957. }
  958. else if ((int)PlaceSelectedModule == 5)
  959. {
  960. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  961. {
  962. PlaceSoltItemsSource.Add(i);
  963. }
  964. }
  965. else
  966. {
  967. PlaceSoltItemsSource.Add(1);
  968. }
  969. PlaceSoltSelectedIndex = 0;
  970. break;
  971. case "Extend":
  972. ExtendSoltItemsSource.Clear();
  973. if ((int)ExtendSelectedModule == 4)
  974. {
  975. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  976. {
  977. ExtendSoltItemsSource.Add(i);
  978. }
  979. }
  980. else if ((int)ExtendSelectedModule == 5)
  981. {
  982. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  983. {
  984. ExtendSoltItemsSource.Add(i);
  985. }
  986. }
  987. else
  988. {
  989. ExtendSoltItemsSource.Add(1);
  990. }
  991. ExtendSoltSelectedIndex = 0;
  992. break;
  993. case "Retract":
  994. RetractSoltItemsSource.Clear();
  995. if ((int)RetractSelectedModule == 4)
  996. {
  997. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  998. {
  999. RetractSoltItemsSource.Add(i);
  1000. }
  1001. //RetractSoltItemsSource = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
  1002. }
  1003. else if ((int)RetractSelectedModule == 5)
  1004. {
  1005. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  1006. {
  1007. RetractSoltItemsSource.Add(i);
  1008. }
  1009. }
  1010. else
  1011. {
  1012. RetractSoltItemsSource.Add(1);
  1013. }
  1014. RetractSoltSelectedIndex = 0;
  1015. break;
  1016. }
  1017. }
  1018. private void OnPick()
  1019. {
  1020. Queue<MoveItem> moveItems = new Queue<MoveItem>();
  1021. var moduleName= (ModuleName)Enum.Parse(typeof(ModuleName), PickSelectedModule.ToString(), true);
  1022. var selectedHand= (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
  1023. MoveItem moveItem = new MoveItem(moduleName, PickSoltItemsSource[PickSoltSelectedIndex] - 1, 0, 0, selectedHand);
  1024. moveItems.Enqueue(moveItem);
  1025. if ((int)PickSelectedModule > 3)
  1026. {
  1027. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPick}", moveItems);
  1028. }
  1029. else
  1030. {
  1031. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPick}", moveItems);
  1032. }
  1033. }
  1034. private void OnPlace()
  1035. {
  1036. Queue<MoveItem> moveItems = new Queue<MoveItem>();
  1037. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  1038. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  1039. MoveItem moveItem = new MoveItem(0,0,moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex]-1, selectedHand);
  1040. moveItems.Enqueue(moveItem);
  1041. if ((int)PlaceSelectedModule > 3)
  1042. {
  1043. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPlace}", moveItems);
  1044. }
  1045. else
  1046. {
  1047. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPlace}", moveItems);
  1048. }
  1049. }
  1050. private void OnHome()
  1051. {
  1052. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.Home");
  1053. }
  1054. private void OnVent()
  1055. {
  1056. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Vent}");
  1057. }
  1058. private void OnPump()
  1059. {
  1060. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Pump}");
  1061. }
  1062. private void OnPurge()
  1063. {
  1064. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Purge}");
  1065. }
  1066. private void OnModuleChecked(object obj)
  1067. {
  1068. m_ModuleCheckedName=obj.ToString();
  1069. }
  1070. private void OnAbort()
  1071. {
  1072. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Abort}");
  1073. }
  1074. private void OnStartCycle()
  1075. {
  1076. if (CycleEnable == false)
  1077. {
  1078. return;
  1079. }
  1080. List<string> strings = new List<string>();
  1081. if (OriginalCycleSelectedItem != "")
  1082. {
  1083. strings.Add(OriginalCycleSelectedItem);
  1084. }
  1085. else
  1086. {
  1087. return;
  1088. }
  1089. if (PMAIsCycle==true)
  1090. {
  1091. strings.Add("PMA");
  1092. }
  1093. if (PMBIsCycle == true)
  1094. {
  1095. strings.Add("PMB");
  1096. }
  1097. if (PMCIsCycle == true)
  1098. {
  1099. strings.Add("PMC");
  1100. }
  1101. if (PMDIsCycle == true)
  1102. {
  1103. strings.Add("PMD");
  1104. }
  1105. if (ToCycleSelectedItem != "")
  1106. {
  1107. strings.Add(ToCycleSelectedItem);
  1108. }
  1109. else
  1110. {
  1111. return;
  1112. }
  1113. InvokeClient.Instance.Service.DoOperation("TMCycle.Start", strings.ToArray(),CycleCount);
  1114. }
  1115. private void OnStopCycle()
  1116. {
  1117. InvokeClient.Instance.Service.DoOperation("TMCycle.Abort");
  1118. }
  1119. private void OnSystemHome()
  1120. {
  1121. InvokeClient.Instance.Service.DoOperation("System.Home");
  1122. }
  1123. private void OnChamberDoorOpen(object obj)
  1124. {
  1125. InvokeClient.Instance.Service.DoOperation($"{obj?.ToString()}.SlitDoor.Open");
  1126. }
  1127. private void OnChamberDoorClose(object obj)
  1128. {
  1129. InvokeClient.Instance.Service.DoOperation($"{obj?.ToString()}.SlitDoor.Close");
  1130. }
  1131. #endregion
  1132. #region 私有方法
  1133. private void addDataKeys()
  1134. {
  1135. m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
  1136. m_RtDataKeys.Add("PMB.IsSlitDoorClosed");
  1137. m_RtDataKeys.Add("PMC.IsSlitDoorClosed");
  1138. m_RtDataKeys.Add("PMD.IsSlitDoorClosed");
  1139. m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
  1140. m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
  1141. m_RtDataKeys.Add("TM.LLAESlitDoor.IsClosed");
  1142. m_RtDataKeys.Add("TM.LLBESlitDoor.IsClosed");
  1143. m_RtDataKeys.Add("TMCycle.CycleIndex");
  1144. }
  1145. //private void UIEvents_PMDoorRaiseChangedEvent(DoorPara obj)
  1146. //{
  1147. // InvokeClient.Instance.Service.DoOperation($"{obj?.ModuleName}.SlitDoor.{obj?.IsOpen}");
  1148. //}
  1149. //private void UIEvents_LLTDoorRaiseChangedEvent(DoorPara obj)
  1150. //{
  1151. // InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}TSlitDoor.{obj?.IsOpen}");
  1152. //}
  1153. //private void UIEvents_LLEDoorRaiseChangedEvent(DoorPara obj)
  1154. //{
  1155. // InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}ESlitDoor.{obj?.IsOpen}");
  1156. //}
  1157. #endregion
  1158. }
  1159. }