NewE84Info.xaml.cs 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Text.RegularExpressions;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Input;
  8. using Aitex.Core.UI.MVVM;
  9. using Aitex.Core.Util;
  10. using Aitex.Core.Utilities;
  11. using Aitex.Sorter.Common;
  12. using Aitex.Sorter.UI.ViewModel;
  13. using MECF.Framework.Common.DataCenter;
  14. using MECF.Framework.Common.OperationCenter;
  15. using MECF.Framework.UI.Core.View.Common;
  16. namespace EfemUI.Controls
  17. {
  18. public partial class NewE84Info : UserControl
  19. {
  20. public static readonly DependencyProperty LoadPortNameProperty = DependencyProperty.Register(
  21. "LoadPortName", typeof(string), typeof(NewE84Info), new
  22. PropertyMetadata(""));
  23. public static readonly DependencyProperty E84DataProperty = DependencyProperty.Register(
  24. "E84Data", typeof(NewE84InfoData), typeof(NewE84Info), new PropertyMetadata(null));
  25. private readonly NewE84InfoViewModel _e84InfoViewModel;
  26. public NewE84Info()
  27. {
  28. InitializeComponent();
  29. root.DataContext = this;
  30. _e84InfoViewModel = new NewE84InfoViewModel();
  31. ConfigBorder.DataContext = _e84InfoViewModel;
  32. ConfigBorder1.DataContext = _e84InfoViewModel;
  33. Inputs.DataContext = this;
  34. Outputs.DataContext = this;
  35. //BindingErrorTraceListener.SetTrace();
  36. E84Command = new DelegateCommand<string>(DoLoadPortCmd);
  37. FALoadPortCommand = new DelegateCommand<string>(DoFALoadPortCommand);
  38. DeviceOperationCommand = new DelegateCommand<string>(DoLoadPortOperationCmd);
  39. DeviceExecuteMoveCommand = new DelegateCommand<string>(DoDeviceExecuteMoveCmd);
  40. DeviceExecuteSetCommand = new DelegateCommand<string>(DoDeviceExecuteSetCmd);
  41. DeviceExecuteGetCommand = new DelegateCommand<string>(DoDeviceExecuteGetCmd);
  42. IsVisibleChanged += E84Info_IsVisibleChanged;
  43. LPCommandList = new List<string>()
  44. {
  45. "Lock(Clamp)",
  46. "Unlock(Unclamp)",
  47. "Clamp close(PODCL)",
  48. "Dock(YDOOR)",
  49. "Vacuum ON(VACON)",
  50. "Door clamp Open(DOROP)",
  51. "Door open(DORBK)",
  52. "Move to mapping start position(ZMPST)",
  53. "Move to mapping measurement position(MAPOP)",
  54. "Move to mapping end position(ZDRMP)",
  55. "Move to mapping wait position(MAPCL)",
  56. "Move to loading position(ZDRDW)",
  57. "Move to door openn/close position(ZDRUP)",
  58. "Door close(DORFW)",
  59. "Door clamp close(DORCL)",
  60. "Vacuum OFF(VACOF)",
  61. "Undock operation(YWAIT)",
  62. "Clamp open(PODOP)",
  63. "Load without map(CLOAD)",
  64. "Load with map(CLDMP)",
  65. "Load with door close(CLDDK)",
  66. "Door open and move to load(CLDOP)",
  67. "Door open and map(CLMPO)",
  68. "Clamp and dock(CLDYD)",
  69. "Unload without map(CULOD)",
  70. "Unload with map(CUDMP)",
  71. "Door up and close(CULDK)",
  72. "Map and door up and close(CUMDK)",
  73. "Door clamp close,Vac off undock and unclamp(CUDNC)",
  74. "Door clamp close,Vac off and undock(CUDCL)",
  75. "Door up,clost,clamp close,vac off and undock(CULFC)",
  76. "Mapping and unload with clamped(CUMFC)",
  77. "Door up,clost,clamp close,vac off(CULYD)",
  78. "Mapping(MAPDO)",
  79. "Re-Mapping(REMAP)"
  80. };
  81. }
  82. public ICommand E84Command { get; set; }
  83. public ICommand FALoadPortCommand { get; set; }
  84. public ICommand DeviceOperationCommand { get; set; }
  85. public ICommand DeviceExecuteMoveCommand { get; set; }
  86. public ICommand DeviceExecuteSetCommand { get; set; }
  87. public ICommand DeviceExecuteGetCommand { get; set; }
  88. public string LoadPortName
  89. {
  90. get => (string)GetValue(LoadPortNameProperty);
  91. set => SetValue(LoadPortNameProperty, value);
  92. }
  93. public NewE84InfoData E84Data
  94. {
  95. get => (NewE84InfoData)GetValue(E84DataProperty);
  96. set => SetValue(E84DataProperty, value);
  97. }
  98. public List<string> LPCommandList { get; set; }
  99. private void DoLoadPortCmd(string cmd)
  100. {
  101. var deviceName = LoadPortName;
  102. var param = new object[] { deviceName };
  103. InvokeClient.Instance.Service.DoOperation($"{param[0]}.{cmd}");
  104. }
  105. private void DoFALoadPortCommand(string cmd)
  106. {
  107. var deviceName = LoadPortName;
  108. var param = new object[] { cmd, deviceName };
  109. InvokeClient.Instance.Service.DoOperation($"FALoadPortCommand", param);
  110. }
  111. private void DoLoadPortOperationCmd(string cmd)
  112. {
  113. var deviceName = LoadPortName;
  114. object[] param = new object[] { deviceName, cmd };
  115. if (cmd == "ReadCarrierIDByIndex" || cmd == "WriteCarrierIDByIndex")
  116. {
  117. if (cmd == "ReadCarrierIDByIndex")
  118. { param = new object[] { cboCarrierIDOption.Text == "" ? "0" : cboCarrierIDOption.Text }; }
  119. if (cmd == "WriteCarrierIDByIndex")
  120. { param = new object[] { cboCarrierIDOption.Text == "" ? "0": cboCarrierIDOption.Text, txtWriteCarrierID.Text }; }
  121. var efemnum = QueryDataClient.Instance.Service.GetConfig("System.EFEMNUM");
  122. if (efemnum.ToString() == "002")
  123. {
  124. if ((cmd == "ReadCarrierIDByIndex"))
  125. {
  126. cmd = "ReadCarrierID";
  127. param = new object[] { (cboCarrierIDOption.Text == "" || cboCarrierIDOption.Text == "0") ? "LCDFILE.TXT" : "CARRIER.TXT" };
  128. }
  129. }
  130. InvokeClient.Instance.Service.DoOperation($"{deviceName}.{cmd}", param);
  131. }
  132. else
  133. {
  134. InvokeClient.Instance.Service.DoOperation(OperationName.DeviceOperation.ToString(), param);
  135. }
  136. }
  137. private void DoDeviceExecuteMoveCmd(string obj)
  138. {
  139. Regex rgx = new Regex(@"(?i)(?<=\()(.*)(?=\))");
  140. string tmp = rgx.Match(obj).Value;
  141. if (string.IsNullOrEmpty(tmp)) return;
  142. var deviceName = LoadPortName;
  143. //object[] param = new object[] { "Move", tmp };
  144. object[] param = new object[] { deviceName, $"Loadport{tmp}" };
  145. InvokeClient.Instance.Service.DoOperation(OperationName.DeviceOperation.ToString(), param);
  146. //InvokeClient.Instance.Service.DoOperation($"{deviceName}.LoadportExecuteCommand", param);
  147. }
  148. private void DoDeviceExecuteGetCmd(string obj)
  149. {
  150. Regex rgx = new Regex(@"(?i)(?<=\()(.*)(?=\))");
  151. string tmp = rgx.Match(obj).Value;
  152. if (string.IsNullOrEmpty(tmp)) return;
  153. var deviceName = LoadPortName;
  154. object[] param = new object[] { "Get", tmp };
  155. InvokeClient.Instance.Service.DoOperation($"{deviceName}.LoadportExecuteCommand", param);
  156. }
  157. private void DoDeviceExecuteSetCmd(string obj)
  158. {
  159. Regex rgx = new Regex(@"(?i)(?<=\()(.*)(?=\))");
  160. string tmp = rgx.Match(obj).Value;
  161. if (string.IsNullOrEmpty(tmp)) return;
  162. var deviceName = LoadPortName;
  163. object[] param = new object[] { "Set", tmp };
  164. InvokeClient.Instance.Service.DoOperation($"{deviceName}.LoadportExecuteCommand", param);
  165. }
  166. private void E84Info_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
  167. {
  168. (DataContext as NewE84InfoViewModel)?.EnableTimer(IsVisible);
  169. }
  170. }
  171. internal class NewE84InfoViewModel : UIViewModelBase
  172. {
  173. public NewE84InfoViewModel() : base("NewE84InfoViewModel")
  174. {
  175. SetConfigCommand = new DelegateCommand<object>(SetConfig);
  176. ConfigFeedback = new NewE84SCs();
  177. ConfigSetPoint = new NewE84SCs();
  178. ConfigFeedback.UpdateKeys(typeof(NewE84SCs).GetProperties());
  179. ConfigSetPoint.UpdateKeys(typeof(NewE84SCs).GetProperties());
  180. UpdateConfig();
  181. }
  182. //定义委托
  183. public delegate void ConfigChangedHandle(object sender);
  184. //定义事件
  185. public event ConfigChangedHandle ConfigChanged;
  186. private void ConfigChangedCmd(object sender)
  187. {
  188. if (ConfigChanged != null)
  189. ConfigChanged(sender);//把按钮自身作为参数传递
  190. }
  191. [IgnorePropertyChange] public ICommand SetConfigCommand { get; }
  192. [IgnorePropertyChange] public NewE84SCs ConfigFeedback { get; set; }
  193. [IgnorePropertyChange] public NewE84SCs ConfigSetPoint { get; set; }
  194. public bool AutomaticMode { get; set; }
  195. public bool KeepClampedAfterRun { get; set; }
  196. public bool KeepDockAfterRun { get; set; }
  197. public bool CloseDoorAfterMap { get; set; }
  198. [Subscription("E84State")]
  199. public string E84Status { get; set; }
  200. private void SetConfig(object param)
  201. {
  202. var sc = (object[])param;
  203. InvokeClient.Instance.Service.DoOperation("System.SetConfig", sc[0].ToString(), sc[1].ToString());
  204. UpdateConfig();
  205. }
  206. public void UpdateConfig()
  207. {
  208. ConfigFeedback.Update(QueryDataClient.Instance.Service.PollConfig(ConfigFeedback.GetKeys()));
  209. ConfigSetPoint.Update(QueryDataClient.Instance.Service.PollConfig(ConfigSetPoint.GetKeys()));
  210. ConfigChangedCmd(this);
  211. InvokeAllPropertyChanged();
  212. }
  213. }
  214. public class NewE84SCs : PageSCValue
  215. {
  216. public int Fa_E84_TP1 { get; set; }
  217. public int Fa_E84_TP2 { get; set; }
  218. public int Fa_E84_TP3 { get; set; }
  219. public int Fa_E84_TP4 { get; set; }
  220. public int Fa_E84_TP5 { get; set; }
  221. public int Fa_E84_TP6 { get; set; }
  222. public bool LoadPort_LP1_PLInService { get; set; }
  223. public bool LoadPort_LP1_EnableAutoCarrierIdRead { get; set; }
  224. public int LoadPort_LP1_DataReadSize { get; set; }
  225. public int LoadPort_LP1_StartPage { get; set; }
  226. public int LoadPort_LP1_DefaultPage { get; set; }
  227. public bool LoadPort_LP2_PLInService { get; set; }
  228. public bool LoadPort_LP2_EnableAutoCarrierIdRead { get; set; }
  229. public int LoadPort_LP2_DataReadSize { get; set; }
  230. public int LoadPort_LP2_StartPage { get; set; }
  231. public int LoadPort_LP2_DefaultPage { get; set; }
  232. public bool LoadPort_LP3_PLInService { get; set; }
  233. public bool LoadPort_LP3_EnableAutoCarrierIdRead { get; set; }
  234. public int LoadPort_LP3_DataReadSize { get; set; }
  235. public int LoadPort_LP3_StartPage { get; set; }
  236. public int LoadPort_LP3_DefaultPage { get; set; }
  237. public bool LoadPort_LP4_PLInService { get; set; }
  238. public bool LoadPort_LP4_EnableAutoCarrierIdRead { get; set; }
  239. public int LoadPort_LP4_DataReadSize { get; set; }
  240. public int LoadPort_LP4_StartPage { get; set; }
  241. public int LoadPort_LP4_DefaultPage { get; set; }
  242. //public bool LoadPort_LP5_PLInService { get; set; }
  243. //public bool LoadPort_LP5_EnableAutoCarrierIdRead { get; set; }
  244. //public int LoadPort_LP5_DataReadSize { get; set; }
  245. //public int LoadPort_LP5_StartPage { get; set; }
  246. //public int LoadPort_LP5_DefaultPage { get; set; }
  247. //public bool LoadPort_LP6_PLInService { get; set; }
  248. //public bool LoadPort_LP6_EnableAutoCarrierIdRead { get; set; }
  249. //public int LoadPort_LP6_DataReadSize { get; set; }
  250. //public int LoadPort_LP6_StartPage { get; set; }
  251. //public int LoadPort_LP6_DefaultPage { get; set; }
  252. //public bool LoadPort_LP7_PLInService { get; set; }
  253. //public bool LoadPort_LP7_EnableAutoCarrierIdRead { get; set; }
  254. //public int LoadPort_LP7_DataReadSize { get; set; }
  255. //public int LoadPort_LP7_StartPage { get; set; }
  256. //public int LoadPort_LP7_DefaultPage { get; set; }
  257. //public bool LoadPort_LP8_PLInService { get; set; }
  258. //public bool LoadPort_LP8_EnableAutoCarrierIdRead { get; set; }
  259. //public int LoadPort_LP8_DataReadSize { get; set; }
  260. //public int LoadPort_LP8_StartPage { get; set; }
  261. //public int LoadPort_LP8_DefaultPage { get; set; }
  262. }
  263. public class NewE84InfoData : NotifyPropertyChangedBase
  264. {
  265. private bool _busy;
  266. private string _carrierId;
  267. private bool _continuousTransfer;
  268. private bool _cs0;
  269. private bool _cs1;
  270. private string _e84State;
  271. private bool _emergencyOk;
  272. private bool _errorOnPlacementTimeout;
  273. private bool _handoffAvailable;
  274. private string _loadPortState;
  275. private string _AccessMode;
  276. //Factory Outputs
  277. private bool _loadRequest;
  278. private bool _podDocked;
  279. private bool _podLatched;
  280. private bool _podOpen;
  281. private bool _podPlaced;
  282. private bool _podReserved;
  283. private string _portState;
  284. private bool _potPresent;
  285. private bool _readyToTransfer;
  286. private string _slotMap;
  287. private bool _transferComplete;
  288. private bool _transferRequest;
  289. private bool _unloadRequest;
  290. //Factory Inputs
  291. private bool _valid;
  292. private bool _virtualMode;
  293. private bool _inService;
  294. private string _carrierIDStatus;
  295. public string CarrierIDStatus
  296. {
  297. get => _carrierIDStatus;
  298. set
  299. {
  300. _carrierIDStatus = value;
  301. OnPropertyChanged("CarrierIDStatus");
  302. }
  303. }
  304. private string _slotmapStatus;
  305. public string SlotMapStatus
  306. {
  307. get => _slotmapStatus;
  308. set
  309. {
  310. _slotmapStatus = value;
  311. OnPropertyChanged("SlotMapStatus");
  312. }
  313. }
  314. private string _accessStatus;
  315. public string AccessStatus
  316. {
  317. get => _accessStatus;
  318. set
  319. {
  320. _accessStatus = value;
  321. OnPropertyChanged("AccessStatus");
  322. }
  323. }
  324. public bool PodPresent
  325. {
  326. get => _potPresent;
  327. set
  328. {
  329. _potPresent = value;
  330. OnPropertyChanged("PodPresent");
  331. }
  332. }
  333. public bool PodPlaced
  334. {
  335. get => _podPlaced;
  336. set
  337. {
  338. _podPlaced = value;
  339. OnPropertyChanged("PodPlaced");
  340. }
  341. }
  342. public bool PodLatched
  343. {
  344. get => _podLatched;
  345. set
  346. {
  347. _podLatched = value;
  348. OnPropertyChanged("PodLatched");
  349. }
  350. }
  351. public bool PodDocked
  352. {
  353. get => _podDocked;
  354. set
  355. {
  356. _podDocked = value;
  357. OnPropertyChanged("PodDocked");
  358. }
  359. }
  360. public bool PodOpen
  361. {
  362. get => _podOpen;
  363. set
  364. {
  365. _podOpen = value;
  366. OnPropertyChanged("PodOpen");
  367. }
  368. }
  369. public string LoadPortState
  370. {
  371. get => $"_{_loadPortState}";
  372. set
  373. {
  374. _loadPortState = value;
  375. OnPropertyChanged("LoadPortState");
  376. }
  377. }
  378. public string AccessMode
  379. {
  380. get => $"_{_AccessMode}";
  381. set
  382. {
  383. _AccessMode = value;
  384. OnPropertyChanged("AccessMode");
  385. }
  386. }
  387. public bool VirtualMode
  388. {
  389. get => _virtualMode;
  390. set
  391. {
  392. _virtualMode = value;
  393. OnPropertyChanged("VirtualMode");
  394. }
  395. }
  396. public bool PodReserved
  397. {
  398. get => _podReserved;
  399. set
  400. {
  401. _podReserved = value;
  402. OnPropertyChanged("PodReserved");
  403. }
  404. }
  405. public string PortState
  406. {
  407. get => $"_{_portState}";
  408. set
  409. {
  410. _portState = value;
  411. OnPropertyChanged("PortState");
  412. }
  413. }
  414. public string CarrierID
  415. {
  416. get => _carrierId;
  417. set
  418. {
  419. _carrierId = value;
  420. OnPropertyChanged("CarrierID");
  421. }
  422. }
  423. public string SlotMap
  424. {
  425. get => _slotMap;
  426. set
  427. {
  428. _slotMap = value;
  429. OnPropertyChanged("SlotMap");
  430. }
  431. }
  432. public bool Valid
  433. {
  434. get => _valid;
  435. set
  436. {
  437. _valid = value;
  438. OnPropertyChanged("Valid");
  439. }
  440. }
  441. public bool InService
  442. {
  443. get => _inService;
  444. set
  445. {
  446. _inService = value;
  447. OnPropertyChanged("InService");
  448. }
  449. }
  450. public bool TransferRequest
  451. {
  452. get => _transferRequest;
  453. set
  454. {
  455. _transferRequest = value;
  456. OnPropertyChanged("TransferRequest");
  457. }
  458. }
  459. public bool Busy
  460. {
  461. get => _busy;
  462. set
  463. {
  464. _busy = value;
  465. OnPropertyChanged("Busy");
  466. }
  467. }
  468. public bool TransferComplete
  469. {
  470. get => _transferComplete;
  471. set
  472. {
  473. _transferComplete = value;
  474. OnPropertyChanged("TransferComplete");
  475. }
  476. }
  477. public bool CS0
  478. {
  479. get => _cs0;
  480. set
  481. {
  482. _cs0 = value;
  483. OnPropertyChanged("CS0");
  484. }
  485. }
  486. public bool CS1
  487. {
  488. get => _cs1;
  489. set
  490. {
  491. _cs1 = value;
  492. OnPropertyChanged("CS1");
  493. }
  494. }
  495. public bool ContinuousTransfer
  496. {
  497. get => _continuousTransfer;
  498. set
  499. {
  500. _continuousTransfer = value;
  501. OnPropertyChanged("ContinuousTransfer");
  502. }
  503. }
  504. public bool LoadRequest
  505. {
  506. get => _loadRequest;
  507. set
  508. {
  509. _loadRequest = value;
  510. OnPropertyChanged("LoadRequest");
  511. }
  512. }
  513. public bool UnloadRequest
  514. {
  515. get => _unloadRequest;
  516. set
  517. {
  518. _unloadRequest = value;
  519. OnPropertyChanged("UnloadRequest");
  520. }
  521. }
  522. public bool ReadyToTransfer
  523. {
  524. get => _readyToTransfer;
  525. set
  526. {
  527. _readyToTransfer = value;
  528. OnPropertyChanged("ReadyToTransfer");
  529. }
  530. }
  531. public bool HandoffAvailable
  532. {
  533. get => _handoffAvailable;
  534. set
  535. {
  536. _handoffAvailable = value;
  537. OnPropertyChanged("HandoffAvailable");
  538. }
  539. }
  540. public bool EmergencyOk
  541. {
  542. get => _emergencyOk;
  543. set
  544. {
  545. _emergencyOk = value;
  546. OnPropertyChanged("EmergencyOk");
  547. }
  548. }
  549. public bool ErrorOnPlacementTimeout
  550. {
  551. get => _errorOnPlacementTimeout;
  552. set
  553. {
  554. _errorOnPlacementTimeout = value;
  555. OnPropertyChanged("ErrorOnPlacementTimeout");
  556. }
  557. }
  558. public string E84State
  559. {
  560. get => _e84State;
  561. set
  562. {
  563. _e84State = value;
  564. OnPropertyChanged("E84State");
  565. }
  566. }
  567. //DATA.Subscribe($"{Name}.IndicatiorLoad", () => IndicatiorLoad);
  568. // DATA.Subscribe($"{Name}.IndicatiorUnload", () => IndicatiorUnload);
  569. // DATA.Subscribe($"{Name}.IndicatiorPresence", () => IndicatiorPresence);
  570. // DATA.Subscribe($"{Name}.IndicatiorPlacement", () => IndicatiorPlacement);
  571. // DATA.Subscribe($"{Name}.IndicatiorAlarm", () => IndicatorAlarm);
  572. // DATA.Subscribe($"{Name}.IndicatiorAccessAuto", () => IndicatiorAccessAuto);
  573. // DATA.Subscribe($"{Name}.IndicatiorAccessManual", () => IndicatiorAccessManual);
  574. // DATA.Subscribe($"{Name}.IndicatiorOpAccess", () => IndicatiorOpAccess);
  575. // DATA.Subscribe($"{Name}.IndicatiorStatus1", () => IndicatiorStatus1);
  576. // DATA.Subscribe($"{Name}.IndicatiorStatus2", () => IndicatiorStatus2);
  577. private IndicatorState _indicatiorLoad;
  578. public IndicatorState IndicatiorLoad
  579. {
  580. get => _indicatiorLoad;
  581. set
  582. {
  583. _indicatiorLoad = value;
  584. OnPropertyChanged("IndicatiorLoad");
  585. }
  586. }
  587. private IndicatorState _indicatiorUnload;
  588. public IndicatorState IndicatiorUnload
  589. {
  590. get => _indicatiorUnload;
  591. set
  592. {
  593. _indicatiorUnload = value;
  594. OnPropertyChanged("IndicatiorUnload");
  595. }
  596. }
  597. private IndicatorState _indicatiorPresence;
  598. public IndicatorState IndicatiorPresence
  599. {
  600. get => _indicatiorPresence;
  601. set
  602. {
  603. _indicatiorPresence = value;
  604. OnPropertyChanged("IndicatiorPresence");
  605. }
  606. }
  607. private IndicatorState _indicatiorPlacement;
  608. public IndicatorState IndicatiorPlacement
  609. {
  610. get => _indicatiorPlacement;
  611. set
  612. {
  613. _indicatiorPlacement = value;
  614. OnPropertyChanged("IndicatiorPlacement");
  615. }
  616. }
  617. private IndicatorState _indicatiorAlarm;
  618. public IndicatorState IndicatiorAlarm
  619. {
  620. get => _indicatiorAlarm;
  621. set
  622. {
  623. _indicatiorAlarm = value;
  624. OnPropertyChanged("IndicatiorAlarm");
  625. }
  626. }
  627. private IndicatorState _indicatiorAccessAuto;
  628. public IndicatorState IndicatiorAccessAuto
  629. {
  630. get => _indicatiorAccessAuto;
  631. set
  632. {
  633. _indicatiorAccessAuto = value;
  634. OnPropertyChanged("IndicatiorAccessAuto");
  635. }
  636. }
  637. private IndicatorState _indicatiorAccessManual;
  638. public IndicatorState IndicatiorAccessManual
  639. {
  640. get => _indicatiorAccessManual;
  641. set
  642. {
  643. _indicatiorAccessManual = value;
  644. OnPropertyChanged("IndicatiorAccessManual");
  645. }
  646. }
  647. private IndicatorState _indicatiorOpAccess;
  648. public IndicatorState IndicatiorOpAccess
  649. {
  650. get => _indicatiorOpAccess;
  651. set
  652. {
  653. _indicatiorOpAccess = value;
  654. OnPropertyChanged("IndicatiorOpAccess");
  655. }
  656. }
  657. private IndicatorState _indicatiorStatus1;
  658. public IndicatorState IndicatiorStatus1
  659. {
  660. get => _indicatiorStatus1;
  661. set
  662. {
  663. _indicatiorStatus1 = value;
  664. OnPropertyChanged("IndicatiorStatus1");
  665. }
  666. }
  667. private IndicatorState _indicatiorStatus2;
  668. public IndicatorState IndicatiorStatus2
  669. {
  670. get => _indicatiorStatus2;
  671. set
  672. {
  673. _indicatiorStatus2 = value;
  674. OnPropertyChanged("IndicatiorStatus2");
  675. }
  676. }
  677. private string _systemStatus;
  678. public string SystemStatus
  679. {
  680. get => _systemStatus;
  681. set
  682. {
  683. _systemStatus = value;
  684. OnPropertyChanged("SystemStatus");
  685. }
  686. }
  687. private string _mode;
  688. public string Mode
  689. {
  690. get => _mode;
  691. set
  692. {
  693. _mode = value;
  694. OnPropertyChanged("Mode");
  695. }
  696. }
  697. private string _initPosMovement;
  698. public string InitPosMovement
  699. {
  700. get => _initPosMovement;
  701. set
  702. {
  703. _initPosMovement = value;
  704. OnPropertyChanged("InitPosMovement");
  705. }
  706. }
  707. private string _operationStatus;
  708. public string OperationStatus
  709. {
  710. get => _operationStatus;
  711. set
  712. {
  713. _operationStatus = value;
  714. OnPropertyChanged("OperationStatus");
  715. }
  716. }
  717. private string _errorCode;
  718. public string ErrorCode
  719. {
  720. get => _errorCode;
  721. set
  722. {
  723. _errorCode = value;
  724. OnPropertyChanged("ErrorCode");
  725. }
  726. }
  727. private string _containerStatus;
  728. public string ContainerStatus
  729. {
  730. get => _containerStatus;
  731. set
  732. {
  733. _containerStatus = value;
  734. OnPropertyChanged("ContainerStatus");
  735. }
  736. }
  737. private string _clampPosition;
  738. public string ClampPosition
  739. {
  740. get => _clampPosition;
  741. set
  742. {
  743. _clampPosition = value;
  744. OnPropertyChanged("ClampPosition");
  745. }
  746. }
  747. private string _lPDoorLatchPosition;
  748. public string LPDoorLatchPosition
  749. {
  750. get => _lPDoorLatchPosition;
  751. set
  752. {
  753. _lPDoorLatchPosition = value;
  754. OnPropertyChanged("LPDoorLatchPosition");
  755. }
  756. }
  757. private string _vacuumStatus;
  758. public string VacuumStatus
  759. {
  760. get => _vacuumStatus;
  761. set
  762. {
  763. _vacuumStatus = value;
  764. OnPropertyChanged("VacuumStatus");
  765. }
  766. }
  767. private string _lPDoorState;
  768. public string LPDoorState
  769. {
  770. get => _lPDoorState;
  771. set
  772. {
  773. _lPDoorState = value;
  774. OnPropertyChanged("LPDoorState");
  775. }
  776. }
  777. private string _waferProtrusion;
  778. public string WaferProtrusion
  779. {
  780. get => _waferProtrusion;
  781. set
  782. {
  783. _waferProtrusion = value;
  784. OnPropertyChanged("WaferProtrusion");
  785. }
  786. }
  787. private string _elevatorAxisPosition;
  788. public string ElevatorAxisPosition
  789. {
  790. get => _elevatorAxisPosition;
  791. set
  792. {
  793. _elevatorAxisPosition = value;
  794. OnPropertyChanged("ElevatorAxisPosition");
  795. }
  796. }
  797. private string _dockPosition;
  798. public string DockPosition
  799. {
  800. get => _dockPosition;
  801. set
  802. {
  803. _dockPosition = value;
  804. OnPropertyChanged("DockPosition");
  805. }
  806. }
  807. private string _mapperPostion;
  808. public string MapperPostion
  809. {
  810. get => _mapperPostion;
  811. set
  812. {
  813. _mapperPostion = value;
  814. OnPropertyChanged("MapperPostion");
  815. }
  816. }
  817. private string _mappingStatus;
  818. public string MappingStatus
  819. {
  820. get => _mappingStatus;
  821. set
  822. {
  823. _mappingStatus = value;
  824. OnPropertyChanged("MappingStatus");
  825. }
  826. }
  827. private string _model;
  828. public string Model
  829. {
  830. get => _model;
  831. set
  832. {
  833. _model = value;
  834. OnPropertyChanged("Model");
  835. }
  836. }
  837. private string _isFosbModeActual;
  838. public string IsFosbModeActual
  839. {
  840. get => _isFosbModeActual;
  841. set
  842. {
  843. _isFosbModeActual = value;
  844. OnPropertyChanged("IsFosbModeActual");
  845. }
  846. }
  847. private bool _pLInService;
  848. public bool PLInService
  849. {
  850. get => _pLInService;
  851. set
  852. {
  853. _pLInService = value;
  854. OnPropertyChanged("PLInService");
  855. }
  856. }
  857. private bool _enableAutoCarrierIdRead;
  858. public bool EnableAutoCarrierIdRead
  859. {
  860. get => _enableAutoCarrierIdRead;
  861. set
  862. {
  863. _enableAutoCarrierIdRead = value;
  864. OnPropertyChanged("EnableAutoCarrierIdRead");
  865. }
  866. }
  867. private string _dataReadSize;
  868. public string DataReadSize
  869. {
  870. get => _dataReadSize;
  871. set
  872. {
  873. _dataReadSize = value;
  874. OnPropertyChanged("DataReadSize");
  875. }
  876. }
  877. private string _startPage;
  878. public string StartPage
  879. {
  880. get => _startPage;
  881. set
  882. {
  883. _startPage = value;
  884. OnPropertyChanged("StartPage");
  885. }
  886. }
  887. private string _defaultPage;
  888. public string DefaultPage
  889. {
  890. get => _defaultPage;
  891. set
  892. {
  893. _defaultPage = value;
  894. OnPropertyChanged("DefaultPage");
  895. }
  896. }
  897. public ObservableCollection<SlotThickness> AllSlotThickness { get; set; } = new ObservableCollection<SlotThickness>();
  898. }
  899. public class SlotThickness : NotifyPropertyChangedBase
  900. {
  901. private string _slotName;
  902. public string SlotName
  903. {
  904. get => _slotName;
  905. set
  906. {
  907. _slotName = value;
  908. OnPropertyChanged("SlotName");
  909. }
  910. }
  911. private int _value;
  912. public int Value
  913. {
  914. get => _value;
  915. set
  916. {
  917. _value = value;
  918. OnPropertyChanged("Value");
  919. }
  920. }
  921. }
  922. }