GasPanelViewModel.cs 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357
  1. using Aitex.Core.Common.DeviceData;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.UI.ControlDataContext;
  4. using Aitex.Core.UI.MVVM;
  5. using Aitex.Core.Util;
  6. using FurnaceGasPanelUI.Models;
  7. using MECF.Framework.Common.DataCenter;
  8. using MECF.Framework.Common.OperationCenter;
  9. using MECF.Framework.UI.Core.Control;
  10. using MECF.Framework.UI.Core.ExtendedControls;
  11. using OpenSEMI.ClientBase;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using System.Windows;
  16. using System.Windows.Input;
  17. namespace FurnaceGasPanelUI.Views.Maintenances.NTP02
  18. {
  19. public class GasPanelViewModel : ThermalGasPanelUIViewModelBase
  20. {
  21. public ICommand CmdSetMfcFlow { get; set; }
  22. public ICommand CmdSetMfmFlow { get; set; }
  23. public bool _ismanagerPermission = true;
  24. public Window WinOwner { get; set; }
  25. public bool IsManagerPermission
  26. {
  27. get
  28. {
  29. return _ismanagerPermission;
  30. }
  31. set
  32. {
  33. _ismanagerPermission = value;
  34. NotifyOfPropertyChange("IsManagerPermission");
  35. }
  36. }
  37. private bool _isRecipeEdit = false;
  38. private string backGroundStr = "#FFB0D1F1";
  39. public bool ManualEnable { get; set; } = true;
  40. public string ManualEnableColor
  41. {
  42. get
  43. {
  44. if (ManualEnable)
  45. {
  46. return "Green";
  47. }
  48. return backGroundStr;
  49. }
  50. }
  51. public void SwichManualEnable()
  52. {
  53. ManualEnable = true;
  54. }
  55. public void SwichMonitor()
  56. {
  57. ManualEnable = false;
  58. }
  59. public void SwichRecipe()
  60. {
  61. IsRecipeEdit = true;
  62. }
  63. public bool MonitorChecked { get; set; } = true;
  64. public bool ManualChecked { get; set; } = false;
  65. public bool IsRecipeEdit
  66. {
  67. get
  68. {
  69. return _isRecipeEdit;
  70. }
  71. set
  72. {
  73. _isRecipeEdit = value;
  74. NotifyOfPropertyChange("IsRecipeEdit");
  75. }
  76. }
  77. public bool EditTrue { get; set; } = false;
  78. [Subscription("PM1.SensorRecipeOK")]
  79. public AITSensorData SensorRecipeOK { get; set; }
  80. [Subscription("PM1.SensorPROCManualOK")]
  81. public AITSensorData SensorPROCManualOK { get; set; }
  82. [Subscription("System.VentValve.DeviceData")]
  83. public AITValveData VentValveData { get; set; }
  84. [Subscription("System.PumpValve.DeviceData")]
  85. public AITValveData PumpValveData { get; set; }
  86. [Subscription("PM1.SensorTubeATMPressure.DeviceData")]
  87. public AITSensorData SensorTubeATMPressure { get; set; }
  88. [Subscription("System.TubePressure.DeviceData")]
  89. public AITPressureMeterData TubePressureData { get; set; }
  90. [Subscription("PM1.SensorVAC1.Value")]
  91. public bool VAC1 { get; set; }
  92. [Subscription("PM1.SensorVAC2.Value")]
  93. public bool VAC2 { get; set; }
  94. [Subscription("PM1.SensorVAC3.Value")]
  95. public bool VAC3 { get; set; }
  96. [Subscription("PM1.SensorVAC4.Value")]
  97. public bool VAC4 { get; set; }
  98. [Subscription("PM1.SensorVAC5.Value")]
  99. public bool VAC5 { get; set; }
  100. [Subscription("PM1.SensorVAC6.Value")]
  101. public bool VAC6 { get; set; }
  102. [Subscription("PM1.SensorPS13LStatus.Value")]
  103. public bool VACATM { get; set; }
  104. [Subscription("PM1.SensorVACDEPOOK.Value")]
  105. public bool DEPOOK { get; set; }
  106. [Subscription("PM1.SensorVACHFOK.Value")]
  107. public bool HFClnOK { get; set; }
  108. [Subscription("PM1.SensorVACF2OK.Value")]
  109. public bool F2ClnOK { get; set; }
  110. #region Valves
  111. [Subscription("PM1.ValveAV1.DeviceData")]
  112. public AITValveData ValveAV1 { get; set; }
  113. [Subscription("PM1.ValveAV2.DeviceData")]
  114. public AITValveData ValveAV2 { get; set; }
  115. [Subscription("PM1.ValveAV3.DeviceData")]
  116. public AITValveData ValveAV3 { get; set; }
  117. [Subscription("PM1.ValveAV4.DeviceData")]
  118. public AITValveData ValveAV4 { get; set; }
  119. [Subscription("PM1.ValveAV5.DeviceData")]
  120. public AITValveData ValveAV5 { get; set; }
  121. [Subscription("PM1.ValveAV6.DeviceData")]
  122. public AITValveData ValveAV6 { get; set; }
  123. [Subscription("PM1.ValveAV7.DeviceData")]
  124. public AITValveData ValveAV7 { get; set; }
  125. [Subscription("PM1.ValveAV8.DeviceData")]
  126. public AITValveData ValveAV8 { get; set; }
  127. [Subscription("PM1.ValveAV9.DeviceData")]
  128. public AITValveData ValveAV9 { get; set; }
  129. [Subscription("PM1.ValveAV10.DeviceData")]
  130. public AITValveData ValveAV10 { get; set; }
  131. [Subscription("PM1.ValveAV11.DeviceData")]
  132. public AITValveData ValveAV11 { get; set; }
  133. [Subscription("PM1.ValveAV12.DeviceData")]
  134. public AITValveData ValveAV12 { get; set; }
  135. [Subscription("PM1.ValveAV13.DeviceData")]
  136. public AITValveData ValveAV13 { get; set; }
  137. [Subscription("PM1.ValveAV14.DeviceData")]
  138. public AITValveData ValveAV14 { get; set; }
  139. [Subscription("PM1.ValveAV15.DeviceData")]
  140. public AITValveData ValveAV15 { get; set; }
  141. [Subscription("PM1.ValveAV16.DeviceData")]
  142. public AITValveData ValveAV16 { get; set; }
  143. [Subscription("PM1.ValveAV17.DeviceData")]
  144. public AITValveData ValveAV17 { get; set; }
  145. [Subscription("PM1.ValveAV18.DeviceData")]
  146. public AITValveData ValveAV18 { get; set; }
  147. [Subscription("PM1.ValveAV19.DeviceData")]
  148. public AITValveData ValveAV19 { get; set; }
  149. [Subscription("PM1.ValveAV20.DeviceData")]
  150. public AITValveData ValveAV20 { get; set; }
  151. [Subscription("PM1.ValveAV21.DeviceData")]
  152. public AITValveData ValveAV21 { get; set; }
  153. [Subscription("PM1.ValveAV22.DeviceData")]
  154. public AITValveData ValveAV22 { get; set; }
  155. [Subscription("PM1.ValveAV23.DeviceData")]
  156. public AITValveData ValveAV23 { get; set; }
  157. [Subscription("PM1.ValveAV24.DeviceData")]
  158. public AITValveData ValveAV24 { get; set; }
  159. [Subscription("PM1.ValveAV25.DeviceData")]
  160. public AITValveData ValveAV25 { get; set; }
  161. [Subscription("PM1.ValveAV26.DeviceData")]
  162. public AITValveData ValveAV26 { get; set; }
  163. [Subscription("PM1.ValveAV27.DeviceData")]
  164. public AITValveData ValveAV27 { get; set; }
  165. [Subscription("PM1.ValveAV28.DeviceData")]
  166. public AITValveData ValveAV28 { get; set; }
  167. [Subscription("PM1.ValveAV29.DeviceData")]
  168. public AITValveData ValveAV29 { get; set; }
  169. [Subscription("PM1.ValveAV30.DeviceData")]
  170. public AITValveData ValveAV30 { get; set; }
  171. [Subscription("PM1.ValveAV31.DeviceData")]
  172. public AITValveData ValveAV31 { get; set; }
  173. [Subscription("PM1.ValveAV32.DeviceData")]
  174. public AITValveData ValveAV32 { get; set; }
  175. [Subscription("PM1.ValveAV33.DeviceData")]
  176. public AITValveData ValveAV33 { get; set; }
  177. [Subscription("PM1.ValveAV34.DeviceData")]
  178. public AITValveData ValveAV34 { get; set; }
  179. [Subscription("PM1.ValveAV35.DeviceData")]
  180. public AITValveData ValveAV35 { get; set; }
  181. [Subscription("PM1.ValveAV36.DeviceData")]
  182. public AITValveData ValveAV36 { get; set; }
  183. [Subscription("PM1.ValveAV37.DeviceData")]
  184. public AITValveData ValveAV37 { get; set; }
  185. [Subscription("PM1.ValveAV38.DeviceData")]
  186. public AITValveData ValveAV38 { get; set; }
  187. [Subscription("PM1.ValveAV39.DeviceData")] public AITValveData ValveAV39 { get; set; }
  188. [Subscription("PM1.ValveAV40.DeviceData")] public AITValveData ValveAV40 { get; set; }
  189. [Subscription("PM1.ValveAV41.DeviceData")] public AITValveData ValveAV41 { get; set; }
  190. [Subscription("PM1.ValveAV42.DeviceData")] public AITValveData ValveAV42 { get; set; }
  191. [Subscription("PM1.ValveAV43.DeviceData")] public AITValveData ValveAV43 { get; set; }
  192. [Subscription("PM1.ValveAV44.DeviceData")] public AITValveData ValveAV44 { get; set; }
  193. [Subscription("PM1.ValveAV45.DeviceData")] public AITValveData ValveAV45 { get; set; }
  194. [Subscription("PM1.ValveAV46.DeviceData")] public AITValveData ValveAV46 { get; set; }
  195. [Subscription("PM1.ValveAV47.DeviceData")] public AITValveData ValveAV47 { get; set; }
  196. [Subscription("PM1.ValveAV48.DeviceData")] public AITValveData ValveAV48 { get; set; }
  197. [Subscription("PM1.ValveAV49.DeviceData")] public AITValveData ValveAV49 { get; set; }
  198. [Subscription("PM1.ValveAV50.DeviceData")] public AITValveData ValveAV50 { get; set; }
  199. [Subscription("PM1.ValveAV51.DeviceData")] public AITValveData ValveAV51 { get; set; }
  200. [Subscription("PM1.ValveAV52.DeviceData")] public AITValveData ValveAV52 { get; set; }
  201. [Subscription("PM1.ValveAV53.DeviceData")] public AITValveData ValveAV53 { get; set; }
  202. [Subscription("PM1.ValveAV54.DeviceData")] public AITValveData ValveAV54 { get; set; }
  203. [Subscription("PM1.ValveAV55.DeviceData")] public AITValveData ValveAV55 { get; set; }
  204. [Subscription("PM1.ValveAV56.DeviceData")]
  205. public AITValveData ValveAV56 { get; set; }
  206. [Subscription("PM1.ValveAV57.DeviceData")]
  207. public AITValveData ValveAV57 { get; set; }
  208. [Subscription("PM1.ValveAV58.DeviceData")]
  209. public AITValveData ValveAV58 { get; set; }
  210. [Subscription("PM1.ValveAV59.DeviceData")]
  211. public AITValveData ValveAV59 { get; set; }
  212. [Subscription("PM1.ValveAV60.DeviceData")]
  213. public AITValveData ValveAV60 { get; set; }
  214. [Subscription("PM1.ValveFIMS1N2Purge.DeviceData")]
  215. public AITValveData ValveAV63 { get; set; }
  216. [Subscription("PM1.ValveFIMS2N2Purge.DeviceData")]
  217. public AITValveData ValveAV64 { get; set; }
  218. [Subscription("PM1.ValveAV65.DeviceData")]
  219. public AITValveData ValveAV65 { get; set; }
  220. [Subscription("PM1.ValveAV66.DeviceData")]
  221. public AITValveData ValveAV66 { get; set; }
  222. [Subscription("PM1.ValveAV68.DeviceData")]
  223. public AITValveData ValveAV68 { get; set; }
  224. [Subscription("PM1.APC.ModeFeedback")]
  225. public int APCModeFeedback { get; set; }
  226. [Subscription("PM1.ValveAV71.DeviceData")]
  227. public AITValveData ValveAV71Data { get; set; }
  228. public AITValveData ValveAV71
  229. {
  230. get
  231. {
  232. return new AITValveData()
  233. {
  234. DeviceName = ValveAV71Data.DeviceName,
  235. DisplayName = ValveAV71Data.DisplayName,
  236. UniqueName = ValveAV71Data.UniqueName,
  237. DefaultValue = ValveAV71Data.DefaultValue,
  238. SetPoint = ValveAV71Data.SetPoint,
  239. Feedback = APCModeFeedback != 5,
  240. ILKDiValue = ValveAV71Data.ILKDiValue,
  241. VirtualFeedback = ValveAV71Data.VirtualFeedback
  242. };
  243. }
  244. }
  245. [Subscription("PM1.ValveAV72.DeviceData")]
  246. public AITValveData ValveAV72 { get; set; }
  247. [Subscription("PM1.ValveAV73.DeviceData")]
  248. public AITValveData ValveAV73 { get; set; }
  249. [Subscription("PM1.ValveAV74.DeviceData")]
  250. public AITValveData ValveAV74 { get; set; }
  251. [Subscription("PM1.ValveAV75.DeviceData")]
  252. public AITValveData ValveAV75 { get; set; }
  253. [Subscription("PM1.ValveAV77.DeviceData")]
  254. public AITValveData ValveAV77 { get; set; }
  255. [Subscription("PM1.ValveAV81.DeviceData")]
  256. public AITValveData ValveAV81 { get; set; }
  257. [Subscription("PM1.ValveAV82.DeviceData")]
  258. public AITValveData ValveAV82 { get; set; }
  259. [Subscription("PM1.ValveAV83.DeviceData")]
  260. public AITValveData ValveAV83 { get; set; }
  261. [Subscription("PM1.ValveAV91.DeviceData")]
  262. public AITValveData ValveDPR { get; set; }
  263. public string ValveDPRBrush
  264. {
  265. get
  266. {
  267. if (ValveDPR != null && ValveDPR.Feedback)
  268. {
  269. return "Green";
  270. }
  271. return backGroundStr;
  272. }
  273. }
  274. [Subscription("PM1.ValveBlowerPowerOn.DeviceData")]
  275. public AITValveData ValveBWR { get; set; }
  276. public string ValveBWRBrush
  277. {
  278. get
  279. {
  280. if (ValveBWR != null && ValveBWR.Feedback)
  281. {
  282. return "Green";
  283. }
  284. return backGroundStr;
  285. }
  286. }
  287. [Subscription("PM1.IsCEXHOn")]
  288. public bool IsCEXHOn { get; set; }
  289. public string CEXHBrush
  290. {
  291. get
  292. {
  293. if (IsCEXHOn)
  294. {
  295. return "Green";
  296. }
  297. return backGroundStr;
  298. }
  299. }
  300. [Subscription("PM1.IsF2ClnOn")]
  301. public bool IsF2ClnOn { get; set; }
  302. public string F2ClnBrush
  303. {
  304. get
  305. {
  306. if (IsF2ClnOn)
  307. {
  308. return "Green";
  309. }
  310. return backGroundStr;
  311. }
  312. }
  313. [Subscription("PM1.IsHFClnOn")]
  314. public bool IsHFClnOn { get; set; }
  315. public string HFClnBrush
  316. {
  317. get
  318. {
  319. if (IsHFClnOn)
  320. {
  321. return "Green";
  322. }
  323. return backGroundStr;
  324. }
  325. }
  326. [Subscription("PM1.IsDEPOOn")]
  327. public bool IsDEPOOn { get; set; }
  328. public string DEPOBrush
  329. {
  330. get
  331. {
  332. if (IsDEPOOn)
  333. {
  334. return "Green";
  335. }
  336. return backGroundStr;
  337. }
  338. }
  339. [Subscription("PM1.HTR1Enable")]
  340. public bool IsHTR1Enable { get; set; }
  341. public string HTR1Brush
  342. {
  343. get
  344. {
  345. if (IsHTR1Enable)
  346. {
  347. return "Green";
  348. }
  349. return backGroundStr;
  350. }
  351. }
  352. [Subscription("PM1.HTR2Enable")]
  353. public bool IsHTR2Enable { get; set; }
  354. public string HTR2Brush
  355. {
  356. get
  357. {
  358. if (IsHTR2Enable)
  359. {
  360. return "Green";
  361. }
  362. return backGroundStr;
  363. }
  364. }
  365. [Subscription("PM1.HTR3Enable")]
  366. public bool IsHTR3Enable { get; set; }
  367. public string HTR3Brush
  368. {
  369. get
  370. {
  371. if (IsHTR3Enable)
  372. {
  373. return "Green";
  374. }
  375. return backGroundStr;
  376. }
  377. }
  378. [Subscription("PM1.AUCPump.DeviceData")]
  379. public AITValveData AUCPump { get; set; }
  380. public string AUCPumpBrush
  381. {
  382. get
  383. {
  384. if (AUCPump != null && AUCPump.Feedback)
  385. {
  386. return "Green";
  387. }
  388. return backGroundStr;
  389. }
  390. }
  391. [Subscription("PM1.BothPump.DeviceData")]
  392. public AITValveData BothPump { get; set; }
  393. public string BothPumpBrush
  394. {
  395. get
  396. {
  397. if (BothPump != null && BothPump.Feedback)
  398. {
  399. return "Green";
  400. }
  401. return backGroundStr;
  402. }
  403. }
  404. [Subscription("PM1.AGVPump.DeviceData")]
  405. public AITValveData AGVPump { get; set; }
  406. public string AGVPumpBrush
  407. {
  408. get
  409. {
  410. if (AGVPump != null && AGVPump.Feedback)
  411. {
  412. return "Green";
  413. }
  414. return backGroundStr;
  415. }
  416. }
  417. #endregion
  418. #region MFCs
  419. [Subscription("PM1.MFC1.DeviceData")]
  420. public AITMfcData MFC1Data { get; set; }
  421. [Subscription("PM1.MFC2.DeviceData")]
  422. public AITMfcData MFC2Data { get; set; }
  423. [Subscription("PM1.MFC3.DeviceData")]
  424. public AITMfcData MFC3Data { get; set; }
  425. [Subscription("PM1.MFC4.DeviceData")]
  426. public AITMfcData MFC4Data { get; set; }
  427. [Subscription("PM1.MFC5.DeviceData")]
  428. public AITMfcData MFC5Data { get; set; }
  429. [Subscription("PM1.MFC6.DeviceData")]
  430. public AITMfcData MFC6Data { get; set; }
  431. [Subscription("PM1.MFC7.DeviceData")]
  432. public AITMfcData MFC7Data { get; set; }
  433. [Subscription("PM1.MFC8.DeviceData")]
  434. public AITMfcData MFC8Data { get; set; }
  435. [Subscription("PM1.MFC9.DeviceData")]
  436. public AITMfcData MFC9Data { get; set; }
  437. [Subscription("PM1.MFC10.DeviceData")]
  438. public AITMfcData MFC10Data { get; set; }
  439. [Subscription("PM1.MFC11.DeviceData")]
  440. public AITMfcData MFC11Data { get; set; }
  441. [Subscription("PM1.MFC12.DeviceData")]
  442. public AITMfcData MFC12Data { get; set; }
  443. [Subscription("PM1.MFC13.DeviceData")] public AITMfcData MFC13Data { get; set; }
  444. [Subscription("PM1.MFC14.DeviceData")] public AITMfcData MFC14Data { get; set; }
  445. [Subscription("PM1.MFC15.DeviceData")] public AITMfcData MFC15Data { get; set; }
  446. [Subscription("PM1.MFC16.DeviceData")] public AITMfcData MFC16Data { get; set; }
  447. [Subscription("PM1.MFC51.DeviceData")]
  448. public AITMfcData MFC51Data { get; set; }
  449. #endregion
  450. [Subscription("PM1.MFM57.DeviceData")]
  451. public AITWaterFlowMeterData MFM57Flow { get; set; }
  452. [Subscription("PM1.MFM1.DeviceData")]
  453. public AITWaterFlowMeterData MFM1Flow { get; set; }
  454. [Subscription("PM1.RfPower.IsPowerOn")]
  455. public bool IsPowerOn { get; set; }
  456. [Subscription("PM1.RfPower.PowerSetPoint")]
  457. public float PowerSetPoint { get; set; }
  458. [Subscription("PM1.RfPower.ForwardPower")]
  459. public float ForwardPower { get; set; }
  460. [Subscription("PM1.RfMatch.Capacitance1PositionFeedBack")]
  461. public float Capacitance1PositionFeedBack { get; set; }
  462. [Subscription("PM1.RfMatch.Capacitance2PositionFeedBack")]
  463. public float Capacitance2PositionFeedBack { get; set; }
  464. [Subscription("PM1.RfMatch.VppFeedBack")]
  465. public float VppFeedBack { get; set; }
  466. public ICommand CmdSetValve { get; set; }
  467. private GasPanelStateType _selectedGasStateType = GasPanelStateType.Monitor;
  468. public GasPanelStateType SelectedGasStateType
  469. {
  470. get
  471. {
  472. return _selectedGasStateType;
  473. }
  474. set
  475. {
  476. _selectedGasStateType = value;
  477. NotifyOfPropertyChange(nameof(SelectedGasStateType));
  478. }
  479. }
  480. public AnalogDeviceDataItem MFC1
  481. {
  482. get
  483. {
  484. return new AnalogDeviceDataItem
  485. {
  486. Type = "MFC",
  487. DeviceName = MFC1Data.UniqueName,
  488. DeviceId = MFC1Data.DeviceSchematicId,
  489. DisplayName = MFC1Data.DisplayName,
  490. Scale = MFC1Data.Scale,
  491. Unit = MFC1Data.Unit,
  492. FeedBack = MFC1Data.FeedBack,
  493. SetPoint = MFC1Data.SetPoint,
  494. VirtualFeedBack = MFC1Data.VirtualFeedBack
  495. };
  496. }
  497. }
  498. public AnalogDeviceDataItem MFC2
  499. {
  500. get
  501. {
  502. return new AnalogDeviceDataItem
  503. {
  504. Type = "MFC",
  505. DeviceName = MFC2Data.UniqueName,
  506. DeviceId = MFC2Data.DeviceSchematicId,
  507. DisplayName = MFC2Data.DisplayName,
  508. Scale = MFC2Data.Scale,
  509. Unit = MFC2Data.Unit,
  510. FeedBack = MFC2Data.FeedBack,
  511. SetPoint = MFC2Data.SetPoint,
  512. VirtualFeedBack = MFC2Data.VirtualFeedBack
  513. };
  514. }
  515. }
  516. public AnalogDeviceDataItem MFC3
  517. {
  518. get
  519. {
  520. return new AnalogDeviceDataItem
  521. {
  522. Type = "MFC",
  523. DeviceName = MFC3Data.UniqueName,
  524. DeviceId = MFC3Data.DeviceSchematicId,
  525. DisplayName = MFC3Data.DisplayName,
  526. Scale = MFC3Data.Scale,
  527. Unit = MFC3Data.Unit,
  528. FeedBack = MFC3Data.FeedBack,
  529. SetPoint = MFC3Data.SetPoint,
  530. VirtualFeedBack = MFC3Data.VirtualFeedBack
  531. };
  532. }
  533. }
  534. public AnalogDeviceDataItem MFC4
  535. {
  536. get
  537. {
  538. return new AnalogDeviceDataItem
  539. {
  540. Type = "MFC",
  541. DeviceName = MFC4Data.UniqueName,
  542. DeviceId = MFC4Data.DeviceSchematicId,
  543. DisplayName = MFC4Data.DisplayName,
  544. Scale = MFC4Data.Scale,
  545. Unit = MFC4Data.Unit,
  546. FeedBack = MFC4Data.FeedBack,
  547. SetPoint = MFC4Data.SetPoint,
  548. VirtualFeedBack = MFC4Data.VirtualFeedBack
  549. };
  550. }
  551. }
  552. public AnalogDeviceDataItem MFC5
  553. {
  554. get
  555. {
  556. return new AnalogDeviceDataItem
  557. {
  558. Type = "MFC",
  559. DeviceName = MFC5Data.UniqueName,
  560. DeviceId = MFC5Data.DeviceSchematicId,
  561. DisplayName = MFC5Data.DisplayName,
  562. Scale = MFC5Data.Scale,
  563. Unit = MFC5Data.Unit,
  564. FeedBack = MFC5Data.FeedBack,
  565. SetPoint = MFC5Data.SetPoint,
  566. VirtualFeedBack = MFC5Data.VirtualFeedBack
  567. };
  568. }
  569. }
  570. public AnalogDeviceDataItem MFC6
  571. {
  572. get
  573. {
  574. return new AnalogDeviceDataItem
  575. {
  576. Type = "MFC",
  577. DeviceName = MFC6Data.UniqueName,
  578. DeviceId = MFC6Data.DeviceSchematicId,
  579. DisplayName = MFC6Data.DisplayName,
  580. Scale = MFC6Data.Scale,
  581. Unit = MFC6Data.Unit,
  582. FeedBack = MFC6Data.FeedBack,
  583. SetPoint = MFC6Data.SetPoint,
  584. VirtualFeedBack = MFC6Data.VirtualFeedBack
  585. };
  586. }
  587. }
  588. public AnalogDeviceDataItem MFC7
  589. {
  590. get
  591. {
  592. return new AnalogDeviceDataItem
  593. {
  594. Type = "MFC",
  595. DeviceName = MFC7Data.UniqueName,
  596. DeviceId = MFC7Data.DeviceSchematicId,
  597. DisplayName = MFC7Data.DisplayName,
  598. Scale = MFC7Data.Scale,
  599. Unit = MFC7Data.Unit,
  600. FeedBack = MFC7Data.FeedBack,
  601. SetPoint = MFC7Data.SetPoint,
  602. VirtualFeedBack = MFC7Data.VirtualFeedBack
  603. };
  604. }
  605. }
  606. public AnalogDeviceDataItem MFC8
  607. {
  608. get
  609. {
  610. return new AnalogDeviceDataItem
  611. {
  612. Type = "MFC",
  613. DeviceName = MFC8Data.UniqueName,
  614. DeviceId = MFC8Data.DeviceSchematicId,
  615. DisplayName = MFC8Data.DisplayName,
  616. Scale = MFC8Data.Scale,
  617. Unit = MFC8Data.Unit,
  618. FeedBack = MFC8Data.FeedBack,
  619. SetPoint = MFC8Data.SetPoint,
  620. VirtualFeedBack = MFC8Data.VirtualFeedBack
  621. };
  622. }
  623. }
  624. public AnalogDeviceDataItem MFC9
  625. {
  626. get
  627. {
  628. return new AnalogDeviceDataItem
  629. {
  630. Type = "MFC",
  631. DeviceName = MFC9Data.UniqueName,
  632. DeviceId = MFC9Data.DeviceSchematicId,
  633. DisplayName = MFC9Data.DisplayName,
  634. Scale = MFC9Data.Scale,
  635. Unit = MFC9Data.Unit,
  636. FeedBack = MFC9Data.FeedBack,
  637. SetPoint = MFC9Data.SetPoint,
  638. VirtualFeedBack = MFC9Data.VirtualFeedBack
  639. };
  640. }
  641. }
  642. public AnalogDeviceDataItem MFC10
  643. {
  644. get
  645. {
  646. return new AnalogDeviceDataItem
  647. {
  648. Type = "MFC",
  649. DeviceName = MFC10Data.UniqueName,
  650. DeviceId = MFC10Data.DeviceSchematicId,
  651. DisplayName = MFC10Data.DisplayName,
  652. Scale = MFC10Data.Scale,
  653. Unit = MFC10Data.Unit,
  654. FeedBack = MFC10Data.FeedBack,
  655. SetPoint = MFC10Data.SetPoint,
  656. VirtualFeedBack = MFC10Data.VirtualFeedBack
  657. };
  658. }
  659. }
  660. public AnalogDeviceDataItem MFC11
  661. {
  662. get
  663. {
  664. return new AnalogDeviceDataItem
  665. {
  666. Type = "MFC",
  667. DeviceName = MFC11Data.UniqueName,
  668. DeviceId = MFC11Data.DeviceSchematicId,
  669. DisplayName = MFC11Data.DisplayName,
  670. Scale = MFC11Data.Scale,
  671. Unit = MFC11Data.Unit,
  672. FeedBack = MFC11Data.FeedBack,
  673. SetPoint = MFC11Data.SetPoint,
  674. VirtualFeedBack = MFC11Data.VirtualFeedBack
  675. };
  676. }
  677. }
  678. public AnalogDeviceDataItem MFC12
  679. {
  680. get
  681. {
  682. return new AnalogDeviceDataItem
  683. {
  684. Type = "MFC",
  685. DeviceName = MFC12Data.UniqueName,
  686. DeviceId = MFC12Data.DeviceSchematicId,
  687. DisplayName = MFC12Data.DisplayName,
  688. Scale = MFC12Data.Scale,
  689. Unit = MFC12Data.Unit,
  690. FeedBack = MFC12Data.FeedBack,
  691. SetPoint = MFC12Data.SetPoint,
  692. VirtualFeedBack = MFC12Data.VirtualFeedBack
  693. };
  694. }
  695. }
  696. public AnalogDeviceDataItem MFC13
  697. {
  698. get
  699. {
  700. return new AnalogDeviceDataItem
  701. {
  702. Type = "MFC",
  703. DeviceName = MFC13Data.UniqueName,
  704. DeviceId = MFC13Data.DeviceSchematicId,
  705. DisplayName = MFC13Data.DisplayName,
  706. Scale = MFC13Data.Scale,
  707. Unit = MFC13Data.Unit,
  708. FeedBack = MFC13Data.FeedBack,
  709. SetPoint = MFC13Data.SetPoint,
  710. VirtualFeedBack = MFC13Data.VirtualFeedBack
  711. };
  712. }
  713. }
  714. public AnalogDeviceDataItem MFC14
  715. {
  716. get
  717. {
  718. return new AnalogDeviceDataItem
  719. {
  720. Type = "MFC",
  721. DeviceName = MFC14Data.UniqueName,
  722. DeviceId = MFC14Data.DeviceSchematicId,
  723. DisplayName = MFC14Data.DisplayName,
  724. Scale = MFC14Data.Scale,
  725. Unit = MFC14Data.Unit,
  726. FeedBack = MFC14Data.FeedBack,
  727. SetPoint = MFC14Data.SetPoint,
  728. VirtualFeedBack = MFC14Data.VirtualFeedBack
  729. };
  730. }
  731. }
  732. public AnalogDeviceDataItem MFC15
  733. {
  734. get
  735. {
  736. return new AnalogDeviceDataItem
  737. {
  738. Type = "MFC",
  739. DeviceName = MFC15Data.UniqueName,
  740. DeviceId = MFC15Data.DeviceSchematicId,
  741. DisplayName = MFC15Data.DisplayName,
  742. Scale = MFC15Data.Scale,
  743. Unit = MFC15Data.Unit,
  744. FeedBack = MFC15Data.FeedBack,
  745. SetPoint = MFC15Data.SetPoint,
  746. VirtualFeedBack = MFC15Data.VirtualFeedBack
  747. };
  748. }
  749. }
  750. public AnalogDeviceDataItem MFC16
  751. {
  752. get
  753. {
  754. return new AnalogDeviceDataItem
  755. {
  756. Type = "MFC",
  757. DeviceName = MFC16Data.UniqueName,
  758. DeviceId = MFC16Data.DeviceSchematicId,
  759. DisplayName = MFC16Data.DisplayName,
  760. Scale = MFC16Data.Scale,
  761. Unit = MFC16Data.Unit,
  762. FeedBack = MFC16Data.FeedBack,
  763. SetPoint = MFC16Data.SetPoint,
  764. VirtualFeedBack = MFC16Data.VirtualFeedBack
  765. };
  766. }
  767. }
  768. public AnalogDeviceDataItem MFC51
  769. {
  770. get
  771. {
  772. return new AnalogDeviceDataItem
  773. {
  774. Type = "MFC",
  775. DeviceName = MFC51Data.UniqueName,
  776. DeviceId = MFC51Data.DeviceSchematicId,
  777. DisplayName = MFC51Data.DisplayName,
  778. Scale = MFC51Data.Scale,
  779. Unit = MFC51Data.Unit,
  780. FeedBack = MFC51Data.FeedBack,
  781. SetPoint = MFC51Data.SetPoint,
  782. VirtualFeedBack = MFC51Data.VirtualFeedBack
  783. };
  784. }
  785. }
  786. public AnalogDeviceDataItem MFM57
  787. {
  788. get
  789. {
  790. return new AnalogDeviceDataItem
  791. {
  792. Type = "MFM",
  793. DeviceId = MFM57Flow.DeviceSchematicId,
  794. DisplayName = MFM57Flow.DisplayName,
  795. Scale = MFM57Flow.Scale,
  796. Unit = MFM57Flow.Unit,
  797. FeedBack = MFM57Flow.FeedBack,
  798. SetPoint = MFM57Flow.SetPoint,
  799. };
  800. }
  801. }
  802. public AnalogDeviceDataItem MFM1
  803. {
  804. get
  805. {
  806. return new AnalogDeviceDataItem
  807. {
  808. Type = "MFM",
  809. DeviceName = MFM1Flow.DisplayName,
  810. DeviceId = MFM1Flow.DeviceSchematicId,
  811. DisplayName = MFM1Flow.DisplayName,
  812. Scale = MFM1Flow.Scale,
  813. Unit = MFM1Flow.Unit,
  814. FeedBack = MFM1Flow.FeedBack,
  815. SetPoint = MFM1Flow.SetPoint,
  816. };
  817. }
  818. }
  819. public string IsRfPowerOn
  820. {
  821. get
  822. {
  823. return IsPowerOn ? "On" : "Off";
  824. }
  825. }
  826. private bool _manualCheckSelect = false;
  827. private bool _manualCheck = true;
  828. public bool ManualCheck
  829. {
  830. get => _manualCheck;
  831. set
  832. {
  833. _manualCheck = value;
  834. NotifyOfPropertyChange(nameof(ManualCheck));
  835. }
  836. }
  837. private bool _manualCheckHide;
  838. public bool ManumalCheckHide
  839. {
  840. get => _manualCheckHide;
  841. set
  842. {
  843. _manualCheckHide = value;
  844. NotifyOfPropertyChange(nameof(ManumalCheckHide));
  845. }
  846. }
  847. public bool ValveTrue { get; set; } = true;
  848. public bool ValveFalse { get; set; } = false;
  849. private bool _enablePLCPointControl = false;
  850. public bool EnablePLCPointControl
  851. {
  852. get => _enablePLCPointControl;
  853. set
  854. {
  855. _enablePLCPointControl = value;
  856. NotifyOfPropertyChange(nameof(EnablePLCPointControl));
  857. }
  858. }
  859. public GasPanelViewModel()
  860. {
  861. CmdSetMfcFlow = new DelegateCommand<object>(PerformCmdSetMfcFlow);
  862. CmdSetMfmFlow = new DelegateCommand<object>(PerformCmdSetMfmFlow);
  863. }
  864. public void SelectedGasStateTypeCmd(string cmd)
  865. {
  866. switch (cmd)
  867. {
  868. case "Manual":
  869. SelectedGasStateType = GasPanelStateType.Manual;
  870. ManualEnable = true;
  871. break;
  872. case "Monitor":
  873. SelectedGasStateType = GasPanelStateType.Monitor;
  874. ManualEnable = true;
  875. break;
  876. case "Recipe":
  877. SelectedGasStateType = GasPanelStateType.Recipe;
  878. ManualEnable = false;
  879. break;
  880. default:
  881. break;
  882. }
  883. }
  884. protected override void OnActivate()
  885. {
  886. base.OnActivate();
  887. // EnableServiceControl = (bool)QueryDataClient.Instance.Service.GetConfig("System.IsServiceControlMode");
  888. // IsMfcNRInstalled = (bool)QueryDataClient.Instance.Service.GetConfig("PM1.MFC.MfcNR.IsMFCInstalled");
  889. }
  890. public void SetEditClick()
  891. {
  892. IsRecipeEdit = true;
  893. // EnableServiceControl = false;
  894. }
  895. protected override void OnDeactivate(bool close)
  896. {
  897. base.OnDeactivate(close);
  898. //IsManagerPermission = false;
  899. }
  900. public void SetManual()
  901. {
  902. if (!_manualCheckSelect)
  903. {
  904. _manualCheckSelect = !_manualCheckSelect;
  905. IsManagerPermission = true;
  906. EnablePLCPointControl = false;
  907. }
  908. else
  909. {
  910. IsManagerPermission = true;
  911. ManualCheck = false;
  912. ManumalCheckHide = true;
  913. _manualCheckSelect = !_manualCheckSelect;
  914. EnablePLCPointControl = true;
  915. }
  916. }
  917. public void OpenAll()
  918. {
  919. if (!VentValveData.IsOpen)
  920. InvokeClient.Instance.Service.DoOperation($"{VentValveData.UniqueName}.{AITValveOperation.GVTurnValve}", true);
  921. if (!PumpValveData.IsOpen)
  922. InvokeClient.Instance.Service.DoOperation($"{PumpValveData.UniqueName}.{AITValveOperation.GVTurnValve}", true);
  923. }
  924. public void CloseAll()
  925. {
  926. if (PumpValveData.IsOpen)
  927. InvokeClient.Instance.Service.DoOperation($"{PumpValveData.UniqueName}.{AITValveOperation.GVTurnValve}", false);
  928. if (VentValveData.IsOpen)
  929. InvokeClient.Instance.Service.DoOperation($"{VentValveData.UniqueName}.{AITValveOperation.GVTurnValve}", false);
  930. }
  931. private void PerformCmdSetMfcFlow(object param)
  932. {
  933. object[] args = (object[])param; //0:devicename, 1:operation, 2:args
  934. if (args.Length == 3)
  935. {
  936. InvokeClient.Instance.Service.DoOperation($"{args[0]}.{args[1]}", args[2]);
  937. }
  938. // SetCursorPos(0, 0);
  939. }
  940. private void PerformCmdSetMfmFlow(object param)
  941. {
  942. //object[] args = (object[])param; //0:devicename, 1:operation, 2:args
  943. //if (args.Length == 3)
  944. //{
  945. // InvokeClient.Instance.Service.DoOperation($"PM1.{args[0]}.{args[1]}", args[2]);
  946. //}
  947. //SetCursorPos(0, 0);
  948. }
  949. bool isSensorRecipeOK = false;
  950. Dictionary<string, object> oldresult;
  951. private Dictionary<string, object> ClearNotChangedValue(Dictionary<string, object> result)
  952. {
  953. Dictionary<string, object> temp = result;
  954. if (oldresult == null)
  955. {
  956. oldresult = result;
  957. }
  958. else
  959. {
  960. try
  961. {
  962. List<string> strkeys = new List<string>();
  963. foreach (var key in result.Keys)
  964. {
  965. if (_subscribedKeys.Contains(key) && oldresult.ContainsKey(key) && result.ContainsKey(key))
  966. {
  967. if (result[key].GetType() == typeof(AITValveData) && (((AITValveData)oldresult[key]).Feedback != ((AITValveData)result[key]).Feedback
  968. || ((AITValveData)oldresult[key]).VirtualFeedback != ((AITValveData)result[key]).VirtualFeedback))
  969. {
  970. strkeys.Add(key);
  971. }
  972. else if (result[key].GetType() == typeof(AITSensorData) && ((AITSensorData)oldresult[key]).Value != ((AITSensorData)result[key]).Value)
  973. {
  974. strkeys.Add(key);
  975. }
  976. else if (result[key].GetType() == typeof(AITMfcData) && (((AITMfcData)oldresult[key]).FeedBack != ((AITMfcData)result[key]).FeedBack ||
  977. ((AITMfcData)oldresult[key]).VirtualFeedBack != ((AITMfcData)result[key]).VirtualFeedBack) || ((AITMfcData)oldresult[key]).SetPoint != ((AITMfcData)result[key]).SetPoint)
  978. {
  979. strkeys.Add(key);
  980. }
  981. else if (result[key].GetType() == typeof(float) && (float)oldresult[key] == (float)result[key])
  982. {
  983. strkeys.Add(key);
  984. }
  985. else if (result[key].GetType() == typeof(int) && (int)oldresult[key] == (int)result[key])
  986. {
  987. strkeys.Add(key);
  988. }
  989. else if (result[key].GetType() == typeof(bool) && (bool)oldresult[key] == (bool)result[key])
  990. {
  991. strkeys.Add(key);
  992. }
  993. }
  994. }
  995. for (int i = 0; i < strkeys.Count; i++)
  996. {
  997. temp.Remove(strkeys[i]);
  998. }
  999. }
  1000. catch (Exception ex)
  1001. {
  1002. LOG.Error("由RT返回的数据更新失败" + "ClearNotChangedValue", ex);
  1003. }
  1004. }
  1005. return temp;
  1006. }
  1007. protected override void Poll()
  1008. {
  1009. if (_subscribedKeys.Count > 0)
  1010. {
  1011. Dictionary<string, object> result = QueryDataClient.Instance.Service.PollData(_subscribedKeys);
  1012. Dictionary<string, object> Tempresult = new Dictionary<string, object>(result);
  1013. if (SelectedGasStateType != GasPanelStateType.Monitor)
  1014. {
  1015. result = ClearNotChangedValue(result);
  1016. oldresult = Tempresult;
  1017. }
  1018. if (result == null)
  1019. {
  1020. LOG.Error("获取RT数据失败");
  1021. return;
  1022. }
  1023. if (result.Count != _subscribedKeys.Count)
  1024. {
  1025. string unknowKeys = string.Empty;
  1026. foreach (string key in _subscribedKeys)
  1027. {
  1028. if (!result.ContainsKey(key))
  1029. {
  1030. unknowKeys += key + "\r\n";
  1031. }
  1032. }
  1033. }
  1034. InvokeBeforeUpdateProperty(result);
  1035. UpdateValue(result);
  1036. Application.Current?.Dispatcher.Invoke(new Action(() =>
  1037. {
  1038. if (result.Count != 0)
  1039. {
  1040. InvokePropertyChanged();
  1041. }
  1042. InvokeAfterUpdateProperty(result);
  1043. }));
  1044. }
  1045. }
  1046. ///// <summary>
  1047. ///// 设置鼠标的坐标
  1048. ///// </summary>
  1049. ///// <param name="x">横坐标</param>
  1050. ///// <param name="y">纵坐标</param>
  1051. //[DllImport("User32")]
  1052. //public extern static void SetCursorPos(int x, int y);
  1053. protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
  1054. {
  1055. base.InvokeBeforeUpdateProperty(data);
  1056. }
  1057. protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
  1058. {
  1059. base.InvokeAfterUpdateProperty(data);
  1060. if (SensorRecipeOK != null && SensorRecipeOK.Value)
  1061. {
  1062. if (isSensorRecipeOK != SensorRecipeOK.Value)
  1063. {
  1064. _manualCheckSelect = false;
  1065. IsManagerPermission = true;
  1066. IsRecipeEdit = true;
  1067. // EnableServiceControl = false;
  1068. }
  1069. isSensorRecipeOK = SensorRecipeOK.Value;
  1070. }
  1071. MFCChangedUpdate();
  1072. }
  1073. private void MFCChangedUpdate()
  1074. {
  1075. if (MFC1.VirtualFeedBack != MFC1Data.VirtualFeedBack || MFC1.FeedBack != MFC1Data.FeedBack)
  1076. {
  1077. MFC1.VirtualFeedBack = MFC1Data.VirtualFeedBack;
  1078. MFC1.FeedBack = MFC1Data.FeedBack;
  1079. }
  1080. if (MFC2.VirtualFeedBack != MFC2Data.VirtualFeedBack || MFC2.FeedBack != MFC2Data.FeedBack)
  1081. {
  1082. MFC2.VirtualFeedBack = MFC2Data.VirtualFeedBack;
  1083. MFC2.FeedBack = MFC2Data.FeedBack;
  1084. }
  1085. if (MFC3.VirtualFeedBack != MFC3Data.VirtualFeedBack || MFC3.FeedBack != MFC3Data.FeedBack)
  1086. {
  1087. MFC3.VirtualFeedBack = MFC3Data.VirtualFeedBack;
  1088. MFC3.FeedBack = MFC3Data.FeedBack;
  1089. }
  1090. if (MFC4.VirtualFeedBack != MFC4Data.VirtualFeedBack || MFC4.FeedBack != MFC4Data.FeedBack)
  1091. {
  1092. MFC4.VirtualFeedBack = MFC4Data.VirtualFeedBack;
  1093. MFC4.FeedBack = MFC4Data.FeedBack;
  1094. }
  1095. if (MFC5.VirtualFeedBack != MFC5Data.VirtualFeedBack || MFC5.FeedBack != MFC5Data.FeedBack)
  1096. {
  1097. MFC5.VirtualFeedBack = MFC5Data.VirtualFeedBack;
  1098. MFC5.FeedBack = MFC5Data.FeedBack;
  1099. }
  1100. if (MFC6.VirtualFeedBack != MFC6Data.VirtualFeedBack || MFC6.FeedBack != MFC6Data.FeedBack)
  1101. {
  1102. MFC6.VirtualFeedBack = MFC6Data.VirtualFeedBack;
  1103. MFC6.FeedBack = MFC6Data.FeedBack;
  1104. }
  1105. if (MFC7.VirtualFeedBack != MFC7Data.VirtualFeedBack || MFC7.FeedBack != MFC7Data.FeedBack)
  1106. {
  1107. MFC7.VirtualFeedBack = MFC7Data.VirtualFeedBack;
  1108. MFC7.FeedBack = MFC7Data.FeedBack;
  1109. }
  1110. if (MFC8.VirtualFeedBack != MFC8Data.VirtualFeedBack || MFC8.FeedBack != MFC8Data.FeedBack)
  1111. {
  1112. MFC8.VirtualFeedBack = MFC8Data.VirtualFeedBack;
  1113. MFC8.FeedBack = MFC8Data.FeedBack;
  1114. }
  1115. if (MFC9.VirtualFeedBack != MFC9Data.VirtualFeedBack || MFC9.FeedBack != MFC9Data.FeedBack)
  1116. {
  1117. MFC9.VirtualFeedBack = MFC9Data.VirtualFeedBack;
  1118. MFC9.FeedBack = MFC9Data.FeedBack;
  1119. }
  1120. if (MFC10.VirtualFeedBack != MFC10Data.VirtualFeedBack || MFC10.FeedBack != MFC10Data.FeedBack)
  1121. {
  1122. MFC10.VirtualFeedBack = MFC10Data.VirtualFeedBack;
  1123. MFC10.FeedBack = MFC10Data.FeedBack;
  1124. }
  1125. if (MFC11.VirtualFeedBack != MFC11Data.VirtualFeedBack || MFC11.FeedBack != MFC11Data.FeedBack)
  1126. {
  1127. MFC11.VirtualFeedBack = MFC11Data.VirtualFeedBack;
  1128. MFC11.FeedBack = MFC11Data.FeedBack;
  1129. }
  1130. if (MFC12.VirtualFeedBack != MFC12Data.VirtualFeedBack || MFC12.FeedBack != MFC12Data.FeedBack)
  1131. {
  1132. MFC12.VirtualFeedBack = MFC12Data.VirtualFeedBack;
  1133. MFC12.FeedBack = MFC12Data.FeedBack;
  1134. }
  1135. if (MFC13.VirtualFeedBack != MFC13Data.VirtualFeedBack || MFC13.FeedBack != MFC13Data.FeedBack)
  1136. {
  1137. MFC13.VirtualFeedBack = MFC13Data.VirtualFeedBack;
  1138. MFC13.FeedBack = MFC13Data.FeedBack;
  1139. }
  1140. if (MFC14.VirtualFeedBack != MFC14Data.VirtualFeedBack || MFC14.FeedBack != MFC14Data.FeedBack)
  1141. {
  1142. MFC14.VirtualFeedBack = MFC14Data.VirtualFeedBack;
  1143. MFC14.FeedBack = MFC14Data.FeedBack;
  1144. }
  1145. if (MFC15.VirtualFeedBack != MFC15Data.VirtualFeedBack || MFC15.FeedBack != MFC15Data.FeedBack)
  1146. {
  1147. MFC15.VirtualFeedBack = MFC15Data.VirtualFeedBack;
  1148. MFC15.FeedBack = MFC15Data.FeedBack;
  1149. }
  1150. if (MFC16.VirtualFeedBack != MFC16Data.VirtualFeedBack || MFC16.FeedBack != MFC16Data.FeedBack)
  1151. {
  1152. MFC16.VirtualFeedBack = MFC16Data.VirtualFeedBack;
  1153. MFC16.FeedBack = MFC16Data.FeedBack;
  1154. }
  1155. }
  1156. public void SwichValue(string name)
  1157. {
  1158. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1159. var dialog = new SwitchValueDialog { };
  1160. dialog.IsOpen = true;
  1161. switch (name.ToUpper())
  1162. {
  1163. case "BWR":
  1164. dialog.IsOpen = ValveBWR.Feedback;
  1165. break;
  1166. case "DPR":
  1167. dialog.IsOpen = ValveDPR.Feedback;
  1168. break;
  1169. case "CEXH":
  1170. dialog.IsOpen = IsCEXHOn;
  1171. break;
  1172. case "F2":
  1173. dialog.IsOpen = IsF2ClnOn;
  1174. break;
  1175. case "HF":
  1176. dialog.IsOpen = IsHFClnOn;
  1177. break;
  1178. case "DEPO":
  1179. dialog.IsOpen = IsDEPOOn;
  1180. break;
  1181. }
  1182. dialog.Owner = WinOwner;
  1183. dialog.Topmost = true;
  1184. dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  1185. dialog.DeviceName = $"Swich {name}";
  1186. dialog.ShowDialog();
  1187. if ((bool)dialog.IsSave)
  1188. {
  1189. switch (name.ToUpper())
  1190. {
  1191. case "BWR":
  1192. InvokeClient.Instance.Service.DoOperation($"{ValveBWR.UniqueName}.{AITValveOperation.GVTurnValve}", dialog.IsOpen);
  1193. break;
  1194. case "DPR":
  1195. InvokeClient.Instance.Service.DoOperation($"{ValveDPR.UniqueName}.{AITValveOperation.GVTurnValve}", dialog.IsOpen);
  1196. break;
  1197. case "CEXH":
  1198. InvokeClient.Instance.Service.DoOperation($"PM1.SetCEXHEnable", dialog.IsOpen);
  1199. break;
  1200. case "F2":
  1201. InvokeClient.Instance.Service.DoOperation($"PM1.SetF2ClnEnable", dialog.IsOpen);
  1202. break;
  1203. case "HF":
  1204. InvokeClient.Instance.Service.DoOperation($"PM1.SetHFClnEnable", dialog.IsOpen);
  1205. break;
  1206. case "DEPO":
  1207. InvokeClient.Instance.Service.DoOperation($"PM1.SetDEPOEnable", dialog.IsOpen);
  1208. break;
  1209. }
  1210. }
  1211. }
  1212. public void SetEnable(string name)
  1213. {
  1214. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1215. var dialog = new SwitchValueDialog2 { };
  1216. dialog.IsOpen = true;
  1217. switch (name.ToUpper())
  1218. {
  1219. case "HTR1":
  1220. dialog.IsOpen = IsHTR1Enable;
  1221. break;
  1222. case "HTR2":
  1223. dialog.IsOpen = IsHTR2Enable;
  1224. break;
  1225. case "HTR3":
  1226. dialog.IsOpen = IsHTR3Enable;
  1227. break;
  1228. }
  1229. dialog.Owner = WinOwner;
  1230. dialog.Topmost = true;
  1231. dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen;
  1232. dialog.DeviceName = $"Swich {name}";
  1233. dialog.ShowDialog();
  1234. if ((bool)dialog.IsSave)
  1235. {
  1236. switch (name.ToUpper())
  1237. {
  1238. case "HTR1":
  1239. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR1Enable", dialog.IsOpen);
  1240. break;
  1241. case "HTR2":
  1242. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR2Enable", dialog.IsOpen);
  1243. break;
  1244. case "HTR3":
  1245. InvokeClient.Instance.Service.DoOperation($"PM1.SetHTR3Enable", dialog.IsOpen);
  1246. break;
  1247. }
  1248. }
  1249. }
  1250. public void SelectPump(string _pumpname)
  1251. {
  1252. if (SelectedGasStateType == GasPanelStateType.Monitor || SelectedGasStateType == GasPanelStateType.Recipe) return;
  1253. if (!DialogBox.Confirm($"Are you sure change {_pumpname} status?"))
  1254. return;
  1255. if (_pumpname == "AUC")
  1256. {
  1257. InvokeClient.Instance.Service.DoOperation($"{AUCPump.UniqueName}.{AITValveOperation.GVTurnValve}", !AUCPump.Feedback);
  1258. }
  1259. if (_pumpname == "AGV")
  1260. {
  1261. InvokeClient.Instance.Service.DoOperation($"{AGVPump.UniqueName}.{AITValveOperation.GVTurnValve}", !AGVPump.Feedback);
  1262. }
  1263. if (_pumpname == "Both")
  1264. {
  1265. InvokeClient.Instance.Service.DoOperation($"{BothPump.UniqueName}.{AITValveOperation.GVTurnValve}", !BothPump.Feedback);
  1266. }
  1267. }
  1268. }
  1269. }