OTSDefaultParam.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Xml;
  8. using OTSDataType;
  9. using OTSMeasureApp._0_OTSModel.OTSDataType;
  10. using static OTSDataType.otsdataconst;
  11. namespace OTSModelSharp
  12. {
  13. public class COTSDefaultParam : ISlo
  14. {
  15. protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
  16. // soft pack id
  17. private otsdataconst.OTS_SysType_ID systemTypeId;
  18. public otsdataconst.RunMode m_runmode;
  19. // SEM stage data
  20. CSEMStageData m_pStageDataParam;
  21. // general parameter
  22. COTSCommonParam m_CommonParam;
  23. // image scan parameter
  24. COTSImgScanPrm m_pImageScanParam;
  25. CSpecialGrayRangeParam m_pSpecialGrayRangeParam;
  26. // image process parameter
  27. COTSImageProcParam m_pImageProcParam;
  28. // X-Ray parameter
  29. COTSXRayParam m_pXRayParam;
  30. CBrightnessContrastRegulateParam m_pBrightnessContrastRegulateParam;
  31. // file pathname
  32. protected string m_strPathName;
  33. const int SCREEN_WIDTH_MAG100 = 1142;
  34. const long STAGE_DATA_X_AXIS_START = -100000;
  35. const long STAGE_DATA_X_AXIS_END = 100000;
  36. //stage data y start
  37. const long STAGE_DATA_Y_AXIS_START = -100000;
  38. //stage data y end
  39. const long STAGE_DATA_Y_AXIS_END = 100000;
  40. const String STR_MEASURE_PREFERENCE_FILE_NAME = "OTSProgMgrParam.pmf";
  41. // sample name
  42. const String SAMPLE_NAME = "Sample";
  43. // measure switch
  44. const bool MEASURE_SWITCH = true;
  45. const String STR_COFIGPATH = "Config";
  46. const String STR_PROG_DATA = "ProData";
  47. const String STR_SYSTEM_DATA = "SysData";
  48. public OTS_SysType_ID SystemTypeId { get => systemTypeId; set => systemTypeId = value; }
  49. public CSpecialGrayRangeParam SpecialGrayRangeParam { get => m_pSpecialGrayRangeParam; set => m_pSpecialGrayRangeParam = value; }
  50. internal CBrightnessContrastRegulateParam BrightnessContrastRegulationParam { get => m_pBrightnessContrastRegulateParam; set => m_pBrightnessContrastRegulateParam = value; }
  51. public COTSDefaultParam()
  52. {
  53. Init();
  54. }
  55. //样品台文件(读取样品台数据等)
  56. private CStageHolderParam stageHolderParam = null;
  57. public COTSImgScanPrm GetImageScanParam() { return m_pImageScanParam; }
  58. public COTSImageProcParam GetImageProcParam() { return m_pImageProcParam; }
  59. public COTSXRayParam GetXRayParam() { return m_pXRayParam; }
  60. public CSEMStageData GetStageDataParam() { return m_pStageDataParam; }
  61. public COTSCommonParam GetCommonParam() { return m_CommonParam; }
  62. public void SetCommonParam(COTSCommonParam a_cOTSGeneralParam) { m_CommonParam=a_cOTSGeneralParam; }
  63. public void SetImageScanParam(COTSImgScanPrm a_cOTSImgScanPrm) { m_pImageScanParam= a_cOTSImgScanPrm; }
  64. public void SetImageProcParam(COTSImageProcParam a_cOTSImageProcParam) { m_pImageProcParam=a_cOTSImageProcParam; }
  65. public void SetXRayParam(COTSXRayParam a_cOTSXRayParam) { m_pXRayParam=a_cOTSXRayParam; }
  66. public void SetStageDataParam(CSEMStageData a_cSEMStageData) { m_pStageDataParam=a_cSEMStageData; }
  67. public CStageHolderParam GetStageHolderParam()
  68. {
  69. return stageHolderParam;
  70. }
  71. public void SetStageHolderParam(CStageHolderParam value)
  72. {
  73. stageHolderParam = value;
  74. }
  75. public bool LoadInfoFromProgMgrFile()
  76. {
  77. // get software pack measure preference file pathname
  78. string strProgMgrParamFileName = GetOTSMeasurePrefFileName();
  79. // program manager param file exists?
  80. if (File.Exists(strProgMgrParamFileName))
  81. {
  82. // tried to load it
  83. if (!Load(strProgMgrParamFileName))
  84. {
  85. // failed to load the license info file
  86. logger.Info("LoadLicenseInfoFile: failed to load license info file. pathname:"+strProgMgrParamFileName+"."); //LogErrorTrace(__FILE__, __LINE__, _T("LoadLicenseInfoFile: failed to load license info file. pathname: %s"), strProgMgrParamFilePathName);
  87. return false;
  88. }
  89. }
  90. LoadStageParamFile();
  91. return true;
  92. }
  93. //检查参数样品台文件是否存在
  94. public bool LoadStageParamFile()
  95. {
  96. SetStageHolderParam(new CStageHolderParam());
  97. // 加载样品台文件; \Config\SysData\OTSStage.stg
  98. if (!GetStageHolderParam().Load(true, false))
  99. {
  100. return false;
  101. }
  102. return true;
  103. }
  104. public string GetSysTypeName()
  105. {
  106. return systemTypeId.ToString();
  107. }
  108. public OTS_SysType_ID GetSysType()
  109. {
  110. return systemTypeId;
  111. }
  112. public RunMode GetRunMode()
  113. {
  114. return m_runmode;
  115. }
  116. public static string GetMsrParamFileFolderName()
  117. {
  118. return ".\\Config\\SysData\\";
  119. }
  120. public static string GetPartSTDLibFolderName()
  121. {
  122. return ".\\Config\\SysData\\";
  123. }
  124. // get software pack preference file path name
  125. public String GetOTSMeasurePrefFileName()
  126. {
  127. // get software package system data pathname
  128. String strOTSPackSysDataPathName = GetOTSSysDataPathName();
  129. String strOTSPackProgMgrPathName = strOTSPackSysDataPathName + STR_MEASURE_PREFERENCE_FILE_NAME;
  130. // return software package license file pathname
  131. return strOTSPackProgMgrPathName;
  132. }
  133. // get software pack system data path
  134. private String GetOTSSysDataPathName()//deprecated,since we have build one new solution for the particle system.
  135. {
  136. // get common data pathname string
  137. String strCommonDataPathName = GetOSCommonDataPathName();
  138. // software package system data pathname
  139. String strOTSSysDataPathName = strCommonDataPathName + STR_COFIGPATH + "\\" + STR_SYSTEM_DATA + "\\";
  140. // return software package system data path
  141. return strOTSSysDataPathName;
  142. }
  143. // get system common data folder pathname
  144. // return "" if failed
  145. private String GetOSCommonDataPathName()
  146. {
  147. return ".\\";
  148. }
  149. // safe parameters into program preference file
  150. public bool SaveInfoToProgMgrFile()
  151. {
  152. // get software pack measure preference file pathname
  153. string strProgMgrParamFileFullName = GetOTSMeasurePrefFileName();
  154. // save parameters into program preference file
  155. if (!Save(strProgMgrParamFileFullName))
  156. {
  157. // failed to save program preference file, return FALSE
  158. logger.Info("SaveInfoToProgMgrFile: failed to save program preference file."); //LogErrorTrace(__FILE__, __LINE__, _T("SaveInfoToProgMgrFile: failed to save program preference file."));
  159. return false;
  160. }
  161. // ok, return TRUE
  162. return true;
  163. }
  164. // NOTE: be sure a_strPathName is a valid file pathname
  165. private bool Load(string a_strPathName)
  166. {
  167. // file pathname
  168. m_strPathName = a_strPathName;
  169. m_pStageDataParam = new CSEMStageData();
  170. m_CommonParam = new COTSCommonParam();
  171. // image scan parameter
  172. m_pImageScanParam = new COTSImgScanPrm();
  173. // image process parameter
  174. m_pImageProcParam = new COTSImageProcParam();
  175. // X-Ray parameter
  176. m_pXRayParam = new COTSXRayParam();
  177. m_pSpecialGrayRangeParam=new CSpecialGrayRangeParam();
  178. m_pBrightnessContrastRegulateParam = new CBrightnessContrastRegulateParam();
  179. XmlDocument doc = new XmlDocument();
  180. //载入xml文件
  181. doc.Load(a_strPathName);
  182. XmlNode root = doc.SelectSingleNode("XMLData");
  183. Serialize(false, doc, root);
  184. return true;
  185. }
  186. // save program manager file
  187. private bool Save(string a_strPathName)
  188. {
  189. //ASSERT(m_pStageData);
  190. //Debug.Assert(m_pParam);
  191. XmlDocument doc = new XmlDocument();
  192. doc.Load(a_strPathName);
  193. doc.RemoveAll();
  194. //添加xml文件头申明
  195. XmlDeclaration xmldecl = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
  196. doc.AppendChild(xmldecl);
  197. XmlElement rootNode = doc.CreateElement("XMLData");
  198. doc.AppendChild(rootNode);
  199. Serialize(true, doc, rootNode);
  200. try
  201. {
  202. doc.Save(a_strPathName);
  203. }
  204. catch
  205. {
  206. return false;
  207. }
  208. // file pathname
  209. m_strPathName = a_strPathName;
  210. // ok, return TRUE
  211. return true;
  212. }
  213. // serialization
  214. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  215. {
  216. xString xSysType = new xString();
  217. xString xRunMode = new xString();
  218. Slo slo = new Slo();
  219. slo.Register("SysType", xSysType);
  220. slo.Register("RunMode", xRunMode);
  221. slo.Register("StageData", m_pStageDataParam);
  222. slo.Register("GenParam", m_CommonParam);
  223. slo.Register("ImageScanParam", m_pImageScanParam);
  224. slo.Register("SpecialGrayParam", m_pSpecialGrayRangeParam);
  225. slo.Register("BrightnessContrastRegulateParam", m_pBrightnessContrastRegulateParam);
  226. slo.Register("ImageProcParam", m_pImageProcParam);
  227. slo.Register("XrayParam", m_pXRayParam);
  228. if (isStoring)
  229. {
  230. xSysType.AssignValue(systemTypeId.ToString());
  231. xRunMode.AssignValue(m_runmode.ToString());
  232. slo.Serialize(true, classDoc, rootNode);
  233. }
  234. else
  235. {
  236. slo.Serialize(false, classDoc, rootNode);
  237. switch (xSysType.value())
  238. {
  239. case "IncA":
  240. this.systemTypeId = OTS_SysType_ID.IncA;
  241. break;
  242. case "TCCleannessA":
  243. this.systemTypeId = OTS_SysType_ID.TCCleannessA;
  244. break;
  245. case "BatteryCleannessA":
  246. this.systemTypeId = OTS_SysType_ID.BatteryCleannessA;
  247. break;
  248. default:
  249. break;
  250. }
  251. switch (xRunMode.value())
  252. {
  253. case "ProfessionalMode":
  254. this.m_runmode = otsdataconst.RunMode.ProfessionalMode;
  255. break;
  256. case "PlainMode":
  257. this.m_runmode = RunMode.PlainMode;
  258. break;
  259. default:
  260. break;
  261. }
  262. }
  263. }
  264. protected void Init()
  265. {
  266. m_strPathName = "";
  267. }
  268. // duplication
  269. protected void Duplicate(COTSDefaultParam a_oSource)
  270. {
  271. // initialization
  272. Init();
  273. // copy data over
  274. m_strPathName = a_oSource.m_strPathName;
  275. m_CommonParam = new COTSCommonParam(a_oSource.m_CommonParam);
  276. }
  277. }
  278. }