/// <summary> /// 获取校准系数的参数 /// </summary> /// <param name="calCoefData">校准系数</param> /// <returns>校准系数的参数(dataSize=0表示错误)</returns> public static StandardizingCoefParameter GetStandardizingCoefParameter(byte[] calCoefData) { unsafe { if (calCoefData == null || calCoefData.Length < Marshal.SizeOf(typeof(StandardizingCoefParameter))) { return(new StandardizingCoefParameter()); } //判断系数类型是否为标准化系数(前4位) UInt32 datatype = BitConverter.ToUInt32(calCoefData, 0); if (datatype != DATAMARK) { return(new StandardizingCoefParameter()); } try { //判断系数类型=0表示为标准化系数 fixed(byte *byteptr = calCoefData) { IntPtr ptr = new IntPtr(byteptr); StandardizingCoefParameter para = (StandardizingCoefParameter)Marshal.PtrToStructure(ptr, typeof(StandardizingCoefParameter)); //逐个算法判断 bool found = false; foreach (int item in Enum.GetValues(typeof(enumAlgorithmType))) { if (para.algorithm == (UInt32)item) { found = true; break; } } if (!found) { return(new StandardizingCoefParameter()); } return(para); } } catch (Exception ex) { ErrorString = ex.Message; return(new StandardizingCoefParameter());; } } }
/// <summary> /// 判断是否为有效的校准参数 /// </summary> /// <param name="calCoefData">校准参数</param> /// <param name="specCols">光谱数据点数</param> public static bool IsValidCoef(byte[] calCoefData, int specCols) { StandardizingCoefParameter para = GetStandardizingCoefParameter(calCoefData); return(para.specCols == specCols && para.datatype == DATAMARK); }