CSEMDataMsr.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Xml;
  7. namespace OTSDataType
  8. {
  9. public class CSEMDataMsr:ISlo
  10. {
  11. const double MAGNIFICATION_MIN = 20.0;
  12. private int m_nScanFieldSize;
  13. private int m_nScanFieldSize100;
  14. private double m_dWorkingDistance;
  15. private int m_nTotalFields;
  16. public CSEMDataMsr()
  17. {
  18. // initialization
  19. Init();
  20. }
  21. void Init()
  22. {
  23. m_nScanFieldSize = 0;
  24. m_nScanFieldSize100 = 1142;
  25. m_dWorkingDistance = 0;
  26. m_nTotalFields = 0;
  27. }
  28. public CSEMDataMsr ( CSEMDataMsr a_oSource)
  29. {
  30. // copy data over
  31. Duplicate(a_oSource);
  32. }
  33. void Duplicate( CSEMDataMsr a_oSource)
  34. {
  35. // copy data over
  36. m_nScanFieldSize = a_oSource.m_nScanFieldSize;
  37. m_nScanFieldSize100 = a_oSource.m_nScanFieldSize100;
  38. m_dWorkingDistance = a_oSource.m_dWorkingDistance;
  39. m_nTotalFields = a_oSource.m_nTotalFields;
  40. }
  41. bool Equals( CSEMDataMsr a_oSource)
  42. {
  43. return m_nScanFieldSize == a_oSource.m_nScanFieldSize &&
  44. m_nScanFieldSize100 == a_oSource.m_nScanFieldSize100 &&
  45. Math.Abs(m_dWorkingDistance - a_oSource.m_dWorkingDistance)<double.MinValue &&
  46. m_nTotalFields == a_oSource.m_nTotalFields;
  47. }
  48. public int GetScanFieldSize() { return m_nScanFieldSize; }
  49. public void SetScanFieldSize(int a_nScanFieldSize) { m_nScanFieldSize = a_nScanFieldSize; }
  50. // scan field size 100 (micros)
  51. public int GetScanFieldSize100() { return m_nScanFieldSize100; }
  52. public void SetScanFieldSize100(int a_nScanFieldSize100) { m_nScanFieldSize100 = a_nScanFieldSize100; }
  53. // working distance
  54. public double GetWorkingDistance() { return m_dWorkingDistance; }
  55. public void SetWorkingDistance(double a_dWorkingDistance) { m_dWorkingDistance = a_dWorkingDistance; }
  56. // total fields
  57. public int GetTotalFields() { return m_nTotalFields; }
  58. public void SetTotalFields(int a_nTotalFields) { m_nTotalFields = a_nTotalFields; }
  59. public double GetMagnification()
  60. {
  61. // magnification
  62. double dMag = 0.0;
  63. // convert scan field size to magnification
  64. if (m_nScanFieldSize > 0)
  65. {
  66. dMag = (double)m_nScanFieldSize100 * 100.0 / (double)m_nScanFieldSize;
  67. }
  68. // return magnification
  69. return dMag;
  70. }
  71. public void SetMagnification(double a_dMag)
  72. {
  73. if (a_dMag < MAGNIFICATION_MIN)
  74. {
  75. return;
  76. }
  77. m_nScanFieldSize = (int)(100.0 * (double)m_nScanFieldSize100 / a_dMag + 0.5);
  78. }
  79. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  80. {
  81. xInt xnScanFieldSize=new xInt();
  82. xInt xnScanFieldSize100=new xInt();
  83. xDouble xdWorkingDistance=new xDouble();
  84. xInt xnTotalFields=new xInt();
  85. Slo slo=new Slo();
  86. slo.Register("ScanFieldSize", xnScanFieldSize);
  87. slo.Register("ScanFieldSize100", xnScanFieldSize100);
  88. slo.Register("WorkingDistance", xdWorkingDistance);
  89. slo.Register("TotalFields", xnTotalFields);
  90. if (isStoring)
  91. {
  92. xnScanFieldSize.AssignValue(m_nScanFieldSize);
  93. xnScanFieldSize100.AssignValue(m_nScanFieldSize100);
  94. xdWorkingDistance.AssignValue(m_dWorkingDistance);
  95. xnTotalFields.AssignValue(m_nTotalFields);
  96. slo.Serialize(true, classDoc, rootNode);
  97. }
  98. else
  99. {
  100. slo.Serialize(false, classDoc, rootNode);
  101. m_nScanFieldSize = xnScanFieldSize.value();
  102. m_nScanFieldSize100 = xnScanFieldSize100.value();
  103. m_dWorkingDistance = xdWorkingDistance.value();
  104. m_nTotalFields = xnTotalFields.value();
  105. }
  106. }
  107. }
  108. }