EfemClient.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using Aitex.Core.Common;
  2. using Aitex.Core.Util;
  3. using Aitex.Core.WCF;
  4. using MECF.Framework.Common.Equipment;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Common.WcfService.Efem
  12. {
  13. public class EfemClient : Singleton<EfemClient>
  14. {
  15. public bool InProcess { get; set; }
  16. private IEfemService _service;
  17. public IEfemService Service
  18. {
  19. get
  20. {
  21. if (_service == null)
  22. {
  23. if (InProcess)
  24. _service = new EfemService();
  25. else
  26. _service = new EfemServiceClient();
  27. }
  28. return _service;
  29. }
  30. }
  31. }
  32. /// <summary>
  33. /// ServiceClientWrapper是一个将service接口调用的函数 本质上是调用接口实现函数的功能
  34. ///
  35. /// </summary>
  36. public class EfemServiceClient : ServiceClientWrapper<IEfemService>, IEfemService
  37. {
  38. /// <summary>
  39. /// 注意 前面一个是Client的名字 后面一个是Service的名字 都要和App.Config里的内容一致
  40. /// </summary>
  41. public EfemServiceClient()
  42. : base("Client_IEfemService", "EfemService")
  43. {
  44. Trace.WriteLine("Client_IEfemService 初始化");
  45. }
  46. public string EfemCmd(string module, params object[] args)
  47. {
  48. string result = null;
  49. Invoke(svc => { result = svc.EfemCmd(module, args); });//svc最终调用的是继承类
  50. return result;
  51. }
  52. public string GetRTstate()
  53. {
  54. string result = null;
  55. Invoke(svc => { result = svc.GetRTstate(); });
  56. return result;
  57. }
  58. public string SendRTMsg(string RTMsg)
  59. {
  60. string result = null;
  61. Invoke(svc => { result = svc.SendRTMsg(RTMsg); });
  62. return result;
  63. }
  64. public bool MoveWafer(ModuleName source, int source_slot, ModuleName desitation, int desitation_slot, WaferSize size)
  65. {
  66. bool result = false;
  67. Invoke(svc => { result = svc.MoveWafer(source, source_slot, desitation, desitation_slot, size); });
  68. return result;
  69. }
  70. public bool CreateWafer(ModuleName module, int slot, WaferSize size)
  71. {
  72. bool result = false;
  73. Invoke(svc => { result = svc.CreateWafer( module, slot, size); });
  74. return result;
  75. }
  76. public bool CreateLPSingleWafer(ModuleName module, int slot, WaferSize size)
  77. {
  78. bool result = false;
  79. Invoke(svc => { result = svc.CreateLPSingleWafer(module, slot, size); });
  80. return result;
  81. }
  82. public bool DeleteWafer(ModuleName module, int slot, WaferSize size)
  83. {
  84. bool result = false;
  85. Invoke(svc => { result = svc.DeleteWafer(module, slot, size); });
  86. return result;
  87. }
  88. public WaferInfo[] GetWafer(ModuleName module)
  89. {
  90. WaferInfo[] result = null;
  91. Invoke(svc => { result = svc.GetWafer(module); });
  92. return result;
  93. }
  94. public bool LoadPortCmd(string LoadPortID, string LoadMsg)
  95. {
  96. bool result = false;
  97. Invoke(svc => { result = svc.LoadPortCmd(LoadPortID, LoadMsg); });
  98. return result;
  99. }
  100. public bool ClearLog()
  101. {
  102. bool result = false;
  103. Invoke(svc => { result = svc.ClearLog(); });
  104. return result;
  105. }
  106. public bool CreateBFSingleWafer(ModuleName module, int slot, WaferSize size)
  107. {
  108. bool result = false;
  109. Invoke(svc => { result = svc.CreateBFSingleWafer(module, slot, size); });
  110. return result;
  111. }
  112. }
  113. }