OTSSampleData.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. using OTSDataType;
  2. using OTSModelSharp.ResourceManage;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace OTSMeasureApp
  11. {
  12. enum OTS_X_AXIS_DIRECTION
  13. {
  14. LEFT_TOWARD = 0,
  15. RIGHT_TOWARD = 1
  16. };
  17. enum OTS_Y_AXIS_DIRECTION
  18. {
  19. UP_TOWARD = 0,
  20. DOWN_TOWARD = 1
  21. };
  22. //样品孔信息,包括样品孔名称,样品孔形状,样品口坐标
  23. public class OTSSampleHoleInfo
  24. {
  25. public String sSHoleName; //样品孔名称
  26. public int iSHoleShape; // 样品口形状 1: 矩形; 0: 圆形
  27. // public Point sSHoleStartPoint; // 样品孔起点坐标
  28. // public Point sSHoleEndPoint; //样品孔终点坐标
  29. public RectangleF HoleRect; //样品孔大小
  30. }
  31. //MeasureApp 给SampleWindow窗口发送添加样品的样品孔名信息
  32. public struct SampleHolePara
  33. {
  34. public string sHoleName;
  35. public ShapeType iShape;
  36. //样品孔大小
  37. public RectangleF SampleHoleRect;
  38. };
  39. // 用于绘制样品台的数据
  40. public class StageDrawingData
  41. {
  42. public StageDrawingData()
  43. {
  44. sSHoleInfoList = new List<OTSSampleHoleInfo>();
  45. }
  46. //绘制样品台形状信息
  47. //样品台名称
  48. public String sStageName; //样品台名称
  49. public ShapeType bStageShape; // 样品台形状。 1: 矩形; 0: 圆形
  50. // public Point PSStageStartPos; //样品台起点坐标
  51. // public Point PSStageEndPos; //样品台终点坐标
  52. public RectangleF StageDomain; //样品台的大小
  53. public ShapeType bSampleShape; //标样形状 1: 矩形; 0: 圆形
  54. // public Point PSSampleStartPos; // 标样起点坐标
  55. // public Point PSSampleEndPos; //
  56. public RectangleF SampleRect; //标样大小
  57. public List<OTSSampleHoleInfo> sSHoleInfoList; //样品孔信息List
  58. //绘制样品台坐标信息
  59. public int iScanFieldSize100; //放大倍数为100倍时的屏幕尺寸
  60. public int iXAxisDir; // X轴方向 ,参看 enum OTS_X_AXIS_DIRECTION
  61. public int iXAxisStartVal; //X轴起点值
  62. public int iXAxisEndVal; //X轴终点值
  63. public int iYAxisDir; //Y轴方向,,参看enum OTS_Y_AXIS_DIRECTION
  64. public int iYAxisStartVal; //Y轴起点值
  65. public int iYAxisEndVal; //Y轴终点值.
  66. }
  67. public class TestSampleInfo
  68. {
  69. OTSIncAMeasureAppForm m_MeasureApp = null;
  70. public TestSampleInfo(OTSIncAMeasureAppForm Mapp)
  71. {
  72. m_MeasureApp = Mapp;
  73. }
  74. // 测试标题栏的显示
  75. public OTSSamplePropertyInfo TestShowGrid(String sSampleName,bool bFlag=false)
  76. {
  77. OTSSamplePropertyInfo m_SMInfo = new OTSSamplePropertyInfo();
  78. m_SMInfo.sSampleSoluName = "Project";
  79. //样品名
  80. SamplePropertyData sData = new SamplePropertyData();
  81. sData.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
  82. sData.iSampleValType = OTS_ITEM_TYPES.STRING;
  83. sData.sSCaptionName = "样品名";
  84. sData.SampleVal = sSampleName;
  85. sData.bReadOnly = true;
  86. m_SMInfo.SampleDataList.Add(sData);
  87. //样品孔名称
  88. SamplePropertyData sData1 = new SamplePropertyData();
  89. sData1.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
  90. sData1.iSampleValType = OTS_ITEM_TYPES.STRING;
  91. sData1.sSCaptionName = "样品孔名称";
  92. sData1.SampleVal = "样品孔1";
  93. sData1.bReadOnly = true;
  94. m_SMInfo.SampleDataList.Add(sData1);
  95. //Switch
  96. SamplePropertyData sData2 = new SamplePropertyData();
  97. sData2.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
  98. sData2.iSampleValType = OTS_ITEM_TYPES.BOOL;
  99. sData2.sSCaptionName = "开关";
  100. if((string)sData.SampleVal == "Sample3" || (string)sData.SampleVal == "Sample4" || (string)sData.SampleVal == "Sample2")
  101. {
  102. sData2.SampleVal = true;
  103. m_SMInfo.bSwitch = true;
  104. }
  105. else
  106. {
  107. sData2.SampleVal = bFlag;
  108. m_SMInfo.bSwitch = false;
  109. }
  110. m_SMInfo.SampleDataList.Add(sData2);
  111. //样品测量参数文件名
  112. SamplePropertyData sData3 = new SamplePropertyData();
  113. sData3.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_PARAM_FILE_NAME;
  114. sData3.iSampleValType = OTS_ITEM_TYPES.COMBO;
  115. sData3.sSCaptionName = "样品测量参数文件名";
  116. List<string> m_FileList = new List<string>();
  117. m_FileList.Add("文件1");
  118. m_FileList.Add("文件2");
  119. m_FileList.Add("文件3");
  120. m_FileList.Add("文件4");
  121. sData3.SampleVal = m_FileList;
  122. m_SMInfo.SampleDataList.Add(sData3);
  123. //颗粒分析标准库名
  124. SamplePropertyData sData4 = new SamplePropertyData();
  125. sData4.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
  126. sData4.iSampleValType = OTS_ITEM_TYPES.COMBO;
  127. sData4.sSCaptionName = "颗粒分析标准库名";
  128. // sData4.SampleVal = "\\Config\\SysData\\OTSStage.stg";
  129. List<string> m_LibList = new List<string>();
  130. m_LibList.Add("标准库1");
  131. m_LibList.Add("标准库2");
  132. m_LibList.Add("标准库3");
  133. m_LibList.Add("标准库4");
  134. sData4.SampleVal = m_LibList;
  135. m_SMInfo.SampleDataList.Add(sData4);
  136. //图像扫描参数组(Image)
  137. //开始模式
  138. SamplePropertyData sData5 = new SamplePropertyData();
  139. sData5.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE;
  140. sData5.iSampleValType = OTS_ITEM_TYPES.COMBO;
  141. sData5.sSCaptionName = "开始模式";
  142. List<string> m_ValList = new List<string>();
  143. m_ValList.Add("中心");
  144. m_ValList.Add("自上而下");
  145. m_ValList.Add("自下而上");
  146. m_ValList.Add("随机");
  147. sData5.SampleVal = m_ValList;
  148. m_SMInfo.SampleDataList.Add(sData5);
  149. //停止模式
  150. SamplePropertyData sData6 = new SamplePropertyData();
  151. sData6.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
  152. sData6.iSampleValType = OTS_ITEM_TYPES.COMBO;
  153. sData6.sSCaptionName = "停止模式";
  154. List<string> m_ValList1 = new List<string>();
  155. m_ValList1.Add("覆盖测量区域");
  156. m_ValList1.Add("幁图数");
  157. m_ValList1.Add("颗粒数");
  158. m_ValList1.Add("时间");
  159. sData6.SampleVal = m_ValList1;
  160. m_SMInfo.SampleDataList.Add(sData6);
  161. //扫描速度
  162. SamplePropertyData sData7 = new SamplePropertyData();
  163. sData7.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
  164. sData7.iSampleValType = OTS_ITEM_TYPES.COMBO;
  165. sData7.sSCaptionName = "停止模式";
  166. List<string> m_ValList2 = new List<string>();
  167. m_ValList2.Add("高");
  168. m_ValList2.Add("中");
  169. m_ValList2.Add("低");
  170. sData7.SampleVal = m_ValList2;
  171. m_SMInfo.SampleDataList.Add(sData7);
  172. //扫描图尺寸
  173. SamplePropertyData sData8 = new SamplePropertyData();
  174. sData8.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
  175. sData8.iSampleValType = OTS_ITEM_TYPES.COMBO;
  176. sData8.sSCaptionName = "扫描图尺寸";
  177. List<string> m_ValList3 = new List<string>();
  178. m_ValList3.Add("点扫描");
  179. m_ValList3.Add("面扫描");
  180. sData8.SampleVal = m_ValList3;
  181. m_SMInfo.SampleDataList.Add(sData8);
  182. // 图像处理参数(Image Process)
  183. //颗粒面积最小范围
  184. SamplePropertyData sData9 = new SamplePropertyData();
  185. sData9.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  186. sData9.iSampleValType = OTS_ITEM_TYPES.INT;
  187. sData9.sSCaptionName = "颗粒面积最小范围";
  188. sData9.SampleVal = 10;
  189. m_SMInfo.SampleDataList.Add(sData9);
  190. //颗粒面积最大范围
  191. SamplePropertyData sData10 = new SamplePropertyData();
  192. sData10.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  193. sData10.iSampleValType = OTS_ITEM_TYPES.INT;
  194. sData10.sSCaptionName = "颗粒面积最大范围";
  195. sData10.SampleVal = 50;
  196. m_SMInfo.SampleDataList.Add(sData10);
  197. //背景灰度最小范围
  198. SamplePropertyData sData11 = new SamplePropertyData();
  199. sData11.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
  200. sData11.iSampleValType = OTS_ITEM_TYPES.INT;
  201. sData11.sSCaptionName = "背景灰度最小范围";
  202. sData11.SampleVal = 20;
  203. m_SMInfo.SampleDataList.Add(sData11);
  204. //背景灰度最大范围
  205. SamplePropertyData sData12 = new SamplePropertyData();
  206. sData12.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  207. sData12.iSampleValType = OTS_ITEM_TYPES.INT;
  208. sData12.sSCaptionName = "背景灰度最大范围";
  209. sData12.SampleVal = 60;
  210. m_SMInfo.SampleDataList.Add(sData12);
  211. //颗粒灰度最小范围
  212. SamplePropertyData sData13 = new SamplePropertyData();
  213. sData13.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  214. sData13.iSampleValType = OTS_ITEM_TYPES.INT;
  215. sData13.sSCaptionName = "颗粒灰度最小范围";
  216. sData13.SampleVal = 30;
  217. m_SMInfo.SampleDataList.Add(sData13);
  218. //颗粒灰度最大范围
  219. SamplePropertyData sData14 = new SamplePropertyData();
  220. sData14.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  221. sData14.iSampleValType = OTS_ITEM_TYPES.INT;
  222. sData14.sSCaptionName = "颗粒灰度最大范围";
  223. sData14.SampleVal = 70;
  224. m_SMInfo.SampleDataList.Add(sData14);
  225. //x-ray参数组(x-ray)
  226. //搜索x-ray精度
  227. SamplePropertyData sData15 = new SamplePropertyData();
  228. sData15.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION;
  229. sData15.iSampleValType = OTS_ITEM_TYPES.COMBO;
  230. sData15.sSCaptionName = "搜索x-ray精度";
  231. List<string> m_ValList4 = new List<string>();
  232. m_ValList4.Add("低");
  233. m_ValList4.Add("中");
  234. m_ValList4.Add("高");
  235. // m_ValList3.Add("时间");
  236. sData15.SampleVal = m_ValList4;
  237. m_SMInfo.SampleDataList.Add(sData15);
  238. //x - ray最低计数
  239. SamplePropertyData sData16 = new SamplePropertyData();
  240. sData16.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS;
  241. sData16.iSampleValType = OTS_ITEM_TYPES.INT;
  242. sData16.sSCaptionName = "XRay最低计数";
  243. sData16.SampleVal = 100;
  244. m_SMInfo.SampleDataList.Add(sData16);
  245. //分析x-ray精度
  246. SamplePropertyData sData17 = new SamplePropertyData();
  247. sData17.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;
  248. sData17.iSampleValType = OTS_ITEM_TYPES.COMBO;
  249. sData17.sSCaptionName = "分析XRay精度";
  250. List<string> m_ValList5 = new List<string>();
  251. m_ValList5.Add("低");
  252. m_ValList5.Add("中");
  253. m_ValList5.Add("高");
  254. // m_ValList3.Add("时间");
  255. sData17.SampleVal = m_ValList5;
  256. m_SMInfo.SampleDataList.Add(sData17);
  257. // x-ray扫描方式
  258. SamplePropertyData sData18 = new SamplePropertyData();
  259. sData18.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE;
  260. sData18.iSampleValType = OTS_ITEM_TYPES.COMBO;
  261. sData18.sSCaptionName = "XRay扫描方式";
  262. List<string> m_ValList6 = new List<string>();
  263. m_ValList6.Add("点扫描");
  264. m_ValList6.Add("面扫描");
  265. //m_ValList6.Add("高");
  266. // m_ValList3.Add("时间");
  267. sData18.SampleVal = m_ValList6;
  268. m_SMInfo.SampleDataList.Add(sData18);
  269. //分析x-ray计数期望值
  270. SamplePropertyData sData19 = new SamplePropertyData();
  271. sData19.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
  272. sData19.iSampleValType = OTS_ITEM_TYPES.INT;
  273. sData19.sSCaptionName = "分析XRay计数期望值";
  274. sData19.SampleVal = 800;
  275. m_SMInfo.SampleDataList.Add(sData19);
  276. //SEM工作参数组(SEM Data)
  277. //放大倍数
  278. SamplePropertyData sData20 = new SamplePropertyData();
  279. sData20.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  280. sData20.iSampleValType = OTS_ITEM_TYPES.STRING;
  281. sData20.sSCaptionName = "放大倍数";
  282. sData20.SampleVal = "100";
  283. m_SMInfo.SampleDataList.Add(sData20);
  284. //测量精度
  285. SamplePropertyData sData21 = new SamplePropertyData();
  286. sData21.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGERESOLUTION_SIZE;
  287. sData21.iSampleValType = OTS_ITEM_TYPES.STRING;
  288. sData21.sSCaptionName = "测量精度";
  289. sData21.SampleVal = "高精度";
  290. m_SMInfo.SampleDataList.Add(sData21);
  291. //工作距离
  292. SamplePropertyData sData22 = new SamplePropertyData();
  293. sData22.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
  294. sData22.iSampleValType = OTS_ITEM_TYPES.STRING;
  295. sData22.sSCaptionName = "工作距离";
  296. sData22.SampleVal = "200";
  297. m_SMInfo.SampleDataList.Add(sData22);
  298. //覆盖测量区域帧图数
  299. SamplePropertyData sData23 = new SamplePropertyData();
  300. sData23.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
  301. sData23.iSampleValType = OTS_ITEM_TYPES.STRING;
  302. sData23.sSCaptionName = "覆盖测量区域帧图数";
  303. sData23.SampleVal = "4000";
  304. m_SMInfo.SampleDataList.Add(sData23);
  305. //样品测量状态(Measure status)
  306. //测量状态
  307. SamplePropertyData sData24 = new SamplePropertyData();
  308. sData24.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
  309. sData24.iSampleValType = OTS_ITEM_TYPES.STRING;
  310. sData24.sSCaptionName = "测量状态";
  311. sData24.SampleVal = "未测量";
  312. m_SMInfo.SampleDataList.Add(sData24);
  313. //测量开始时间
  314. DateTime dt = DateTime.Now;
  315. String sDate = dt.ToString();
  316. // MessageBox.Show(sDate);
  317. SamplePropertyData sData25 = new SamplePropertyData();
  318. sData25.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
  319. sData25.iSampleValType = OTS_ITEM_TYPES.STRING;
  320. sData25.sSCaptionName = "测量开始事件";
  321. sData25.SampleVal = sDate;
  322. m_SMInfo.SampleDataList.Add(sData25);
  323. //Thread.Sleep(1000);
  324. //已经测量时间
  325. DateTime dt1 = DateTime.Now;
  326. String sDate1 = this.DateDiff(dt1, dt);
  327. // MessageBox.Show(sDate);
  328. SamplePropertyData sData26 = new SamplePropertyData();
  329. sData26.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
  330. sData26.iSampleValType = OTS_ITEM_TYPES.STRING;
  331. sData26.sSCaptionName = "已经测量时间";
  332. sData26.SampleVal = sDate1;
  333. m_SMInfo.SampleDataList.Add(sData26);
  334. //完成时间
  335. SamplePropertyData sData27 = new SamplePropertyData();
  336. sData27.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
  337. sData27.iSampleValType = OTS_ITEM_TYPES.STRING;
  338. sData27.sSCaptionName = "完成时间";
  339. sData27.SampleVal = dt1.ToString();
  340. m_SMInfo.SampleDataList.Add(sData27);
  341. //完成幁图数
  342. SamplePropertyData sData28 = new SamplePropertyData();
  343. sData28.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
  344. sData28.iSampleValType = OTS_ITEM_TYPES.INT;
  345. sData28.sSCaptionName = "完成帧图数";
  346. sData28.SampleVal = 1800;
  347. m_SMInfo.SampleDataList.Add(sData28);
  348. //样品测量结果(Measure Result)
  349. //比率
  350. SamplePropertyData sData29 = new SamplePropertyData();
  351. sData29.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
  352. sData29.iSampleValType = OTS_ITEM_TYPES.DOUBLE;
  353. sData29.sSCaptionName = "比率";
  354. sData29.SampleVal = 3.14;
  355. m_SMInfo.SampleDataList.Add(sData29);
  356. //测量面积
  357. SamplePropertyData sData30 = new SamplePropertyData();
  358. sData30.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
  359. sData30.iSampleValType = OTS_ITEM_TYPES.DOUBLE;
  360. sData30.sSCaptionName = "测量面积";
  361. sData30.SampleVal = 120;
  362. m_SMInfo.SampleDataList.Add(sData30);
  363. //颗粒数
  364. SamplePropertyData sData31 = new SamplePropertyData();
  365. sData31.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
  366. sData31.iSampleValType = OTS_ITEM_TYPES.INT;
  367. sData31.sSCaptionName = "颗粒数";
  368. sData31.SampleVal = 8000;
  369. m_SMInfo.SampleDataList.Add(sData31);
  370. //颗粒面积
  371. SamplePropertyData sData32 = new SamplePropertyData();
  372. sData32.iSampleId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
  373. sData32.iSampleValType = OTS_ITEM_TYPES.DOUBLE;
  374. sData32.sSCaptionName = "颗粒面积";
  375. sData32.SampleVal = 8000;
  376. m_SMInfo.SampleDataList.Add(sData32);
  377. return m_SMInfo;
  378. }
  379. //获取两个时间差
  380. private string DateDiff(DateTime DateTime1, DateTime DateTime2)
  381. {
  382. string dateDiff = null;
  383. try
  384. {
  385. TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
  386. TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
  387. TimeSpan ts = ts1.Subtract(ts2).Duration();
  388. dateDiff = ts.Days.ToString() + "天"
  389. + ts.Hours.ToString() + "小时"
  390. + ts.Minutes.ToString() + "分钟"
  391. + ts.Seconds.ToString() + "秒";
  392. }
  393. catch
  394. {
  395. }
  396. return dateDiff;
  397. }
  398. }
  399. }