OperationViewModel2LP.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. using System.Collections.Generic;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using Aitex.Core.Common;
  5. using Aitex.Core.UI.MVVM;
  6. using Aitex.Sorter.UI.Controls;
  7. using System.Windows.Input;
  8. using Aitex.Core.Util;
  9. using Aitex.Core.Utilities;
  10. using Aitex.Sorter.Common;
  11. using MECF.Framework.Common.OperationCenter;
  12. using MECF.Framework.Common.CommonData;
  13. using System;
  14. using EfemUI.Views.CarrierList;
  15. using MECF.Framework.Common.Equipment;
  16. using System.Collections.ObjectModel;
  17. using System.Linq;
  18. using Aitex.Sorter.UI.Controls.Common;
  19. namespace Aitex.Sorter.UI.ViewModel
  20. {
  21. class OperationViewModel2LP : OperationMultiLPViewModel
  22. {
  23. public ICommand StartCycleCommand { get; set; }
  24. public ICommand SetWaferSize3 { get; set; }
  25. public ICommand SetWaferSize4 { get; set; }
  26. public ICommand SetWaferSize6 { get; set; }
  27. public ICommand SetWaferSize8 { get; set; }
  28. public ICommand SetWaferThick { get; set; }
  29. public ICommand SetWaferThin { get; set; }
  30. public ICommand SetLPSlot13 { get; set; }
  31. public ICommand SetLPSlot25 { get; set; }
  32. public ICommand SetFFUCommand { get; set; }
  33. public ICommand SetTransCarrierTypeCommand { get; set; }
  34. public ICommand MapCommand { get; set; }
  35. public ObservableCollection<FoupListItem> BufferList { get; set; }
  36. public bool EnablePageControl
  37. {
  38. get { return !IsOnlineMode; }
  39. }
  40. [Subscription("System.Robot.CurrentReadSpeedData")]
  41. public int CurrentReadSpeedData { get; set; }
  42. [Subscription("FFU.FFU1Speed")]
  43. public int FFU1Speed { get; set; }
  44. [Subscription("System.IsOnlineMode")]
  45. public bool IsOnlineMode
  46. {
  47. get;
  48. set;
  49. }
  50. [Subscription("LP1.WaferSizeInfo")]
  51. public string WaferSize1 { get; set; }
  52. [Subscription("LP2.WaferSizeInfo")]
  53. public string WaferSize2 { get; set; }
  54. [Subscription("Aligner1.Aligner1.WaferSizeByWafer")]
  55. public string WaferSizeAligner1 { get; set; }
  56. [Subscription("Aligner2.Aligner2.WaferSizeByWafer")]
  57. public string WaferSizeAligner2 { get; set; }
  58. [Subscription("CoolingBuffer1.CoolingBuffer1.WaferSizeByWafer")]
  59. public string WaferSizeCoolingBuffer1 { get; set; }
  60. [Subscription("CoolingBuffer2.CoolingBuffer2.WaferSizeByWafer")]
  61. public string WaferSizeCoolingBuffer2 { get; set; }
  62. [Subscription("Buffer1.WaferSizeByWafer")]
  63. public string WaferSizeBuffer1 { get; set; }
  64. [Subscription("Buffer2.WaferSizeByWafer")]
  65. public string WaferSizeBuffer2 { get; set; }
  66. [Subscription("LL1.WaferSize")]
  67. public string WaferSizeLL1 { get; set; }
  68. [Subscription("LL2.WaferSize")]
  69. public string WaferSizeLL2 { get; set; }
  70. //[Subscription("Buffer1.WaferSize")]
  71. //public string WaferSizeBuffer1 { get; set; }
  72. //[Subscription("Buffer2.WaferSize")]
  73. //public string WaferSizeBuffer2 { get; set; }
  74. [Subscription("Robot.Blade1WaferSize")]
  75. public string WaferSizeRobot1 { get; set; }
  76. [Subscription("Robot.Blade2WaferSize")]
  77. public string WaferSizeRobot2 { get; set; }
  78. [Subscription("Robot.WaferSize")]
  79. public string WaferSizeRobot { get; set; }
  80. [Subscription("LP1.WaferThickness")]
  81. public string LP1WaferThickness { get; set; }
  82. [Subscription("LP2.WaferThickness")]
  83. public string LP2WaferThickness { get; set; }
  84. [Subscription("Cooling1.WaferThickness")]
  85. public string Cooling1WaferThickness { get; set; }
  86. [Subscription("Cooling2.WaferThickness")]
  87. public string Cooling2WaferThickness { get; set; }
  88. [Subscription("LL1.WaferThickness")]
  89. public string PMAWaferThickness { get; set; }
  90. [Subscription("LL2.WaferThickness")]
  91. public string PMBWaferThickness { get; set; }
  92. [Subscription("Buffer1.WaferThickness")]
  93. public string Buffer1WaferThickness { get; set; }
  94. [Subscription("Buffer2.WaferThickness")]
  95. public string Buffer2WaferThickness { get; set; }
  96. [Subscription("Aligner1.WaferThickness")]
  97. public string Aligner1WaferThickness { get; set; }
  98. [Subscription("Aligner2.WaferThickness")]
  99. public string Aligner2WaferThickness { get; set; }
  100. [Subscription("Upper.WaferThickness")]
  101. public string UpperWaferThickness { get; set; }
  102. [Subscription("Lower.WaferThickness")]
  103. public string LowerWaferThickness { get; set; }
  104. [Subscription("LP1.ValidSlotsNumber")]
  105. public int LP1ValidSlotsNumber { get; set; }
  106. [Subscription("LP2.ValidSlotsNumber")]
  107. public int LP2ValidSlotsNumber { get; set; }
  108. [Subscription("CoolingBuffer1Disable", "System")]
  109. public bool CoolingBuffer1Disable
  110. {
  111. get;
  112. set;
  113. }
  114. public bool CoolingBuffer1Enable => !CoolingBuffer1Disable;
  115. [Subscription("CoolingBuffer2Disable", "System")]
  116. public bool CoolingBuffer2Disable
  117. {
  118. get;
  119. set;
  120. }
  121. public bool CoolingBuffer2Enable => !CoolingBuffer2Disable;
  122. [Subscription("Aligner1Disable", "System")]
  123. public bool Aligner1Disable
  124. {
  125. get;
  126. set;
  127. }
  128. public bool Aligner1Enable => !Aligner1Disable;
  129. [Subscription("Aligner2Disable", "System")]
  130. public bool Aligner2Disable
  131. {
  132. get;
  133. set;
  134. }
  135. public bool Aligner2Enable => !Aligner2Disable;
  136. [Subscription("System.IsEnableBufferMap")]
  137. public bool IsBufferMapEnable { get; set; }
  138. [Subscription("System.IsEnableIdentifyThickness")]
  139. public bool IsEnableIdentifyThickness { get; set; }
  140. [Subscription("System.IsEnableMultiWaferSize")]
  141. public bool IsEnableMultiWaferSize { get; set; }
  142. [Subscription("System.IsEnableMultiWaferSizeShow")]
  143. public bool IsEnableMultiWaferSizeShow { get; set; }
  144. [Subscription("System.IsSlotShowOpposite")]
  145. public bool IsSlotShowOpposite { get; set; }
  146. public Visibility SlotShow2 => IsSlotShowOpposite ? Visibility.Hidden : Visibility.Visible;
  147. public Visibility SlotShow1 => !IsSlotShowOpposite ? Visibility.Hidden : Visibility.Visible;
  148. public ObservableCollection<FoupListItem> _foupLists;
  149. public Visibility EnableIdentifyThickness
  150. {
  151. get
  152. {
  153. if (IsEnableIdentifyThickness)
  154. return Visibility.Visible;
  155. return Visibility.Hidden;
  156. }
  157. }
  158. public Visibility EnableMultiWaferSize
  159. {
  160. get
  161. {
  162. if (IsEnableMultiWaferSize && IsEnableMultiWaferSizeShow)
  163. return Visibility.Visible;
  164. return Visibility.Hidden;
  165. }
  166. }
  167. [Subscription(ParamName.ModuleWaferList, DeviceName.CoolingBuffer1)]
  168. public WaferInfo[] CoolingBuffer1Wafers
  169. {
  170. get;
  171. set;
  172. }
  173. public WaferInfo CoolingBuffer1Wafer
  174. {
  175. get => CoolingBuffer1Wafers != null ? CoolingBuffer1Wafers[0] : null;
  176. }
  177. [Subscription(ParamName.ModuleWaferList, DeviceName.CoolingBuffer2)]
  178. public WaferInfo[] CoolingBuffer2Wafers
  179. {
  180. get;
  181. set;
  182. }
  183. public WaferInfo CoolingBuffer2Wafer
  184. {
  185. get => CoolingBuffer2Wafers != null ? CoolingBuffer2Wafers[0] : null;
  186. }
  187. [Subscription(ParamName.ModuleWaferList, DeviceName.Aligner1)]
  188. public WaferInfo[] Aligner1Wafers
  189. {
  190. get;
  191. set;
  192. }
  193. public WaferInfo Aligner1Wafer
  194. {
  195. get => Aligner1Wafers != null ? Aligner1Wafers[0] : null;
  196. }
  197. [Subscription(ParamName.ModuleWaferList, DeviceName.Aligner2)]
  198. public WaferInfo[] Aligner2Wafers
  199. {
  200. get;
  201. set;
  202. }
  203. public WaferInfo Aligner2Wafer
  204. {
  205. get => Aligner2Wafers != null ? Aligner2Wafers[0] : null;
  206. }
  207. [Subscription(ParamName.ModuleWaferList, DeviceName.Buffer1)]
  208. public WaferInfo[] LlbWaferInfo
  209. {
  210. get
  211. {
  212. return BufferList[0].WaferInfos;
  213. }
  214. set => UpdateBufferWafers(value, 0);
  215. }
  216. [Subscription(ParamName.ModuleWaferList, DeviceName.Buffer2)]
  217. public WaferInfo[] LlbWaferInfo2
  218. {
  219. get
  220. {
  221. return BufferList[1].WaferInfos;
  222. }
  223. set => UpdateBufferWafers(value, 1);
  224. }
  225. [Subscription("ValidSlotsNumber", DeviceName.Buffer1)]
  226. public int ValidSlotsNum1
  227. {
  228. get => BufferList[0].SlotCount;
  229. set => BufferList[0].SlotCount = value;
  230. }
  231. [Subscription("ValidSlotsNumber", DeviceName.Buffer2)]
  232. public int ValidSlotsNum2
  233. {
  234. get => BufferList[1].SlotCount;
  235. set => BufferList[1].SlotCount = value;
  236. }
  237. private void UpdateBufferWafers(WaferInfo[] sourceWaferInfos, int index)
  238. {
  239. var wafers = UpdateWaferInfo(sourceWaferInfos.Reverse().ToArray());
  240. if (BufferList[index].WaferInfos == null)
  241. {
  242. BufferList[index].WaferInfos = wafers;
  243. }
  244. else
  245. {
  246. for (int i = 0; i < BufferList[index].WaferInfos.Length; i++)
  247. {
  248. BufferList[index].WaferInfos[i].Update(wafers[i]);
  249. }
  250. }
  251. }
  252. [IgnorePropertyChange]
  253. public ComboBoxItem CycleFrom { get; set; }
  254. [IgnorePropertyChange]
  255. public ComboBoxItem CycleTo { get; set; }
  256. [IgnorePropertyChange]
  257. public bool Ll1IsChecked { get; set; }
  258. [IgnorePropertyChange]
  259. public bool Ll2IsChecked { get; set; }
  260. [IgnorePropertyChange]
  261. public bool Ll3IsChecked { get; set; }
  262. [IgnorePropertyChange]
  263. public bool Ll4IsChecked { get; set; }
  264. [IgnorePropertyChange]
  265. public bool Ll5IsChecked { get; set; }
  266. [IgnorePropertyChange]
  267. public bool Ll6IsChecked { get; set; }
  268. [IgnorePropertyChange]
  269. public bool Ll7IsChecked { get; set; }
  270. [IgnorePropertyChange]
  271. public bool Ll8IsChecked { get; set; }
  272. [IgnorePropertyChange]
  273. public bool CoolingBuffer1IsChecked { get; set; }
  274. [IgnorePropertyChange]
  275. public bool CoolingBuffer2IsChecked { get; set; }
  276. [IgnorePropertyChange]
  277. public bool Aligner1IsChecked { get; set; }
  278. [IgnorePropertyChange]
  279. public bool Aligner2IsChecked { get; set; }
  280. [IgnorePropertyChange]
  281. public bool Buffer1IsChecked { get; set; }
  282. [IgnorePropertyChange]
  283. public bool Buffer2IsChecked { get; set; }
  284. public Visibility ServerVisibility { get; set; }
  285. [Subscription("System.Robot.IsLeftArmPressureSensorON")]
  286. public bool IsLeftArmPressureSensorON
  287. {
  288. get; set;
  289. }
  290. [Subscription("System.Robot.IsRightArmPressureSensorON")]
  291. public bool IsRightArmPressureSensorON
  292. {
  293. get; set;
  294. }
  295. [Subscription("LP1.InfoPadCarrierTypeInformation")]
  296. public string LP1CarrierType
  297. {
  298. get => _lp1CarrierType;
  299. set => _lp1CarrierType = value;
  300. }
  301. private string _lp1CarrierType;
  302. [Subscription("LP2.InfoPadCarrierTypeInformation")]
  303. public string LP2CarrierType
  304. {
  305. get => _lp2CarrierType;
  306. set => _lp2CarrierType = value;
  307. }
  308. private string _lp2CarrierType;
  309. [Subscription("LP3.InfoPadCarrierTypeInformation")]
  310. public string LP3CarrierType
  311. {
  312. get => _lp3CarrierType;
  313. set => _lp3CarrierType = value;
  314. }
  315. private string _lp3CarrierType;
  316. [Subscription("LP1.IsAutoDetectCarrierType")]
  317. public bool LP1IsAutoDetectCarrierType { get; set; }
  318. [Subscription("LP2.IsAutoDetectCarrierType")]
  319. public bool LP2IsAutoDetectCarrierType { get; set; }
  320. [Subscription("LP3.IsAutoDetectCarrierType")]
  321. public bool LP3IsAutoDetectCarrierType { get; set; }
  322. [Subscription("LP1.ValidCarrierTypeList")]
  323. public Tuple<int, string>[] LP1ValidCarrierTypeList { get; set; }
  324. [Subscription("LP2.ValidCarrierTypeList")]
  325. public Tuple<int, string>[] LP2ValidCarrierTypeList { get; set; }
  326. [Subscription("LP3.ValidCarrierTypeList")]
  327. public Tuple<int, string>[] LP3ValidCarrierTypeList { get; set; }
  328. public bool IsShowLP1CarrierType
  329. {
  330. get
  331. { return !LP1IsAutoDetectCarrierType; }
  332. }
  333. public bool IsShowLP2CarrierType
  334. {
  335. get
  336. { return !LP2IsAutoDetectCarrierType; }
  337. }
  338. public bool IsShowLP3CarrierType
  339. {
  340. get
  341. { return !LP3IsAutoDetectCarrierType; }
  342. }
  343. public Thickness _PMThickness = new Thickness(0, 0, 0, 0);
  344. public Thickness PMThickness
  345. {
  346. get
  347. {
  348. if (!IsEnableIdentifyThickness && !IsEnableMultiWaferSize)
  349. {
  350. _PMThickness.Left = 0;
  351. _PMThickness.Top = -100;
  352. _PMThickness.Right = 0;
  353. _PMThickness.Bottom = 0;
  354. }
  355. else if (!IsEnableIdentifyThickness&&IsEnableMultiWaferSize && !IsEnableMultiWaferSizeShow)
  356. {
  357. _PMThickness.Left = 0;
  358. _PMThickness.Top = -100;
  359. _PMThickness.Right = 0;
  360. _PMThickness.Bottom = 0;
  361. }
  362. else
  363. {
  364. _PMThickness.Left = 680;
  365. _PMThickness.Top = 645;
  366. _PMThickness.Right = 0;
  367. _PMThickness.Bottom = 50;
  368. }
  369. return _PMThickness;
  370. }
  371. }
  372. public Thickness _RobotThickness = new Thickness(0, 0, 0, 0);
  373. public Thickness RobotThickness
  374. {
  375. get
  376. {
  377. if (!IsEnableIdentifyThickness && !IsEnableMultiWaferSize)
  378. {
  379. _RobotThickness.Left = 0;
  380. _RobotThickness.Top = 300;
  381. _RobotThickness.Right = 0;
  382. _RobotThickness.Bottom = 0;
  383. }
  384. else if (!IsEnableIdentifyThickness && IsEnableMultiWaferSize && !IsEnableMultiWaferSizeShow)
  385. {
  386. _RobotThickness.Left = 0;
  387. _RobotThickness.Top = 300;
  388. _RobotThickness.Right = 0;
  389. _RobotThickness.Bottom = 0;
  390. }
  391. else
  392. {
  393. _RobotThickness.Left = 10;
  394. _RobotThickness.Top = 633;
  395. _RobotThickness.Right = 0;
  396. _RobotThickness.Bottom = 10;
  397. }
  398. return _RobotThickness;
  399. }
  400. }
  401. public override void UpdateWafers(WaferInfo[] sourceWaferInfos, int index)
  402. {
  403. if (IsSlotShowOpposite)
  404. {
  405. var wafers = UpdateWaferInfo(sourceWaferInfos);
  406. if (FoupList[index].WaferInfos == null)
  407. {
  408. FoupList[index].WaferInfos = wafers;
  409. }
  410. else
  411. {
  412. for (int i = 0; i < FoupList[index].WaferInfos.Length; i++)
  413. {
  414. FoupList[index].WaferInfos[i].Update(wafers[i]);
  415. }
  416. }
  417. }
  418. else
  419. {
  420. var wafers = UpdateWaferInfo(sourceWaferInfos.Reverse().ToArray());
  421. if (FoupList[index].WaferInfos == null)
  422. {
  423. FoupList[index].WaferInfos = wafers;
  424. }
  425. else
  426. {
  427. for (int i = 0; i < FoupList[index].WaferInfos.Length; i++)
  428. {
  429. FoupList[index].WaferInfos[i].Update(wafers[i]);
  430. }
  431. }
  432. }
  433. }
  434. public OperationViewModel2LP() : base(2)
  435. {
  436. WaferTransferOptionCommand = new DelegateCommand<WaferTransferOption>(BeforeTransfer);
  437. SetWaferSize3 = new DelegateCommand<string>(PerformSetWaferSize3);
  438. SetWaferSize4 = new DelegateCommand<string>(PerformSetWaferSize4);
  439. SetWaferSize6 = new DelegateCommand<string>(PerformSetWaferSize6);
  440. SetWaferSize8 = new DelegateCommand<string>(PerformSetWaferSize8);
  441. SetWaferThick =new DelegateCommand<string> (PerformSetWaferThick);
  442. SetWaferThin = new DelegateCommand<string>(PerformSetWaferThin);
  443. SetLPSlot13 = new DelegateCommand<string>(PerformSetSlot13);
  444. SetLPSlot25 = new DelegateCommand<string>(PerformSetSlot25);
  445. StartCycleCommand = new DelegateCommand<object>(StartCycle);
  446. SetFFUCommand = new DelegateCommand<string>(SetFFUSpeed);
  447. MapCommand = new DelegateCommand<DependencyObject>(DoMap);
  448. SetTransCarrierTypeCommand = new DelegateCommand<string>(SetTransCarrierType);
  449. _foupLists = new ObservableCollection<FoupListItem>();
  450. }
  451. protected void DoMap(DependencyObject sender)
  452. {
  453. var command = CommandHelper.GetCommandItem(sender);
  454. InvokeClient.Instance.Service.DoOperation(command.CommandName, command.Target);
  455. }
  456. private void SetTransCarrierType(string obj)
  457. {
  458. var LPName = obj;
  459. Tuple<int, string>[] input = null;
  460. switch (LPName)
  461. {
  462. case "LP1":
  463. input = LP1ValidCarrierTypeList;
  464. break;
  465. case "LP2":
  466. input = LP2ValidCarrierTypeList;
  467. break;
  468. case "LP3":
  469. input = LP3ValidCarrierTypeList;
  470. break;
  471. default:
  472. break;
  473. }
  474. // Tuple<int, string>[] tempTuple = new Tuple<int, string>[] { Tuple.Create(0, "CarrierType0"), Tuple.Create(1, "CarrierType1") };
  475. if (input == null)
  476. {
  477. MessageBox.Show($"{LPName}ValidCarrierTypeList is null", "Value Null");
  478. }
  479. else
  480. {
  481. var SelectCarrierTypeDialog = new SelectCarrierTypeDialog(input);
  482. if ((bool)SelectCarrierTypeDialog.ShowDialog())
  483. {
  484. InvokeClient.Instance.Service.DoOperation($"{LPName}.SetInfoPadIndex", SelectCarrierTypeDialog.SelectIndex);
  485. }
  486. }
  487. }
  488. private void SetFFUSpeed(string obj)
  489. {
  490. InvokeClient.Instance.Service.DoOperation($"FFU.SetSpeed", new object[] { obj });
  491. }
  492. private void PerformSetSlot13(string obj)
  493. {
  494. InvokeClient.Instance.Service.DoOperation("System.SetSlot13", obj);
  495. }
  496. private void PerformSetSlot25(string obj)
  497. {
  498. InvokeClient.Instance.Service.DoOperation("System.SetSlot25", obj);
  499. }
  500. private void PerformSetWaferSize8(string obj)
  501. {
  502. InvokeClient.Instance.Service.DoOperation("System.SetWaferSize8", obj);
  503. }
  504. private void PerformSetWaferSize6(string obj)
  505. {
  506. InvokeClient.Instance.Service.DoOperation("System.SetWaferSize6", obj);
  507. }
  508. private void PerformSetWaferSize4(string obj)
  509. {
  510. InvokeClient.Instance.Service.DoOperation("System.SetWaferSize4", obj);
  511. }
  512. private void PerformSetWaferSize3(string obj)
  513. {
  514. InvokeClient.Instance.Service.DoOperation("System.SetWaferSize3", obj);
  515. }
  516. private void PerformSetWaferThick(string obj)
  517. {
  518. InvokeClient.Instance.Service.DoOperation("System.SetWaferThick", obj);
  519. }
  520. private void PerformSetWaferThin(string obj)
  521. {
  522. InvokeClient.Instance.Service.DoOperation("System.SetWaferThin", obj);
  523. }
  524. private void StartCycle(object obj)
  525. {
  526. if (CycleFrom == null || CycleTo == null)
  527. return;
  528. List<string> _lstPassThrough = new List<string>() {
  529. };
  530. if (Aligner1IsChecked)
  531. _lstPassThrough.Add("Aligner1");
  532. if (Aligner2IsChecked)
  533. _lstPassThrough.Add("Aligner2");
  534. if (Ll1IsChecked)
  535. _lstPassThrough.Add("LL1");
  536. if (Ll2IsChecked)
  537. _lstPassThrough.Add("LL2");
  538. if (Buffer1IsChecked)
  539. _lstPassThrough.Add("Buffer1");
  540. if (Buffer2IsChecked)
  541. _lstPassThrough.Add("Buffer2");
  542. if (CoolingBuffer1IsChecked)
  543. _lstPassThrough.Add("CoolingBuffer1");
  544. if (CoolingBuffer2IsChecked)
  545. _lstPassThrough.Add("CoolingBuffer2");
  546. if (obj.ToString() == "Cycle")
  547. {
  548. InvokeClient.Instance.Service.DoOperation("System.StartCycle", new object[] {(string)CycleFrom.Content,
  549. (string)CycleTo.Content, _lstPassThrough.ToArray()
  550. }) ;
  551. }
  552. //else if (obj.ToString() == "Benchmark")
  553. //{
  554. // InvokeClient.Instance.Service.DoOperation("Benchmark", paramsArgs);
  555. //}
  556. }
  557. public ICommand WaferTransferOptionCommand
  558. {
  559. get; set;
  560. }
  561. protected virtual void BeforeTransfer(WaferTransferOption option)
  562. {
  563. option.Setting.ShowAlign = false;
  564. option.Setting.ShowLaserMarker = false;
  565. option.Setting.ShowT7Code = false;
  566. //option.Setting.ShowBlade = false;
  567. }
  568. protected override void InitFoupList()
  569. {
  570. base.InitFoupList();
  571. //FoupList[0].FoupType = Controls.FoupType.OpenCassetteOnlyMap;
  572. //FoupList[1].FoupType = Controls.FoupType.OpenCassetteOnlyMap;
  573. FoupList[0].FoupType = Controls.FoupType.Loadport;
  574. FoupList[1].FoupType = Controls.FoupType.Loadport;
  575. InitBufferList(2);
  576. BufferList[0].FoupType = Controls.FoupType.Mapbuffer;
  577. BufferList[1].FoupType = Controls.FoupType.Mapbuffer;
  578. }
  579. protected readonly ModuleName[] bufferSet = new ModuleName[]
  580. {
  581. ModuleName.Buffer1,
  582. ModuleName.Buffer2,
  583. };
  584. public void InitBufferList(int loadLockCount)
  585. {
  586. BufferList = new ObservableCollection<FoupListItem>();
  587. for (var i = 0; i < loadLockCount; i++)
  588. {
  589. var foupListItem = new FoupListItem
  590. {
  591. DeviceName = bufferSet[i].ToString(),
  592. CarrierName = bufferSet[i].ToString(),
  593. CarrierMode = LoadPortCarrierMode.Loader,
  594. Station = bufferSet[i]
  595. };
  596. BufferList.Add(foupListItem);
  597. }
  598. }
  599. protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
  600. {
  601. //ServerVisibility = ((bool)QueryDataClient.Instance.Service.GetConfig("System.EfemServerEnable")) ? Visibility.Visible : Visibility.Hidden;
  602. //data[UIKey(UnitName.LoadportA.ToString(), ParamName.FoupDoorState)] = FoupDoorState.Close;
  603. base.InvokeBeforeUpdateProperty(data);
  604. }
  605. }
  606. }