OTSDefaultParam.cs 9.4 KB

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