BrukerSPXFileMgr.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #pragma once
  2. #include "OTSBrukerImpl_const.h"
  3. #include "PosXray.h"
  4. using namespace OTSDATA;
  5. namespace OTSController {
  6. enum class SPXLineType
  7. {
  8. NONE = 0,
  9. NAME,
  10. CHANNELS,
  11. CHANNEL_COUNT,
  12. CALIB_ABS,
  13. CALIB_LIN,
  14. SIGMA_ABS,
  15. SIGMA_LIN,
  16. };
  17. struct SPXLine
  18. {
  19. SPXLine(LPCSTR a_sLine, const SPXLineType a_nLineType = SPXLineType::NONE)
  20. {
  21. m_sLineString = a_sLine;
  22. m_nLineType = a_nLineType;
  23. }
  24. std::string m_sLineString;
  25. SPXLineType m_nLineType;
  26. };
  27. class __declspec(dllexport) CBrukerSPXFileMgr
  28. {
  29. public:
  30. CBrukerSPXFileMgr() { Init(); }
  31. ~CBrukerSPXFileMgr() {}
  32. BOOL LoadSpectrumHeader(LPCTSTR a_sFilePathName);
  33. BOOL SaveSpectrumHeader(LPCTSTR a_sFilePathName);
  34. BOOL SetSpectrumHeader(RTSpectrumHeaderRec* m_pSpectrumHeader);
  35. BOOL ExportXrayPoints(LPCTSTR a_sPath, LPCTSTR a_sSpectrumName, const std::vector<CPosXray*>& a_xrayPoints);
  36. BOOL ExportXrayPoints(LPCTSTR a_sPath, LPCTSTR a_sSpectrumName, const CPosXraysList& a_xrayPoints);
  37. //BOOL ExportXrayPoint(LPCTSTR a_sFilePathName, LPCTSTR a_sSpectrumName, CPosXray* a_pXrayPoint);
  38. BOOL ExportXrayPoint(const char* a_sFilePathName, const char* a_sSpectrumName, CPosXray* a_pXrayPoint);
  39. static void InitSpectrumHeader(RTSpectrumHeaderRec* a_pHeader);
  40. static bool InitSpectrumBuffer(char* a_pBuffer, CPosXray* a_pXrayPoint);
  41. protected:
  42. void Init();
  43. protected:
  44. RTSpectrumHeaderRec m_spectrumHeader;
  45. static std::vector<SPXLine> m_vSpxFileLines;
  46. // string conventions
  47. int CharToWChar(const char* a_psSource, wchar_t* a_psTarget)
  48. {
  49. size_t iRet = 0;
  50. size_t nLen = strlen(a_psSource) + 1;
  51. mbstowcs_s(&iRet, a_psTarget, nLen, a_psSource, nLen);
  52. return (int)iRet;
  53. }
  54. int WCharToChar(const wchar_t* a_psSource, char* a_psTarget)
  55. {
  56. size_t iRet = 0;
  57. size_t nLen = wcslen(a_psSource) * 2 + 2;
  58. wcstombs_s(&iRet, a_psTarget, nLen, a_psSource, nLen);
  59. return (int)iRet;
  60. }
  61. CString CharToString(const char* a_psSource)
  62. {
  63. size_t nLen = strlen(a_psSource) + 1;
  64. wchar_t* psDest = new wchar_t[nLen];
  65. CString sRet(_T(""));
  66. if (CharToWChar(a_psSource, psDest) > 0)
  67. {
  68. sRet = psDest;
  69. }
  70. delete[] psDest;
  71. return sRet;
  72. }
  73. };
  74. }