OIHelper.cs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. namespace OINA.Extender.WPF.Testharness
  2. {
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.IO;
  6. using OINA.Extender;
  7. using OINA.Extender.Acquisition.Ed;
  8. using OINA.Extender.Acquisition.Image;
  9. using OINA.Extender.Acquisition.Quant;
  10. using OINA.Extender.DetectorControl;
  11. using OINA.Extender.MonitorControl;
  12. using OINA.Extender.Processing;
  13. using OINA.Extender.Processing.Ed;
  14. using OINA.Extender.Processing.Quant;
  15. /// <summary>
  16. /// OI Helper Static Class
  17. /// </summary>
  18. public static class OIHelper
  19. {
  20. /// <summary>
  21. /// IEdSpectrumAcquisitionController object
  22. /// </summary>
  23. private static IEdSpectrumAcquisitionController edSpectrumController;
  24. /// <summary>
  25. /// Controller for quant calibration
  26. /// </summary>
  27. private static IQuantCalibrationController quantCalibrationController;
  28. /// <summary>
  29. /// Settings for quant calibration
  30. /// </summary>
  31. private static IQuantCalibrationSettings quantCalibrationSettings;
  32. /// <summary>
  33. /// IEdSpectrumSettings object
  34. /// </summary>
  35. private static IEdSpectrumSettings edSpectrumSettings;
  36. /// <summary>
  37. /// IEdSpectrumProcessing object
  38. /// </summary>
  39. private static IEdSpectrumProcessing edSpectrumProcessing;
  40. /// <summary>
  41. /// IAutoIdSettings object
  42. /// </summary>
  43. private static IAutoIdSettings edAutoIdSettings;
  44. /// <summary>
  45. /// Semquantsettings object
  46. /// </summary>
  47. private static ISEMQuantSettings semQuantSettings;
  48. /// <summary>
  49. /// IMonitoringController object
  50. /// </summary>
  51. private static IMonitoringController monitoringController;
  52. /// <summary>
  53. /// IImageAcquisitionController object
  54. /// </summary>
  55. private static IImageAcquisitionController imageController;
  56. /// <summary>
  57. /// IImageSettings object
  58. /// </summary>
  59. private static IImageAcquisitionSettings imageAcquisitionSettings;
  60. /// <summary>
  61. /// IEdDetectorControl object
  62. /// </summary>
  63. private static IEdDetectorControl edDetectorControl;
  64. /// <summary>
  65. /// Gets EdSpectrum Acquisition Controller
  66. /// </summary>
  67. public static IEdSpectrumAcquisitionController EdSpectrumAcquisitionController
  68. {
  69. get
  70. {
  71. if (edSpectrumController == null)
  72. {
  73. edSpectrumController = AcquireFactory.CreateEdSpectrumServer();
  74. }
  75. return edSpectrumController;
  76. }
  77. }
  78. /// <summary>
  79. /// Gets QuantCalibrationController Controller
  80. /// </summary>
  81. public static IQuantCalibrationController QuantCalibrationController
  82. {
  83. get
  84. {
  85. if (quantCalibrationController == null)
  86. {
  87. quantCalibrationController = AcquireFactory.CreateQuantCalibrationController();
  88. }
  89. return quantCalibrationController;
  90. }
  91. }
  92. /// <summary>
  93. /// Gets QuantCalibrationSettings Settings
  94. /// </summary>
  95. public static IQuantCalibrationSettings QuantCalibrationSettings
  96. {
  97. get
  98. {
  99. if (quantCalibrationSettings == null)
  100. {
  101. quantCalibrationSettings = AcquireFactory.CreateQuantCalibrationSettings();
  102. }
  103. return quantCalibrationSettings;
  104. }
  105. }
  106. /// <summary>
  107. /// Gets EdSpectrum Settings
  108. /// </summary>
  109. public static IEdSpectrumSettings EdSpectrumSettings
  110. {
  111. get
  112. {
  113. if (edSpectrumSettings == null)
  114. {
  115. edSpectrumSettings = AcquireFactory.CreateEdSpectrumSettings();
  116. }
  117. return edSpectrumSettings;
  118. }
  119. }
  120. /// <summary>
  121. /// Gets EdSpectrum Processing
  122. /// </summary>
  123. public static IEdSpectrumProcessing EdSpectrumProcessing
  124. {
  125. get
  126. {
  127. if (edSpectrumProcessing == null)
  128. {
  129. edSpectrumProcessing = ProcessingFactory.CreateSpectrumProcessing();
  130. }
  131. return edSpectrumProcessing;
  132. }
  133. }
  134. /// <summary>
  135. /// Gets AutoId Settings
  136. /// </summary>
  137. public static IAutoIdSettings AutoIdSettings
  138. {
  139. get
  140. {
  141. if (edAutoIdSettings == null)
  142. {
  143. edAutoIdSettings = ProcessingFactory.CreateAutoIdSettings();
  144. }
  145. return edAutoIdSettings;
  146. }
  147. }
  148. /// <summary>
  149. /// Gets SEM Quant Settings
  150. /// </summary>
  151. public static ISEMQuantSettings SEMQuantSettings
  152. {
  153. get
  154. {
  155. if (semQuantSettings == null)
  156. {
  157. semQuantSettings = ProcessingFactory.CreateSEMQuantSettings();
  158. }
  159. return semQuantSettings;
  160. }
  161. }
  162. /// <summary>
  163. /// Gets Monitoring Controller
  164. /// </summary>
  165. public static IMonitoringController MonitoringController
  166. {
  167. get
  168. {
  169. if (monitoringController == null)
  170. {
  171. monitoringController = AcquireFactory.CreateMonitorControl();
  172. }
  173. return monitoringController;
  174. }
  175. }
  176. /// <summary>
  177. /// Gets Image Acquisition Controller
  178. /// </summary>
  179. public static IImageAcquisitionController ImageAcquisitionController
  180. {
  181. get
  182. {
  183. if (imageController == null)
  184. {
  185. imageController = AcquireFactory.CreateImageServer();
  186. }
  187. return imageController;
  188. }
  189. }
  190. /// <summary>
  191. /// Gets Image Acquisition Settings
  192. /// </summary>
  193. public static IImageAcquisitionSettings ImageSettings
  194. {
  195. get
  196. {
  197. if (imageAcquisitionSettings == null)
  198. {
  199. imageAcquisitionSettings = AcquireFactory.CreateImageSettings();
  200. }
  201. return imageAcquisitionSettings;
  202. }
  203. }
  204. /// <summary>
  205. /// Gets Image Acquisition Settings
  206. /// </summary>
  207. public static IEdDetectorControl EDDetectorControl
  208. {
  209. get
  210. {
  211. if (edDetectorControl == null)
  212. {
  213. edDetectorControl = AcquireFactory.CreateEdDetectorControl()[0];
  214. }
  215. return edDetectorControl;
  216. }
  217. }
  218. /// <summary>
  219. /// Read a file to a byte array
  220. /// </summary>
  221. /// <param name="filePath">file path</param>
  222. /// <returns>byte[] data</returns>
  223. public static byte[] FileToByteArray(string filePath)
  224. {
  225. if (!File.Exists(filePath))
  226. {
  227. throw new System.InvalidOperationException("File does not exists!");
  228. }
  229. FileStream fs = File.OpenRead(filePath);
  230. {
  231. byte[] data = new byte[fs.Length];
  232. fs.Read(data, 0, (int)fs.Length);
  233. fs.Close();
  234. return data;
  235. }
  236. }
  237. /// <summary>
  238. /// Save a byte array to a file
  239. /// </summary>
  240. /// <param name="filePath">file path</param>
  241. /// <param name="data">data</param>
  242. public static void ByteArrayToFile(string filePath, byte[] data)
  243. {
  244. // If file already exists, delete it.
  245. if (File.Exists(filePath))
  246. {
  247. File.Delete(filePath);
  248. }
  249. using (FileStream fs = File.Create(filePath))
  250. {
  251. fs.Write(data, 0, data.Length);
  252. }
  253. }
  254. /// <summary>
  255. /// Gets a collection of scan sizes that are allowed by the pixel sizes of the ScanCapabilities.
  256. /// </summary>
  257. /// <param name="minimumPixelSize">The Minimum Pixel Size</param>
  258. /// <param name="maximumPixelSize">The Maximum Pixel Size</param>
  259. /// <returns>An ICollection[double] of the scan sizes</returns>
  260. internal static ICollection<double> GetScanSizes(double minimumPixelSize, double maximumPixelSize)
  261. {
  262. var scanSizesCollection = new Collection<double>();
  263. int minScanSize = (int)(1d / maximumPixelSize),
  264. maxScanSize = (int)(1d / minimumPixelSize);
  265. int scanSize = minScanSize;
  266. while (scanSize <= maxScanSize)
  267. {
  268. scanSizesCollection.Add(scanSize);
  269. scanSize *= 2;
  270. }
  271. return scanSizesCollection;
  272. }
  273. }
  274. }