Пример #1
0
        /// <summary>
        /// Получить массив описателей калибровочных параметров
        /// </summary>
        /// <param name="eprom">EPROM устройства из которого необходимо извлеч данные</param>
        /// <returns>Массив описателй калибровочных параметров</returns>
        public CalibrationTableHandle[] CreateCalibrationTableHandles(Eprom eprom)
        {
            if (eprom != null)
            {
                CalibrationTableHandle[] handles = new CalibrationTableHandle[20];
                for (int index = 0; index < handles.Length; index++)
                {
                    int baseOffset = calibrationTableHandlesBaseOffset + (index * CalibrationTableHandle.SizeInTable);

                    byte name   = eprom[calibrationTableHandlesPageNumber][baseOffset];
                    byte offset = eprom[calibrationTableHandlesPageNumber][baseOffset + 1];

                    handles[index] = new CalibrationTableHandle(name, offset);
                }
                return(handles);
            }
            else
            {
                throw new ArgumentNullException("eprom", "Не может принимать значение null");
            }
        }
Пример #2
0
        /// <summary>
        /// Возвращяет таблицу калибровки
        /// </summary>
        /// <param name="eprom">EPROM устройства из которого необходимо извлеч данные</param>
        /// <param name="CalibrationParameterName">Имя калибровочного параметра</param>
        /// <returns>Таблица калибровки</returns>
        public LastError GetCalibrationTable(Eprom eprom, CalibrationTableHandle calibrationHandle)
        {
            int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
            foreach (int index in Indices)
            {
                if (eprom.GetByte(index) == calibrationHandle.Name)
                {
                    byte             size  = eprom.GetByte(index + 3);
                    CalibrationTable table = new CalibrationTable(calibrationHandle.Name, size);

                    int offset = index + 4;         // смещение по которому начинаются калибровочные значения
                    if ((size % 4) != 0)
                    {
                        return(LastError.Error);
                    }

                    for (int i = 0; i < size / 4; i++)
                    {
                        byte[] physical   = new byte[2];
                        byte[] calibrated = new byte[2];

                        physical[1] = eprom.GetByte(offset++);
                        physical[0] = eprom.GetByte(offset++);

                        calibrated[1] = eprom.GetByte(offset++);
                        calibrated[0] = eprom.GetByte(offset++);

                        Parameter param = new Parameter();

                        param.Physical   = (ushort)BitConverter.ToInt16(physical, 0);
                        param.Calibrated = (ushort)BitConverter.ToInt16(calibrated, 0);

                        table.Parameters.Add(param);
                    }
                    calibrationHandle.CalibrationTable = table;
                    return(LastError.Success);
                }
            }
            return(LastError.Error);
        }
Пример #3
0
        /// <summary>
        /// Возвращяет таблицу калибровки
        /// </summary>
        /// <param name="eprom">EPROM устройства из которого необходимо извлеч данные</param>
        /// <param name="CalibrationParameterName">Имя калибровочного параметра</param>
        /// <returns>Таблица калибровки</returns>
        public LastError GetCalibrationTable(Eprom eprom, CalibrationTableHandle calibrationHandle)
        {
            int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
            foreach (int index in Indices)
            {
                if (eprom.GetByte(index) == calibrationHandle.Name)
                {
                    byte size = eprom.GetByte(index + 3);
                    CalibrationTable table = new CalibrationTable(calibrationHandle.Name, size);

                    int offset = index + 4;         // смещение по которому начинаются калибровочные значения
                    if ((size % 4) != 0) return LastError.Error;

                    for (int i = 0; i < size / 4; i++)
                    {
                        byte[] physical = new byte[2];
                        byte[] calibrated = new byte[2];

                        physical[1] = eprom.GetByte(offset++);
                        physical[0] = eprom.GetByte(offset++);

                        calibrated[1] = eprom.GetByte(offset++);
                        calibrated[0] = eprom.GetByte(offset++);

                        Parameter param = new Parameter();

                        param.Physical = (ushort)BitConverter.ToInt16(physical, 0);
                        param.Calibrated = (ushort)BitConverter.ToInt16(calibrated, 0);

                        table.Parameters.Add(param);
                    }
                    calibrationHandle.CalibrationTable = table;
                    return LastError.Success;
                }
            }
            return LastError.Error;
        }
Пример #4
0
        /// <summary>
        /// Получить массив описателей калибровочных параметров
        /// </summary>
        /// <param name="eprom">EPROM устройства из которого необходимо извлеч данные</param>
        /// <returns>Массив описателй калибровочных параметров</returns>
        public CalibrationTableHandle[] CreateCalibrationTableHandles(Eprom eprom)
        {
            if (eprom != null)
            {
                CalibrationTableHandle[] handles = new CalibrationTableHandle[20];
                for (int index = 0; index < handles.Length; index++)
                {
                    int baseOffset = calibrationTableHandlesBaseOffset + (index * CalibrationTableHandle.SizeInTable);

                    byte name = eprom[calibrationTableHandlesPageNumber][baseOffset];
                    byte offset = eprom[calibrationTableHandlesPageNumber][baseOffset + 1];

                    handles[index] = new CalibrationTableHandle(name, offset);
                }
                return handles;
            }
            else
                throw new ArgumentNullException("eprom", "Не может принимать значение null");
        }