Example #1
0
        /// <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());;
                }
            }
        }
Example #2
0
        /// <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);
        }