EfemViewModel.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. using Aitex.Sorter.Common;
  2. using ExcelLibrary.BinaryFileFormat;
  3. using MECF.Framework.Common.CommonData;
  4. using MECF.Framework.Common.DataCenter;
  5. using MECF.Framework.Common.Equipment;
  6. using MECF.Framework.Common.OperationCenter;
  7. using MECF.Framework.Common.Schedulers;
  8. using OpenSEMI.ClientBase;
  9. using Prism.Commands;
  10. using Prism.Mvvm;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Collections.ObjectModel;
  14. using System.Linq;
  15. using System.Windows.Threading;
  16. using Venus_Core;
  17. using Venus_MainPages.Unity;
  18. using Venus_Themes.Unity;
  19. namespace Venus_MainPages.ViewModels
  20. {
  21. public enum EFEMModule
  22. {
  23. LLA, LLB,LP1,LP2,LP3,Aligner1
  24. }
  25. public enum EFEMBlade
  26. {
  27. Blade1, Blade2
  28. }
  29. internal class EfemViewModel:BindableBase
  30. {
  31. #region 私有字段
  32. private bool m_LLAIsInstalled;
  33. private bool m_LLBIsInstalled;
  34. private ModuleInfo m_LLAModuleInfo;
  35. private ModuleInfo m_LLBModuleInfo;
  36. private ModuleInfo m_LP1ModuleInfo;
  37. private ModuleInfo m_LP2ModuleInfo;
  38. private ModuleInfo m_LP3ModuleInfo;
  39. private ModuleInfo m_EFEMModuleInfo;
  40. private List<EFEMModule> m_EFEMModules = new List<EFEMModule>();
  41. private EFEMBlade m_PickSelectedBlade;
  42. private EFEMBlade m_PlaceSelectedBlade;
  43. private EFEMBlade m_ExtendSelectedBlade;
  44. private EFEMBlade m_RetractSelectedBlade;
  45. private ObservableCollection<int> m_PlaceSoltItemsSource = new ObservableCollection<int>();
  46. private ObservableCollection<int> m_PickSoltItemsSource = new ObservableCollection<int>();
  47. private ObservableCollection<int> m_ExtendSoltItemsSource = new ObservableCollection<int>();
  48. private ObservableCollection<int> m_RetractSoltItemsSource = new ObservableCollection<int>();
  49. private int m_PickSoltSelectedIndex;
  50. private int m_PlaceSoltSelectedIndex;
  51. private int m_ExtendSoltSelectedIndex;
  52. private int m_RetractSoltSelectedIndex;
  53. private EFEMModule m_PickSelectedModule;
  54. private EFEMModule m_PlaceSelectedModule;
  55. private EFEMModule m_ExtendSelectedModule;
  56. private EFEMModule m_RetractSelectedModule;
  57. private WaferInfo m_BladeAWafer;
  58. private WaferInfo m_BladeBWafer;
  59. private WaferInfo m_LLAWafer;
  60. private WaferInfo m_LLBWafer;
  61. private WaferInfo m_Aligner1Wafer;
  62. private string m_LP1Status;
  63. private string m_LP2Status;
  64. private string m_LP3Status;
  65. private List<string> m_RtDataKeys=new List<string>();
  66. private Dictionary<string, object> m_RtDataValues;
  67. private int m_AlignValue;
  68. #endregion
  69. #region 属性
  70. public bool LLAIsInstalled
  71. {
  72. get { return m_LLAIsInstalled; }
  73. set { SetProperty(ref m_LLAIsInstalled, value); }
  74. }
  75. public bool LLBIsInstalled
  76. {
  77. get { return m_LLBIsInstalled; }
  78. set { SetProperty(ref m_LLBIsInstalled, value); }
  79. }
  80. public ModuleInfo LLAModuleInfo
  81. {
  82. get { return m_LLAModuleInfo; }
  83. set { SetProperty(ref m_LLAModuleInfo, value); }
  84. }
  85. public ModuleInfo LLBModuleInfo
  86. {
  87. get { return m_LLBModuleInfo; }
  88. set { SetProperty(ref m_LLBModuleInfo, value); }
  89. }
  90. public ModuleInfo LP1ModuleInfo
  91. {
  92. get { return m_LP1ModuleInfo; }
  93. set { SetProperty(ref m_LP1ModuleInfo, value); }
  94. }
  95. public ModuleInfo LP2ModuleInfo
  96. {
  97. get { return m_LP2ModuleInfo; }
  98. set { SetProperty(ref m_LP2ModuleInfo, value); }
  99. }
  100. public ModuleInfo LP3ModuleInfo
  101. {
  102. get { return m_LP3ModuleInfo; }
  103. set { SetProperty(ref m_LP3ModuleInfo, value); }
  104. }
  105. public ModuleInfo EFEMModuleInfo
  106. {
  107. get { return m_EFEMModuleInfo; }
  108. set { SetProperty(ref m_EFEMModuleInfo, value); }
  109. }
  110. public List<EFEMModule> EFEMModules
  111. {
  112. get { return m_EFEMModules; }
  113. set { SetProperty(ref m_EFEMModules, value); }
  114. }
  115. public EFEMBlade PickSelectedBlade
  116. {
  117. get { return m_PickSelectedBlade; }
  118. set { SetProperty(ref m_PickSelectedBlade, value); }
  119. }
  120. public EFEMBlade PlaceSelectedBlade
  121. {
  122. get { return m_PlaceSelectedBlade; }
  123. set { SetProperty(ref m_PlaceSelectedBlade, value); }
  124. }
  125. public EFEMBlade ExtendSelectedBlade
  126. {
  127. get { return m_ExtendSelectedBlade; }
  128. set { SetProperty(ref m_ExtendSelectedBlade, value); }
  129. }
  130. public EFEMBlade RetractSelectedBlade
  131. {
  132. get { return m_RetractSelectedBlade; }
  133. set { SetProperty(ref m_RetractSelectedBlade, value); }
  134. }
  135. public ObservableCollection<int> PickSoltItemsSource
  136. {
  137. get { return m_PickSoltItemsSource; }
  138. set { SetProperty(ref m_PickSoltItemsSource, value); }
  139. }
  140. public ObservableCollection<int> PlaceSoltItemsSource
  141. {
  142. get { return m_PlaceSoltItemsSource; }
  143. set { SetProperty(ref m_PlaceSoltItemsSource, value); }
  144. }
  145. public ObservableCollection<int> ExtendSoltItemsSource
  146. {
  147. get { return m_ExtendSoltItemsSource; }
  148. set { SetProperty(ref m_ExtendSoltItemsSource, value); }
  149. }
  150. public ObservableCollection<int> RetractSoltItemsSource
  151. {
  152. get { return m_RetractSoltItemsSource; }
  153. set { SetProperty(ref m_RetractSoltItemsSource, value); }
  154. }
  155. public int PickSoltSelectedIndex
  156. {
  157. get { return m_PickSoltSelectedIndex; }
  158. set { SetProperty(ref m_PickSoltSelectedIndex, value); }
  159. }
  160. public int PlaceSoltSelectedIndex
  161. {
  162. get { return m_PlaceSoltSelectedIndex; }
  163. set { SetProperty(ref m_PlaceSoltSelectedIndex, value); }
  164. }
  165. public int ExtendSoltSelectedIndex
  166. {
  167. get { return m_ExtendSoltSelectedIndex; }
  168. set { SetProperty(ref m_ExtendSoltSelectedIndex, value); }
  169. }
  170. public int RetractSoltSelectedIndex
  171. {
  172. get { return m_RetractSoltSelectedIndex; }
  173. set { SetProperty(ref m_RetractSoltSelectedIndex, value); }
  174. }
  175. public EFEMModule PickSelectedModule
  176. {
  177. get { return m_PickSelectedModule; }
  178. set { SetProperty(ref m_PickSelectedModule, value); }
  179. }
  180. public EFEMModule PlaceSelectedModule
  181. {
  182. get { return m_PlaceSelectedModule; }
  183. set { SetProperty(ref m_PlaceSelectedModule, value); }
  184. }
  185. public EFEMModule ExtendSelectedModule
  186. {
  187. get { return m_ExtendSelectedModule; }
  188. set { SetProperty(ref m_ExtendSelectedModule, value); }
  189. }
  190. public EFEMModule RetractSelectedModule
  191. {
  192. get { return m_RetractSelectedModule; }
  193. set { SetProperty(ref m_RetractSelectedModule, value); }
  194. }
  195. public WaferInfo BladeAWafer
  196. {
  197. get { return m_BladeAWafer; }
  198. set { SetProperty(ref m_BladeAWafer, value); }
  199. }
  200. public WaferInfo BladeBWafer
  201. {
  202. get { return m_BladeBWafer; }
  203. set { SetProperty(ref m_BladeBWafer, value); }
  204. }
  205. public WaferInfo Aligner1Wafer
  206. {
  207. get { return m_Aligner1Wafer; }
  208. set { SetProperty(ref m_Aligner1Wafer, value); }
  209. }
  210. public WaferInfo LLAWafer
  211. {
  212. get { return m_LLAWafer; }
  213. set { SetProperty(ref m_LLAWafer, value); }
  214. }
  215. public WaferInfo LLBWafer
  216. {
  217. get { return m_LLBWafer; }
  218. set { SetProperty(ref m_LLBWafer, value); }
  219. }
  220. public string LP1Status
  221. {
  222. get { return m_LP1Status; }
  223. set { SetProperty(ref m_LP1Status, value); }
  224. }
  225. public string LP2Status
  226. {
  227. get { return m_LP2Status; }
  228. set { SetProperty(ref m_LP2Status, value); }
  229. }
  230. public string LP3Status
  231. {
  232. get { return m_LP3Status; }
  233. set { SetProperty(ref m_LP3Status, value); }
  234. }
  235. public Dictionary<string, object> RtDataValues
  236. {
  237. get { return m_RtDataValues; }
  238. set { SetProperty(ref m_RtDataValues, value); }
  239. }
  240. public int AlignValue
  241. {
  242. get { return m_AlignValue; }
  243. set { SetProperty(ref m_AlignValue, value); }
  244. }
  245. #endregion
  246. #region 命令
  247. private DelegateCommand _ExtendCommand;
  248. public DelegateCommand ExtendCommand =>
  249. _ExtendCommand ?? (_ExtendCommand = new DelegateCommand(OnExtend));
  250. private DelegateCommand _RetractCommand;
  251. public DelegateCommand RetractCommand =>
  252. _RetractCommand ?? (_RetractCommand = new DelegateCommand(OnRetract));
  253. private DelegateCommand<object> _ModuleChangeCommand;
  254. public DelegateCommand<object> ModuleChangeCommand =>
  255. _ModuleChangeCommand ?? (_ModuleChangeCommand = new DelegateCommand<object>(OnModuleChange));
  256. private DelegateCommand _PickCommand;
  257. public DelegateCommand PickCommand =>
  258. _PickCommand ?? (_PickCommand = new DelegateCommand(OnPick));
  259. private DelegateCommand _PlaceCommand;
  260. public DelegateCommand PlaceCommand =>
  261. _PlaceCommand ?? (_PlaceCommand = new DelegateCommand(OnPlace));
  262. private DelegateCommand _HomeAllCommand;
  263. public DelegateCommand HomeAllCommand =>
  264. _HomeAllCommand ?? (_HomeAllCommand = new DelegateCommand(OnHomeAll));
  265. private DelegateCommand _ClearErrorCommand;
  266. public DelegateCommand ClearErrorCommand =>
  267. _ClearErrorCommand ?? (_ClearErrorCommand = new DelegateCommand(OnClearError));
  268. private DelegateCommand _AbortCommand;
  269. public DelegateCommand AbortCommand =>
  270. _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
  271. private DelegateCommand _Align1HomeCommand;
  272. public DelegateCommand Align1HomeCommand =>
  273. _Align1HomeCommand ?? (_Align1HomeCommand = new DelegateCommand(OnAlign1Home));
  274. private DelegateCommand _Align1UpCommand;
  275. public DelegateCommand Align1UpCommand =>
  276. _Align1UpCommand ?? (_Align1UpCommand = new DelegateCommand(OnAlign1Up));
  277. private DelegateCommand _Align1DownCommand;
  278. public DelegateCommand Align1DownCommand =>
  279. _Align1DownCommand ?? (_Align1DownCommand = new DelegateCommand(OnAlign1Down));
  280. private DelegateCommand _Align1AlignCommand;
  281. public DelegateCommand Align1AlignCommand =>
  282. _Align1AlignCommand ?? (_Align1AlignCommand = new DelegateCommand(OnAlign1Align));
  283. private DelegateCommand _RobotHomeCommand;
  284. public DelegateCommand RobotHomeCommand =>
  285. _RobotHomeCommand ?? (_RobotHomeCommand = new DelegateCommand(OnRobotHome));
  286. private DelegateCommand<object> _LPHomeCommand;
  287. public DelegateCommand<object> LPHomeCommand =>
  288. _LPHomeCommand ?? (_LPHomeCommand = new DelegateCommand<object>(OnLPHome));
  289. private DelegateCommand<object> _LPAbortCommand;
  290. public DelegateCommand<object> LPAbortCommand =>
  291. _LPAbortCommand ?? (_LPAbortCommand = new DelegateCommand<object>(OnLPAbort));
  292. private DelegateCommand<object> _LPResetCommand;
  293. public DelegateCommand<object> LPResetCommand =>
  294. _LPResetCommand ?? (_LPResetCommand = new DelegateCommand<object>(OnLPReset));
  295. private DelegateCommand<object> _LPLoadCommand;
  296. public DelegateCommand<object> LPLoadCommand =>
  297. _LPLoadCommand ?? (_LPLoadCommand = new DelegateCommand<object>(OnLPLoad));
  298. private DelegateCommand<object> _LPUnLoadCommand;
  299. public DelegateCommand<object> LPUnLoadCommand =>
  300. _LPUnLoadCommand ?? (_LPUnLoadCommand = new DelegateCommand<object>(OnLPUnLoad));
  301. private DelegateCommand<object> _LPReadIDCommand;
  302. public DelegateCommand<object> LPReadIDCommand =>
  303. _LPReadIDCommand ?? (_LPReadIDCommand = new DelegateCommand<object>(OnLPReadID));
  304. private DelegateCommand<object> _LPClampCommand;
  305. public DelegateCommand<object> LPClampCommand =>
  306. _LPClampCommand ?? (_LPClampCommand = new DelegateCommand<object>(OnLPClamp));
  307. private DelegateCommand<object> _LPUnClampCommand;
  308. public DelegateCommand<object> LPUnClampCommand =>
  309. _LPUnClampCommand ?? (_LPUnClampCommand = new DelegateCommand<object>(OnLPUnClamp));
  310. private DelegateCommand<object> _LPDockCommand;
  311. public DelegateCommand<object> LPDockCommand =>
  312. _LPDockCommand ?? (_LPDockCommand = new DelegateCommand<object>(OnLPDock));
  313. private DelegateCommand<object> _LPUnDockCommand;
  314. public DelegateCommand<object> LPUnDockCommand =>
  315. _LPUnDockCommand ?? (_LPUnDockCommand = new DelegateCommand<object>(OnLPUnDock));
  316. private DelegateCommand<object> _LPOpenDoorCommand;
  317. public DelegateCommand<object> LPOpenDoorCommand =>
  318. _LPOpenDoorCommand ?? (_LPOpenDoorCommand = new DelegateCommand<object>(OnLPOpenDoor));
  319. private DelegateCommand<object> _LPCloseDoorCommand;
  320. public DelegateCommand<object> LPCloseDoorCommand =>
  321. _LPCloseDoorCommand ?? (_LPCloseDoorCommand = new DelegateCommand<object>(OnLPCloseDoor));
  322. #endregion
  323. #region 构造函数
  324. public EfemViewModel()
  325. {
  326. string[] allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString().Split(',');
  327. LLAIsInstalled = allModules.Contains("LLA");
  328. LLBIsInstalled = allModules.Contains("LLB");
  329. DispatcherTimer timer = new DispatcherTimer();
  330. timer.Interval = TimeSpan.FromSeconds(0.1);
  331. timer.Tick += Timer_Tick;
  332. timer.Start();
  333. EFEMModules.Add(EFEMModule.LLA);
  334. EFEMModules.Add(EFEMModule.LLB);
  335. EFEMModules.Add(EFEMModule.LP1);
  336. EFEMModules.Add(EFEMModule.LP2);
  337. EFEMModules.Add(EFEMModule.Aligner1);
  338. OnModuleChange("Pick");
  339. OnModuleChange("Place");
  340. Init();
  341. //OnModuleChange("Extend");
  342. //OnModuleChange("Retract");
  343. UIEvents.PMDoorRaiseChangedEvent += UIEvents_PMDoorRaiseChangedEvent;
  344. UIEvents.LLTDoorRaiseChangedEvent += UIEvents_LLTDoorRaiseChangedEvent;
  345. UIEvents.LLEDoorRaiseChangedEvent += UIEvents_LLEDoorRaiseChangedEvent;
  346. }
  347. #endregion
  348. #region 命令方法
  349. private void OnModuleChange(object obj)
  350. {
  351. var value = obj.ToString();
  352. switch (value)
  353. {
  354. case "Pick":
  355. PickSoltItemsSource.Clear();
  356. switch (PickSelectedModule)
  357. {
  358. case EFEMModule.LLA:
  359. case EFEMModule.LLB:
  360. PickSoltItemsSource.Add(1);
  361. PickSoltItemsSource.Add(2);
  362. break;
  363. case EFEMModule.LP1:
  364. case EFEMModule.LP2:
  365. case EFEMModule.LP3:
  366. for (int i = 1; i < 26; i++)
  367. {
  368. PickSoltItemsSource.Add(i);
  369. }
  370. break;
  371. default:
  372. PickSoltItemsSource.Add(1);
  373. break;
  374. }
  375. PickSoltSelectedIndex = 0;
  376. break;
  377. case "Place":
  378. PlaceSoltItemsSource.Clear();
  379. switch (PlaceSelectedModule)
  380. {
  381. case EFEMModule.LLA:
  382. case EFEMModule.LLB:
  383. PlaceSoltItemsSource.Add(1);
  384. PlaceSoltItemsSource.Add(2);
  385. break;
  386. case EFEMModule.LP1:
  387. case EFEMModule.LP2:
  388. case EFEMModule.LP3:
  389. for (int i = 1; i < 26; i++)
  390. {
  391. PlaceSoltItemsSource.Add(i);
  392. }
  393. break;
  394. default:
  395. PlaceSoltItemsSource.Add(1);
  396. break;
  397. }
  398. PlaceSoltSelectedIndex = 0;
  399. break;
  400. //case "Extend":
  401. // ExtendSoltItemsSource.Clear();
  402. // switch (ExtendSelectedModule)
  403. // {
  404. // case EFEMModule.LLA:
  405. // case EFEMModule.LLB:
  406. // ExtendSoltItemsSource.Add(1);
  407. // ExtendSoltItemsSource.Add(2);
  408. // break;
  409. // case EFEMModule.LP1:
  410. // case EFEMModule.LP2:
  411. // case EFEMModule.LP3:
  412. // for (int i = 1; i < 26; i++)
  413. // {
  414. // ExtendSoltItemsSource.Add(i);
  415. // }
  416. // break;
  417. // default:
  418. // ExtendSoltItemsSource.Add(1);
  419. // break;
  420. // }
  421. // ExtendSoltSelectedIndex = 0;
  422. // break;
  423. //case "Retract":
  424. // RetractSoltItemsSource.Clear();
  425. // switch (RetractSelectedModule)
  426. // {
  427. // case EFEMModule.LLA:
  428. // case EFEMModule.LLB:
  429. // RetractSoltItemsSource.Add(1);
  430. // RetractSoltItemsSource.Add(2);
  431. // break;
  432. // case EFEMModule.LP1:
  433. // case EFEMModule.LP2:
  434. // case EFEMModule.LP3:
  435. // for (int i = 1; i < 26; i++)
  436. // {
  437. // RetractSoltItemsSource.Add(i);
  438. // }
  439. // break;
  440. // default:
  441. // RetractSoltItemsSource.Add(1);
  442. // break;
  443. // }
  444. // RetractSoltSelectedIndex = 0;
  445. // break;
  446. }
  447. }
  448. private void OnExtend()
  449. {
  450. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  451. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  452. InvokeClient.Instance.Service.DoOperation($"EFEM.{RtOperation.Extend}", moduleName, 0, selectedHand);
  453. }
  454. private void OnRetract()
  455. {
  456. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  457. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  458. InvokeClient.Instance.Service.DoOperation($"EFEM.{RtOperation.Retract}", moduleName, 0, selectedHand);
  459. }
  460. private void OnPick()
  461. {
  462. Queue<MoveItem> moveItems = new Queue<MoveItem>();
  463. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PickSelectedModule.ToString(), true);
  464. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PickSelectedBlade.ToString(), true);
  465. MoveItem moveItem = new MoveItem(moduleName, PickSoltItemsSource[PickSoltSelectedIndex]-1, ModuleName.EfemRobot, 0, selectedHand);
  466. moveItems.Enqueue(moveItem);
  467. if (PickSelectedModule == EFEMModule.LLA || PickSelectedModule == EFEMModule.LLB)
  468. {
  469. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Swap}", moveItems);
  470. }
  471. else
  472. {
  473. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Pick}", moveItems);
  474. }
  475. //if ((int)PickSelectedModule > 3)
  476. //{
  477. // InvokeClient.Instance.Service.DoOperation($"EFEM.{RtOperation.LLPick}", moveItems);
  478. //}
  479. //else
  480. //{
  481. // InvokeClient.Instance.Service.DoOperation($"EFEM.{RtOperation.PMPick}", moveItems);
  482. //}
  483. }
  484. private void OnPlace()
  485. {
  486. Queue<MoveItem> moveItems = new Queue<MoveItem>();
  487. var moduleName = (ModuleName)Enum.Parse(typeof(ModuleName), PlaceSelectedModule.ToString(), true);
  488. var selectedHand = (Hand)Enum.Parse(typeof(Hand), PlaceSelectedBlade.ToString(), true);
  489. MoveItem moveItem = new MoveItem(ModuleName.EfemRobot, 0, moduleName, PlaceSoltItemsSource[PlaceSoltSelectedIndex]-1, selectedHand);
  490. moveItems.Enqueue(moveItem);
  491. //if ((int)PlaceSelectedModule > 3)
  492. //{
  493. // InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.LLPlace}", moveItems);
  494. //}
  495. //else
  496. //{
  497. // InvokeClient.Instance.Service.DoOperation($"TM.{RtOperation.PMPlace}", moveItems);
  498. //}
  499. if (PlaceSelectedModule == EFEMModule.LLA || PlaceSelectedModule == EFEMModule.LLB)
  500. {
  501. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Swap}", moveItems);
  502. }
  503. else
  504. {
  505. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Place}", moveItems);
  506. }
  507. }
  508. private void OnHomeAll()
  509. {
  510. InvokeClient.Instance.Service.DoOperation($"EFEM.{EfemOperation.Home}");
  511. }
  512. private void OnClearError()
  513. {
  514. InvokeClient.Instance.Service.DoOperation($"EFEM.{EfemOperation.ClearError}");
  515. }
  516. private void OnAbort()
  517. {
  518. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Abort}");
  519. }
  520. private void OnAlign1Home()
  521. {
  522. InvokeClient.Instance.Service.DoOperation($"{ModuleName.Aligner1}.{EfemOperation.Home}");
  523. }
  524. private void OnAlign1Up()
  525. {
  526. InvokeClient.Instance.Service.DoOperation($"{ModuleName.Aligner1}.{EfemOperation.Lift}", true);
  527. }
  528. private void OnAlign1Down()
  529. {
  530. InvokeClient.Instance.Service.DoOperation($"{ModuleName.Aligner1}.{EfemOperation.Lift}", false);
  531. }
  532. private void OnAlign1Align()
  533. {
  534. InvokeClient.Instance.Service.DoOperation($"{ModuleName.Aligner1}.{EfemOperation.Align}",0, AlignValue);
  535. }
  536. private void OnRobotHome()
  537. {
  538. InvokeClient.Instance.Service.DoOperation($"{ModuleName.EfemRobot}.{EfemOperation.Home}");
  539. }
  540. private void OnLPHome(object obj)
  541. {
  542. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Home");
  543. }
  544. private void OnLPAbort(object obj)
  545. {
  546. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Abort");
  547. }
  548. private void OnLPReset(object obj)
  549. {
  550. //InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.ReSet");
  551. }
  552. private void OnLPLoad(object obj)
  553. {
  554. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Load");
  555. }
  556. private void OnLPUnLoad(object obj)
  557. {
  558. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Unload");
  559. }
  560. private void OnLPReadID(object obj)
  561. {
  562. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.ReadCarrierId");
  563. }
  564. private void OnLPClamp(object obj)
  565. {
  566. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Clamp");
  567. }
  568. private void OnLPUnClamp(object obj)
  569. {
  570. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Unclamp");
  571. }
  572. private void OnLPDock(object obj)
  573. {
  574. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Dock");
  575. }
  576. private void OnLPUnDock(object obj)
  577. {
  578. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.Undock");
  579. }
  580. private void OnLPOpenDoor(object obj)
  581. {
  582. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.OpenDoor");
  583. }
  584. private void OnLPCloseDoor(object obj)
  585. {
  586. InvokeClient.Instance.Service.DoOperation($"{obj.ToString()}.CloseDoor");
  587. }
  588. #endregion
  589. #region 私有方法
  590. private void Timer_Tick(object sender, EventArgs e)
  591. {
  592. if (LLAIsInstalled == true)
  593. {
  594. LLAWafer = ModuleManager.ModuleInfos["LLA"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
  595. LLAModuleInfo = ModuleManager.ModuleInfos["LLA"];
  596. }
  597. if (LLBIsInstalled == true)
  598. {
  599. LLBWafer = ModuleManager.ModuleInfos["LLB"].WaferManager.Wafers.FirstOrDefault(x => x.WaferStatus != 0);
  600. LLBModuleInfo = ModuleManager.ModuleInfos["LLB"];
  601. }
  602. LP1ModuleInfo = ModuleManager.ModuleInfos["LP1"];
  603. LP2ModuleInfo = ModuleManager.ModuleInfos["LP2"];
  604. LP3ModuleInfo = ModuleManager.ModuleInfos["LP3"];
  605. EFEMModuleInfo = ModuleManager.ModuleInfos["EfemRobot"];
  606. BladeAWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[0];
  607. BladeBWafer = ModuleManager.ModuleInfos["EfemRobot"].WaferManager.Wafers[1];
  608. Aligner1Wafer= ModuleManager.ModuleInfos["Aligner1"].WaferManager.Wafers[0];
  609. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  610. }
  611. private void Init()
  612. {
  613. m_RtDataKeys.Add("LP1.Status");
  614. m_RtDataKeys.Add("LP2.Status");
  615. m_RtDataKeys.Add("LP3.Status");
  616. m_RtDataKeys.Add("LP1.IsLoaded");
  617. m_RtDataKeys.Add("LP2.IsLoaded");
  618. m_RtDataKeys.Add("LP3.IsLoaded");
  619. m_RtDataKeys.Add("LP1.CarrierId");
  620. m_RtDataKeys.Add("LP2.CarrierId");
  621. m_RtDataKeys.Add("LP3.CarrierId");
  622. m_RtDataKeys.Add("LP1.IsClamped");
  623. m_RtDataKeys.Add("LP2.IsClamped");
  624. m_RtDataKeys.Add("LP3.IsClamped");
  625. m_RtDataKeys.Add("LP1.IsDocked");
  626. m_RtDataKeys.Add("LP2.IsDocked");
  627. m_RtDataKeys.Add("LP3.IsDocked");
  628. m_RtDataKeys.Add("TM.LLATSlitDoor.IsClosed");
  629. m_RtDataKeys.Add("TM.LLBTSlitDoor.IsClosed");
  630. m_RtDataKeys.Add("TM.LLAESlitDoor.IsClosed");
  631. m_RtDataKeys.Add("TM.LLBESlitDoor.IsClosed");
  632. }
  633. private void UIEvents_PMDoorRaiseChangedEvent(DoorPara obj)
  634. {
  635. InvokeClient.Instance.Service.DoOperation($"{obj?.ModuleName}.SlitDoor.{obj?.IsOpen}");
  636. }
  637. private void UIEvents_LLTDoorRaiseChangedEvent(DoorPara obj)
  638. {
  639. InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}TSlitDoor.{obj?.IsOpen}");
  640. }
  641. private void UIEvents_LLEDoorRaiseChangedEvent(DoorPara obj)
  642. {
  643. InvokeClient.Instance.Service.DoOperation($"TM.{obj.ModuleName}ESlitDoor.{obj?.IsOpen}");
  644. }
  645. #endregion
  646. }
  647. }