OTSDefaultParam.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  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. COTSGeneralParam m_GenParam;
  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. // file pathname
  31. protected string m_strPathName;
  32. const int SCREEN_WIDTH_MAG100 = 1142;
  33. const long STAGE_DATA_X_AXIS_START = -100000;
  34. const long STAGE_DATA_X_AXIS_END = 100000;
  35. //stage data y start
  36. const long STAGE_DATA_Y_AXIS_START = -100000;
  37. //stage data y end
  38. const long STAGE_DATA_Y_AXIS_END = 100000;
  39. const String STR_MEASURE_PREFERENCE_FILE_NAME = "OTSProgMgrParam.pmf";
  40. // sample name
  41. const String SAMPLE_NAME = "Sample";
  42. // measure switch
  43. const bool MEASURE_SWITCH = true;
  44. const String STR_COFIGPATH = "Config";
  45. const String STR_PROG_DATA = "ProData";
  46. const String STR_SYSTEM_DATA = "SysData";
  47. public OTS_SysType_ID SystemTypeId { get => systemTypeId; set => systemTypeId = value; }
  48. public CSpecialGrayRangeParam SpecialGrayRangeParam { get => m_pSpecialGrayRangeParam; set => m_pSpecialGrayRangeParam = value; }
  49. public COTSDefaultParam()
  50. {
  51. Init();
  52. }
  53. public COTSImgScanPrm GetImageScanParam() { return m_pImageScanParam; }
  54. public COTSImageProcParam GetImageProcParam() { return m_pImageProcParam; }
  55. public COTSXRayParam GetXRayParam() { return m_pXRayParam; }
  56. public CSEMStageData GetStageDataParam() { return m_pStageDataParam; }
  57. public COTSGeneralParam GetGenParam() { return m_GenParam; }
  58. public void SetGenParam(COTSGeneralParam a_cOTSGeneralParam) { m_GenParam=a_cOTSGeneralParam; }
  59. public void SetImageScanParam(COTSImgScanPrm a_cOTSImgScanPrm) { m_pImageScanParam= a_cOTSImgScanPrm; }
  60. public void SetImageProcParam(COTSImageProcParam a_cOTSImageProcParam) { m_pImageProcParam=a_cOTSImageProcParam; }
  61. public void SetXRayParam(COTSXRayParam a_cOTSXRayParam) { m_pXRayParam=a_cOTSXRayParam; }
  62. public void SetStageDataParam(CSEMStageData a_cSEMStageData) { m_pStageDataParam=a_cSEMStageData; }
  63. public bool LoadInfoFromProgMgrFile()
  64. {
  65. // get software pack measure preference file pathname
  66. string strProgMgrParamFileName = GetOTSMeasurePrefFileName();
  67. // program manager param file exists?
  68. if (File.Exists(strProgMgrParamFileName))
  69. {
  70. // tried to load it
  71. if (!Load(strProgMgrParamFileName))
  72. {
  73. // failed to load the license info file
  74. 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);
  75. return false;
  76. }
  77. }
  78. return true;
  79. }
  80. public string GetSysTypeName()
  81. {
  82. return systemTypeId.ToString();
  83. }
  84. public OTS_SysType_ID GetSysType()
  85. {
  86. return systemTypeId;
  87. }
  88. public RunMode GetRunMode()
  89. {
  90. return m_runmode;
  91. }
  92. public static string GetMsrParamFileFolderName()
  93. {
  94. return ".\\Config\\SysData\\";
  95. }
  96. public static string GetPartSTDLibFolderName()
  97. {
  98. return ".\\Config\\SysData\\";
  99. }
  100. // get software pack preference file path name
  101. public String GetOTSMeasurePrefFileName()
  102. {
  103. // get software package system data pathname
  104. String strOTSPackSysDataPathName = GetOTSSysDataPathName();
  105. String strOTSPackProgMgrPathName = strOTSPackSysDataPathName + STR_MEASURE_PREFERENCE_FILE_NAME;
  106. // return software package license file pathname
  107. return strOTSPackProgMgrPathName;
  108. }
  109. // get software pack system data path
  110. private String GetOTSSysDataPathName()//deprecated,since we have build one new solution for the particle system.
  111. {
  112. // get common data pathname string
  113. String strCommonDataPathName = GetOSCommonDataPathName();
  114. // software package system data pathname
  115. String strOTSSysDataPathName = strCommonDataPathName + STR_COFIGPATH + "\\" + STR_SYSTEM_DATA + "\\";
  116. // return software package system data path
  117. return strOTSSysDataPathName;
  118. }
  119. // get system common data folder pathname
  120. // return "" if failed
  121. private String GetOSCommonDataPathName()
  122. {
  123. return ".\\";
  124. }
  125. // safe parameters into program preference file
  126. public bool SaveInfoToProgMgrFile()
  127. {
  128. // get software pack measure preference file pathname
  129. string strProgMgrParamFileFullName = GetOTSMeasurePrefFileName();
  130. // save parameters into program preference file
  131. if (!Save(strProgMgrParamFileFullName))
  132. {
  133. // failed to save program preference file, return FALSE
  134. logger.Info("SaveInfoToProgMgrFile: failed to save program preference file."); //LogErrorTrace(__FILE__, __LINE__, _T("SaveInfoToProgMgrFile: failed to save program preference file."));
  135. return false;
  136. }
  137. // ok, return TRUE
  138. return true;
  139. }
  140. // NOTE: be sure a_strPathName is a valid file pathname
  141. private bool Load(string a_strPathName)
  142. {
  143. // file pathname
  144. m_strPathName = a_strPathName;
  145. m_pStageDataParam = new CSEMStageData();
  146. m_GenParam = new COTSGeneralParam();
  147. // image scan parameter
  148. m_pImageScanParam = new COTSImgScanPrm();
  149. // image process parameter
  150. m_pImageProcParam = new COTSImageProcParam();
  151. // X-Ray parameter
  152. m_pXRayParam = new COTSXRayParam();
  153. m_pSpecialGrayRangeParam=new CSpecialGrayRangeParam();
  154. XmlDocument doc = new XmlDocument();
  155. //载入xml文件
  156. doc.Load(a_strPathName);
  157. XmlNode root = doc.SelectSingleNode("XMLData");
  158. Serialize(false, doc, root);
  159. return true;
  160. }
  161. // save program manager file
  162. private bool Save(string a_strPathName)
  163. {
  164. //ASSERT(m_pStageData);
  165. //Debug.Assert(m_pParam);
  166. XmlDocument doc = new XmlDocument();
  167. doc.Load(a_strPathName);
  168. doc.RemoveAll();
  169. //添加xml文件头申明
  170. XmlDeclaration xmldecl = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
  171. doc.AppendChild(xmldecl);
  172. XmlElement rootNode = doc.CreateElement("XMLData");
  173. doc.AppendChild(rootNode);
  174. Serialize(true, doc, rootNode);
  175. try
  176. {
  177. doc.Save(a_strPathName);
  178. }
  179. catch
  180. {
  181. return false;
  182. }
  183. // file pathname
  184. m_strPathName = a_strPathName;
  185. // ok, return TRUE
  186. return true;
  187. }
  188. // serialization
  189. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  190. {
  191. xString xSysType = new xString();
  192. xString xRunMode = new xString();
  193. Slo slo = new Slo();
  194. slo.Register("SysType", xSysType);
  195. slo.Register("RunMode", xRunMode);
  196. slo.Register("StageData", m_pStageDataParam);
  197. slo.Register("GenParam", m_GenParam);
  198. slo.Register("ImageScanParam", m_pImageScanParam);
  199. slo.Register("SpecialGrayParam", m_pSpecialGrayRangeParam);
  200. slo.Register("ImageProcParam", m_pImageProcParam);
  201. slo.Register("XrayParam", m_pXRayParam);
  202. if (isStoring)
  203. {
  204. xSysType.AssignValue(systemTypeId.ToString());
  205. xRunMode.AssignValue(m_runmode.ToString());
  206. slo.Serialize(true, classDoc, rootNode);
  207. }
  208. else
  209. {
  210. slo.Serialize(false, classDoc, rootNode);
  211. switch (xSysType.value())
  212. {
  213. case "IncA":
  214. this.systemTypeId = OTS_SysType_ID.IncA;
  215. break;
  216. case "TCCleannessA":
  217. this.systemTypeId = OTS_SysType_ID.TCCleannessA;
  218. break;
  219. case "BatteryCleannessA":
  220. this.systemTypeId = OTS_SysType_ID.BatteryCleannessA;
  221. break;
  222. default:
  223. break;
  224. }
  225. switch (xRunMode.value())
  226. {
  227. case "ProfessionalMode":
  228. this.m_runmode = otsdataconst.RunMode.ProfessionalMode;
  229. break;
  230. case "PlainMode":
  231. this.m_runmode = RunMode.PlainMode;
  232. break;
  233. default:
  234. break;
  235. }
  236. }
  237. }
  238. protected void Init()
  239. {
  240. m_strPathName = "";
  241. }
  242. // duplication
  243. protected void Duplicate(COTSDefaultParam a_oSource)
  244. {
  245. // initialization
  246. Init();
  247. // copy data over
  248. m_strPathName = a_oSource.m_strPathName;
  249. m_GenParam = new COTSGeneralParam(a_oSource.m_GenParam);
  250. }
  251. }
  252. }