TMViewModel.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784
  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 OpenSEMI.ClientBase;
  7. using Prism.Commands;
  8. using Prism.Mvvm;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Collections.ObjectModel;
  12. using System.Linq;
  13. using System.Text;
  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. namespace Venus_MainPages.ViewModels
  20. {
  21. public enum TMModule
  22. {
  23. PMA, PMB, PMC, PMD, LLA, LLB
  24. }
  25. public enum TMBlade
  26. {
  27. Blade1, Blade2
  28. }
  29. internal class TMViewModel : BindableBase
  30. {
  31. #region 私有字段
  32. //private ModuleInfo m_PMAWafer;
  33. private ModuleInfo m_LLAModuleInfo;
  34. private ModuleInfo m_LLBModuleInfo;
  35. private bool m_TMIsOFFline;
  36. private bool m_LLIsOFFline;
  37. private WaferInfo m_PMAWafer;
  38. private WaferInfo m_PMBWafer;
  39. private WaferInfo m_PMCWafer;
  40. private WaferInfo m_PMDWafer;
  41. private WaferInfo m_LLAWafer;
  42. private WaferInfo m_LLBWafer;
  43. private WaferInfo m_BladeAWafer;
  44. private WaferInfo m_BladeBWafer;
  45. private bool m_PMADoorIsOpen;
  46. //private bool m_PMBDoorIsOpen;
  47. //private bool m_PMCDoorIsOpen;
  48. //private bool m_PMDDoorIsOpen;
  49. private bool m_LLADoorIsOpen;
  50. private WaferRobotTAction m_WaferRobotTAction;
  51. private WaferRobotTAction m_Robot1TAction;
  52. private WaferRobotXAction m_Robot1XAction;
  53. private WaferRobotTAction m_Robot2TAction;
  54. private WaferRobotXAction m_Robot2XAction;
  55. private TMModule m_PickSelectedModule;
  56. private TMModule m_PlaceSelectedModule;
  57. private TMModule m_ExtendSelectedModule;
  58. private TMModule m_RetractSelectedModule;
  59. private TMBlade m_PickSelectedBlade;
  60. private TMBlade m_PlaceSelectedBlade;
  61. private TMBlade m_ExtendSelectedBlade;
  62. private TMBlade m_RetractSelectedBlade;
  63. private TMBlade m_GoToSelectedBlade;
  64. private ObservableCollection<int> m_PlaceSoltItemsSource = new ObservableCollection<int>();
  65. private ObservableCollection<int> m_PickSoltItemsSource = new ObservableCollection<int>();
  66. private ObservableCollection<int> m_ExtendSoltItemsSource = new ObservableCollection<int>();
  67. private ObservableCollection<int> m_RetractSoltItemsSource = new ObservableCollection<int>();
  68. private int m_PickSoltSelectedIndex;
  69. private int m_PlaceSoltSelectedIndex;
  70. private int m_ExtendSoltSelectedIndex;
  71. private int m_RetractSoltSelectedIndex;
  72. private List<string> m_RtDataKeys=new List<string> ();
  73. private Dictionary<string, object> m_RtDataValues;
  74. private string m_ModuleCheckedName="TM";
  75. private string m_RobotAction;
  76. private string m_RobotTarget;
  77. private string m_RobotArm;
  78. #endregion
  79. #region 属性
  80. public string RobotAction
  81. {
  82. get { return m_RobotAction; }
  83. set
  84. {
  85. RobotActiont(m_RobotAction, value);
  86. SetProperty(ref m_RobotAction, value);
  87. }
  88. }
  89. public string RobotTarget
  90. {
  91. get { return m_RobotTarget; }
  92. set
  93. {
  94. SetProperty(ref m_RobotTarget, value);
  95. }
  96. }
  97. public string RobotArm
  98. {
  99. get { return m_RobotArm; }
  100. set
  101. {
  102. SetProperty(ref m_RobotArm, value);
  103. }
  104. }
  105. int arm1oldWaferStatus = 100;
  106. int arm2oldWaferStatus = 100;
  107. private async void RobotActiont(string oldValue,string newValue)
  108. {
  109. if (oldValue == "None" && newValue == "Placing" && ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus==1)
  110. {
  111. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  112. if (TMRobotMoveActionBladeTarget != null)
  113. {
  114. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  115. }
  116. else
  117. {
  118. return;
  119. }
  120. var values = RobotTarget.Split('.');
  121. var arm = values[0];
  122. var module = values[1];
  123. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  124. await Task.Delay(1500);
  125. Robot1XAction = WaferRobotXAction.Extend;
  126. if (arm == "ArmA")
  127. {
  128. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  129. await Task.Delay(1500);
  130. Robot1XAction = WaferRobotXAction.Extend;
  131. }
  132. else if (arm == "ArmB")
  133. {
  134. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  135. await Task.Delay(1500);
  136. Robot2XAction = WaferRobotXAction.Extend;
  137. }
  138. }
  139. if (oldValue == "None" && newValue == "Placing" && ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus == 1)
  140. {
  141. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  142. if (TMRobotMoveActionBladeTarget != null)
  143. {
  144. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  145. }
  146. else
  147. {
  148. return;
  149. }
  150. var values = RobotTarget.Split('.');
  151. var arm = values[0];
  152. var module = values[1];
  153. if (arm == "ArmA")
  154. {
  155. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  156. await Task.Delay(1500);
  157. Robot1XAction = WaferRobotXAction.Extend;
  158. }
  159. else if (arm == "ArmB")
  160. {
  161. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  162. await Task.Delay(1500);
  163. Robot2XAction = WaferRobotXAction.Extend;
  164. }
  165. //Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  166. //await Task.Delay(1500);
  167. //Robot2XAction = WaferRobotXAction.Extend;
  168. }
  169. if (arm1oldWaferStatus != ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus)
  170. {
  171. Robot1XAction = WaferRobotXAction.Retract;
  172. }
  173. if (arm2oldWaferStatus != ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus)
  174. {
  175. Robot2XAction = WaferRobotXAction.Retract;
  176. }
  177. if (oldValue == "None" && newValue == "Picking" && ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus == 0)
  178. {
  179. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  180. if (TMRobotMoveActionBladeTarget != null)
  181. {
  182. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  183. }
  184. else
  185. {
  186. return;
  187. }
  188. var values = RobotTarget.Split('.');
  189. var arm = values[0];
  190. var module = values[1];
  191. if (arm == "ArmA")
  192. {
  193. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  194. await Task.Delay(1500);
  195. Robot1XAction = WaferRobotXAction.Extend;
  196. }
  197. else if (arm == "ArmB")
  198. {
  199. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  200. await Task.Delay(1500);
  201. Robot2XAction = WaferRobotXAction.Extend;
  202. }
  203. }
  204. #region pick 和 place pm
  205. if (oldValue == "None" && newValue == "Extending")
  206. {
  207. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  208. if (TMRobotMoveActionBladeTarget != null)
  209. {
  210. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  211. }
  212. else
  213. {
  214. return;
  215. }
  216. var values = RobotTarget.Split('.');
  217. var arm = values[0];
  218. var module = values[1];
  219. if (arm == "ArmA")
  220. {
  221. Robot1TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  222. await Task.Delay(1500);
  223. Robot1XAction = WaferRobotXAction.Extend;
  224. }
  225. else if (arm == "ArmB")
  226. {
  227. Robot2TAction = (WaferRobotTAction)Enum.Parse(typeof(WaferRobotTAction), module, true);
  228. await Task.Delay(1500);
  229. Robot2XAction = WaferRobotXAction.Extend;
  230. }
  231. }
  232. if (oldValue == "None" && newValue == "Retracting")
  233. {
  234. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  235. if (TMRobotMoveActionBladeTarget != null)
  236. {
  237. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  238. }
  239. else
  240. {
  241. return;
  242. }
  243. var values = RobotTarget.Split('.');
  244. var arm = values[0];
  245. if (arm == "ArmA")
  246. {
  247. Robot1XAction = WaferRobotXAction.Retract;
  248. }
  249. else if (arm == "ArmB")
  250. {
  251. Robot2XAction = WaferRobotXAction.Retract;
  252. }
  253. }
  254. #endregion
  255. arm1oldWaferStatus = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus;
  256. arm2oldWaferStatus = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1].WaferStatus;
  257. }
  258. public WaferInfo LLAWafer
  259. {
  260. get { return m_LLAWafer; }
  261. set { SetProperty(ref m_LLAWafer, value); }
  262. }
  263. public WaferInfo LLBWafer
  264. {
  265. get { return m_LLBWafer; }
  266. set { SetProperty(ref m_LLBWafer, value); }
  267. }
  268. public WaferInfo PMAWafer
  269. {
  270. get { return m_PMAWafer; }
  271. set { SetProperty(ref m_PMAWafer, value); }
  272. }
  273. public WaferInfo PMBWafer
  274. {
  275. get { return m_PMBWafer; }
  276. set { SetProperty(ref m_PMBWafer, value); }
  277. }
  278. public WaferInfo PMCWafer
  279. {
  280. get { return m_PMCWafer; }
  281. set { SetProperty(ref m_PMCWafer, value); }
  282. }
  283. public WaferInfo PMDWafer
  284. {
  285. get { return m_PMDWafer; }
  286. set { SetProperty(ref m_PMDWafer, value); }
  287. }
  288. public WaferInfo BladeAWafer
  289. {
  290. get { return m_BladeAWafer; }
  291. set { SetProperty(ref m_BladeAWafer, value); }
  292. }
  293. public WaferInfo BladeBWafer
  294. {
  295. get { return m_BladeBWafer; }
  296. set { SetProperty(ref m_BladeBWafer, value); }
  297. }
  298. public ModuleInfo LLAModuleInfo
  299. {
  300. get { return m_LLAModuleInfo; }
  301. set { SetProperty(ref m_LLAModuleInfo, value); }
  302. }
  303. public ModuleInfo LLBModuleInfo
  304. {
  305. get { return m_LLBModuleInfo; }
  306. set { SetProperty(ref m_LLBModuleInfo, value); }
  307. }
  308. public bool TMIsOFFline
  309. {
  310. get { return m_TMIsOFFline; }
  311. set { SetProperty(ref m_TMIsOFFline, value); }
  312. }
  313. public bool LLIsOFFline
  314. {
  315. get { return m_LLIsOFFline; }
  316. set { SetProperty(ref m_LLIsOFFline, value); }
  317. }
  318. public bool PMADoorIsOpen
  319. {
  320. get { return m_PMADoorIsOpen; }
  321. set { SetProperty(ref m_PMADoorIsOpen, value); }
  322. }
  323. public bool LLADoorIsOpen
  324. {
  325. get { return m_LLADoorIsOpen; }
  326. set { SetProperty(ref m_LLADoorIsOpen, value); }
  327. }
  328. public WaferRobotTAction WaferRobotTAction
  329. {
  330. get { return m_WaferRobotTAction; }
  331. set { SetProperty(ref m_WaferRobotTAction, value); }
  332. }
  333. public WaferRobotTAction Robot1TAction
  334. {
  335. get { return m_Robot1TAction; }
  336. set { SetProperty(ref m_Robot1TAction, value); }
  337. }
  338. public WaferRobotXAction Robot1XAction
  339. {
  340. get { return m_Robot1XAction; }
  341. set { SetProperty(ref m_Robot1XAction, value); }
  342. }
  343. public WaferRobotTAction Robot2TAction
  344. {
  345. get { return m_Robot2TAction; }
  346. set { SetProperty(ref m_Robot2TAction, value); }
  347. }
  348. public WaferRobotXAction Robot2XAction
  349. {
  350. get { return m_Robot2XAction; }
  351. set { SetProperty(ref m_Robot2XAction, value); }
  352. }
  353. public TMModule PickSelectedModule
  354. {
  355. get { return m_PickSelectedModule; }
  356. set { SetProperty(ref m_PickSelectedModule, value); }
  357. }
  358. public TMModule PlaceSelectedModule
  359. {
  360. get { return m_PlaceSelectedModule; }
  361. set { SetProperty(ref m_PlaceSelectedModule, value); }
  362. }
  363. public TMModule ExtendSelectedModule
  364. {
  365. get { return m_ExtendSelectedModule; }
  366. set { SetProperty(ref m_ExtendSelectedModule, value); }
  367. }
  368. public TMModule RetractSelectedModule
  369. {
  370. get { return m_RetractSelectedModule; }
  371. set { SetProperty(ref m_RetractSelectedModule, value); }
  372. }
  373. public TMBlade PickSelectedBlade
  374. {
  375. get { return m_PickSelectedBlade; }
  376. set { SetProperty(ref m_PickSelectedBlade, value); }
  377. }
  378. public TMBlade PlaceSelectedBlade
  379. {
  380. get { return m_PlaceSelectedBlade; }
  381. set { SetProperty(ref m_PlaceSelectedBlade, value); }
  382. }
  383. public TMBlade ExtendSelectedBlade
  384. {
  385. get { return m_ExtendSelectedBlade; }
  386. set { SetProperty(ref m_ExtendSelectedBlade, value); }
  387. }
  388. public TMBlade RetractSelectedBlade
  389. {
  390. get { return m_RetractSelectedBlade; }
  391. set { SetProperty(ref m_RetractSelectedBlade, value); }
  392. }
  393. public TMBlade GoToSelectedBlade
  394. {
  395. get { return m_GoToSelectedBlade; }
  396. set { SetProperty(ref m_GoToSelectedBlade, value); }
  397. }
  398. public ObservableCollection<int> PickSoltItemsSource
  399. {
  400. get { return m_PickSoltItemsSource; }
  401. set { SetProperty(ref m_PickSoltItemsSource, value); }
  402. }
  403. public ObservableCollection<int> PlaceSoltItemsSource
  404. {
  405. get { return m_PlaceSoltItemsSource; }
  406. set { SetProperty(ref m_PlaceSoltItemsSource, value); }
  407. }
  408. public ObservableCollection<int> ExtendSoltItemsSource
  409. {
  410. get { return m_ExtendSoltItemsSource; }
  411. set { SetProperty(ref m_ExtendSoltItemsSource, value); }
  412. }
  413. public ObservableCollection<int> RetractSoltItemsSource
  414. {
  415. get { return m_RetractSoltItemsSource; }
  416. set { SetProperty(ref m_RetractSoltItemsSource, value); }
  417. }
  418. public int PickSoltSelectedIndex
  419. {
  420. get { return m_PickSoltSelectedIndex; }
  421. set { SetProperty(ref m_PickSoltSelectedIndex, value); }
  422. }
  423. public int PlaceSoltSelectedIndex
  424. {
  425. get { return m_PlaceSoltSelectedIndex; }
  426. set { SetProperty(ref m_PlaceSoltSelectedIndex, value); }
  427. }
  428. public int ExtendSoltSelectedIndex
  429. {
  430. get { return m_ExtendSoltSelectedIndex; }
  431. set { SetProperty(ref m_ExtendSoltSelectedIndex, value); }
  432. }
  433. public int RetractSoltSelectedIndex
  434. {
  435. get { return m_RetractSoltSelectedIndex; }
  436. set { SetProperty(ref m_RetractSoltSelectedIndex, value); }
  437. }
  438. public Dictionary<string, object> RtDataValues
  439. {
  440. get { return m_RtDataValues; }
  441. set { SetProperty(ref m_RtDataValues, value); }
  442. }
  443. #endregion
  444. #region 命令
  445. private DelegateCommand _GotoCommand;
  446. public DelegateCommand GotoCommand =>
  447. _GotoCommand ?? (_GotoCommand = new DelegateCommand(OnGoto));
  448. private DelegateCommand _ExtendCommand;
  449. public DelegateCommand ExtendCommand =>
  450. _ExtendCommand ?? (_ExtendCommand = new DelegateCommand(OnExtend));
  451. private DelegateCommand _RetractCommand;
  452. public DelegateCommand RetractCommand =>
  453. _RetractCommand ?? (_RetractCommand = new DelegateCommand(OnRetract));
  454. private DelegateCommand<object> _ModuleChangeCommand;
  455. public DelegateCommand<object> ModuleChangeCommand =>
  456. _ModuleChangeCommand ?? (_ModuleChangeCommand = new DelegateCommand<object>(OnModuleChange));
  457. private DelegateCommand _PickCommand;
  458. public DelegateCommand PickCommand =>
  459. _PickCommand ?? (_PickCommand = new DelegateCommand(OnPick));
  460. private DelegateCommand _PlaceCommand;
  461. public DelegateCommand PlaceCommand =>
  462. _PlaceCommand ?? (_PlaceCommand = new DelegateCommand(OnPlace));
  463. private DelegateCommand _HomeCommand;
  464. public DelegateCommand HomeCommand =>
  465. _HomeCommand ?? (_HomeCommand = new DelegateCommand(OnHome));
  466. private DelegateCommand _VentCommand;
  467. public DelegateCommand VentCommand =>
  468. _VentCommand ?? (_VentCommand = new DelegateCommand(OnVent));
  469. private DelegateCommand _PumpCommand;
  470. public DelegateCommand PumpCommand =>
  471. _PumpCommand ?? (_PumpCommand = new DelegateCommand(OnPump));
  472. private DelegateCommand _PurgeCommand;
  473. public DelegateCommand PurgeCommand =>
  474. _PurgeCommand ?? (_PurgeCommand = new DelegateCommand(OnPurge));
  475. private DelegateCommand<object> _ModuleCheckedCommand;
  476. public DelegateCommand<object> ModuleCheckedCommand =>
  477. _ModuleCheckedCommand ?? (_ModuleCheckedCommand = new DelegateCommand<object>(OnModuleChecked));
  478. private DelegateCommand _AbortCommand;
  479. public DelegateCommand AbortCommand =>
  480. _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
  481. #endregion
  482. #region 构造函数
  483. public TMViewModel()
  484. {
  485. addDataKeys();
  486. DispatcherTimer timer = new DispatcherTimer();
  487. timer.Interval = TimeSpan.FromSeconds(0.5);
  488. timer.Tick += Timer_Tick;
  489. timer.Start();
  490. PickSoltItemsSource.Add(1);
  491. PlaceSoltItemsSource.Add(1);
  492. ExtendSoltItemsSource.Add(1);
  493. RetractSoltItemsSource.Add(1);
  494. //Robot1TAction = WaferRobotTAction.PMA;
  495. //Robot2TAction = WaferRobotTAction.PMD;
  496. }
  497. private void Timer_Tick(object sender, EventArgs e)
  498. {
  499. LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
  500. LLBModuleInfo = ModuleManager.ModuleInfos["LLB"];
  501. //LLBWafer = ModuleManager.ModuleInfos["LLB"].WaferManager.Wafers[0];
  502. //LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers[3];
  503. PMAWafer = ModuleManager.ModuleInfos["PMA"].WaferManager.Wafers[0];
  504. BladeAWafer = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0];
  505. BladeBWafer = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[1];
  506. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  507. var TMRobotMoveActionArmTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.ArmTarget");
  508. if (TMRobotMoveActionArmTarget != null)
  509. {
  510. RobotArm = ModuleManager.ModuleInfos["TM"].WaferManager.Wafers[0].WaferStatus.ToString();
  511. }
  512. var TMRobotMoveActionBladeTarget = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.BladeTarget");
  513. if (TMRobotMoveActionBladeTarget != null)
  514. {
  515. RobotTarget = TMRobotMoveActionBladeTarget.ToString();
  516. }
  517. var TMRobotMoveActionRobotAction = QueryDataClient.Instance.Service.GetData("TM.RobotMoveAction.RobotAction");
  518. if (TMRobotMoveActionRobotAction != null)
  519. {
  520. RobotAction = TMRobotMoveActionRobotAction.ToString();
  521. }
  522. }
  523. #endregion
  524. #region 命令方法
  525. private void OnGoto()
  526. {
  527. if (GoToSelectedBlade == TMBlade.Blade1)
  528. {
  529. Robot1TAction = WaferRobotTAction;
  530. }
  531. else if (GoToSelectedBlade == TMBlade.Blade2)
  532. {
  533. Robot2TAction = WaferRobotTAction;
  534. }
  535. }
  536. private void OnExtend()
  537. {
  538. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  539. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  540. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Extend}", moduleName, 0, selectedHand);
  541. }
  542. private void OnRetract()
  543. {
  544. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  545. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  546. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.Retract}", moduleName, 0, selectedHand);
  547. }
  548. private void OnModuleChange(object obj)
  549. {
  550. var value = obj.ToString();
  551. switch (value)
  552. {
  553. case "Pick":
  554. PickSoltItemsSource.Clear();
  555. if ((int)PickSelectedModule == 4)
  556. {
  557. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  558. {
  559. PickSoltItemsSource.Add(i);
  560. }
  561. }
  562. else if ((int)PickSelectedModule == 5)
  563. {
  564. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  565. {
  566. PickSoltItemsSource.Add(i);
  567. }
  568. }
  569. else
  570. {
  571. PickSoltItemsSource.Add(1);
  572. }
  573. PickSoltSelectedIndex = 0;
  574. break;
  575. case "Place":
  576. PlaceSoltItemsSource.Clear();
  577. if ((int)PlaceSelectedModule == 4)
  578. {
  579. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  580. {
  581. PlaceSoltItemsSource.Add(i);
  582. }
  583. }
  584. else if ((int)PlaceSelectedModule == 5)
  585. {
  586. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  587. {
  588. PlaceSoltItemsSource.Add(i);
  589. }
  590. }
  591. else
  592. {
  593. PlaceSoltItemsSource.Add(1);
  594. }
  595. PlaceSoltSelectedIndex = 0;
  596. break;
  597. case "Extend":
  598. ExtendSoltItemsSource.Clear();
  599. if ((int)ExtendSelectedModule == 4)
  600. {
  601. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  602. {
  603. ExtendSoltItemsSource.Add(i);
  604. }
  605. }
  606. else if ((int)ExtendSelectedModule == 5)
  607. {
  608. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  609. {
  610. ExtendSoltItemsSource.Add(i);
  611. }
  612. }
  613. else
  614. {
  615. ExtendSoltItemsSource.Add(1);
  616. }
  617. ExtendSoltSelectedIndex = 0;
  618. break;
  619. case "Retract":
  620. RetractSoltItemsSource.Clear();
  621. if ((int)RetractSelectedModule == 4)
  622. {
  623. for (int i = 1; i <= LLAModuleInfo.WaferManager.Wafers.Count; i++)
  624. {
  625. RetractSoltItemsSource.Add(i);
  626. }
  627. //RetractSoltItemsSource = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
  628. }
  629. else if ((int)RetractSelectedModule == 5)
  630. {
  631. for (int i = 1; i <= LLBModuleInfo.WaferManager.Wafers.Count; i++)
  632. {
  633. RetractSoltItemsSource.Add(i);
  634. }
  635. }
  636. else
  637. {
  638. RetractSoltItemsSource.Add(1);
  639. }
  640. RetractSoltSelectedIndex = 0;
  641. break;
  642. }
  643. }
  644. private void OnPick()
  645. {
  646. var moduleName= (ModuleName)Enum.Parse(typeof(ModuleName), PickSelectedModule.ToString(), true);
  647. var selectedHand= (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
  648. if ((int)PickSelectedModule > 3)
  649. {
  650. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPick}", moduleName, PickSoltItemsSource[PickSoltSelectedIndex] - 1, selectedHand);
  651. }
  652. else
  653. {
  654. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPick}", moduleName, PickSoltItemsSource[PickSoltSelectedIndex] - 1, selectedHand);
  655. }
  656. }
  657. private void OnPlace()
  658. {
  659. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  660. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  661. if ((int)PlaceSelectedModule > 3)
  662. {
  663. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPlace}", moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex]-1, selectedHand);
  664. }
  665. else
  666. {
  667. InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPlace}", moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex] - 1, selectedHand);
  668. }
  669. }
  670. private void OnHome()
  671. {
  672. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.Home");
  673. }
  674. private void OnVent()
  675. {
  676. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Vent}");
  677. }
  678. private void OnPump()
  679. {
  680. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Pump}");
  681. }
  682. private void OnPurge()
  683. {
  684. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Purge}");
  685. }
  686. private void OnModuleChecked(object obj)
  687. {
  688. m_ModuleCheckedName=obj.ToString();
  689. }
  690. private void OnAbort()
  691. {
  692. InvokeClient.Instance.Service.DoOperation($"{m_ModuleCheckedName}.{RtOperation.Abort}");
  693. }
  694. #endregion
  695. #region 私有方法
  696. private void addDataKeys()
  697. {
  698. m_RtDataKeys.Add("PMA.IsSlitDoorClosed");
  699. m_RtDataKeys.Add("PMB.IsSlitDoorClosed");
  700. m_RtDataKeys.Add("PMC.IsSlitDoorClosed");
  701. m_RtDataKeys.Add("PMD.IsSlitDoorClosed");
  702. m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
  703. m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
  704. //m_RtDataKeys.Add("TM.RobotMoveAction");
  705. }
  706. #endregion
  707. }
  708. }