/// <summary> /// 获取光谱头信息 /// </summary> /// <param name="fileData">文件数据</param> /// <param name="index">光谱序号</param> private static FileHeader GetFileHeader(byte[] fileData, int index) { try { IntPtr retptr = IntPtr.Zero; if (CommonMethod.Is64BitVersion()) { retptr = FossGetFileHeader64(fileData, fileData.Length, index); } else { retptr = FossGetFileHeader32(fileData, fileData.Length, index); } bool retOK; FileHeader retheader = CommonMethod.CopyStructureFromIntptrAndFree <FileHeader>(ref retptr, out retOK); if (!retOK) { retheader.position = UInt16.MaxValue; //表示错误数据 ErrorString = CommonMethod.ErrorString; } return(retheader); } catch (Exception ex) { ErrorString = ex.Message; FileHeader retheader = new FileHeader(); retheader.position = UInt16.MaxValue; //表示错误数据 return(retheader); } }
/// <summary> /// 读取仪器硬件参数 /// </summary> /// <param name="fileData">文件数据</param> /// <param name="fileSize">文件大小</param> /// <returns>SPCHeader结构</returns> private static InstrumentHeader GetInstrumentHeader(byte[] fileData, int fileSize) { try { IntPtr retptr = IntPtr.Zero; int datasize = 0; if (CommonMethod.Is64BitVersion()) { retptr = SPAGetInstrumentHeader64(fileData, fileSize, ref datasize); } else { retptr = SPAGetInstrumentHeader32(fileData, fileSize, ref datasize); } bool retOK; InstrumentHeader retheader = CommonMethod.CopyStructureFromIntptrAndFree <InstrumentHeader>(ref retptr, out retOK); if (!retOK) { retheader.ADBits = int.MaxValue; //表示错误数据 } return(retheader); } catch (Exception ex) { ErrorString = ex.Message; InstrumentHeader retheader = new InstrumentHeader(); retheader.ADBits = int.MaxValue; return(retheader); } }
/// <summary> /// 获取模型参数信息 /// </summary> /// <param name="fileData"></param> /// <returns></returns> private static ModelParameter QuantGetModelParameter(byte[] fileData) { try { IntPtr retptr = IntPtr.Zero; if (fileData == null || fileData.Length == 0) { throw new Exception("Invalid Parameter"); } if (CommonMethod.Is64BitVersion()) { retptr = SPAGetModelParameter64(fileData, fileData.Length); } else { retptr = SPAGetModelParameter32(fileData, fileData.Length); } if (retptr == IntPtr.Zero) { throw new Exception(FileFormat.GetDLLErrorMessage()); } bool retOK = true; var retData = CommonMethod.CopyStructureFromIntptrAndFree <ModelParameter>(ref retptr, out retOK); if (!retOK) { ErrorString = "Invalid data reading"; retData.allFileCount = int.MaxValue; //错误 } return(retData); } catch (Exception ex) { ErrorString = ex.Message; var retData = new ModelParameter(); retData.allFileCount = int.MaxValue; return(retData); } }
/// <summary> /// 读取子数据的结构 /// </summary> /// <param name="fileData">文件数据</param> /// <param name="fileSize">文件大小</param> /// <param name="subIndex">需要获取子结构的序号</param> /// <returns>子数据的结构</returns> private static SPCSubHeader GetSubHeader(byte[] fileData, int fileSize, int subIndex) { IntPtr retptr = IntPtr.Zero; int datasize = 0; if (CommonMethod.Is64BitVersion()) { retptr = SPCGetSubHeader64(fileData, fileSize, subIndex, ref datasize); } else { retptr = SPCGetSubHeader32(fileData, fileSize, subIndex, ref datasize); } bool retOK; SPCSubHeader retheader = CommonMethod.CopyStructureFromIntptrAndFree <SPCSubHeader>(ref retptr, out retOK); if (!retOK) { retheader.subnpts = int.MaxValue; //表示错误数据 } return(retheader); }