GasPanelViewModel.cs 51 KB

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