/// <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"); } }
/// <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); }
/// <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; }
/// <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"); }