Example #1
0
        public void CreateCalibrationTableForTest()
        {
            var    rowsList = new List <TableRow>();
            double curValue = 0;

            for (var i = 0; i < 10; i++)
            {
                var row = new TableRow(i * 100, curValue);
                rowsList.Add(row);

                if (i == 0)
                {
                    _leftBoundValue = row;
                }
                else if (i == 9)
                {
                    _rightBoundValue = row;
                }

                curValue += 0.4;
            }

            _count = rowsList.Count;
            _table = new CalibrationTable <TableRow>(rowsList);
        }
Example #2
0
        /// <summary>
        /// Сохраняет таблицу калибровки в указанный eprom
        /// </summary>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Eprom в который необходимо сохранить таблицу калибровки</param>
        public void SaveCalibrationTableToFile(CalibrationTable table, Eprom eprom)
        {
            int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
            foreach (int index in Indices)
            {
                if (eprom.GetByte(index) == table.Name)
                {
                    byte size = (byte)(table.Parameters.Count * 4);
                    eprom.SetByte(index + 3, size);

                    int offset = index + 4;
                    foreach (Parameter parameter in table.Parameters)
                    {
                        eprom.SetByte(offset++, (byte)(parameter.Physical >> 8));
                        eprom.SetByte(offset++, (byte)parameter.Physical);

                        eprom.SetByte(offset++, (byte)(parameter.Calibrated >> 8));
                        eprom.SetByte(offset++, (byte)parameter.Calibrated);
                    }
                    if (table.Parameters.Count < 11)
                    {
                        eprom.SetByte(offset++, 0xff);
                        eprom.SetByte(offset++, 0xff);

                        eprom.SetByte(offset++, 0xff);
                        eprom.SetByte(offset++, 0xff);
                    }
                    return;
                }
            }
        }
Example #3
0
        static void ManyTables()  //обработка одной таблицы
        {
            string workPath = ""; //рабочая папка (та, где лежат DOC файлы)

            Console.Clear();

            //открыли, прочитали DOC файлы
            DOCFile doc = new DOCFile(
                FileEventProcessor,
                FileEventProcessor);

            doc.ReadManyFiles(out workPath);

            if (doc.filePath == null)
            {
                return;
            }

            CalibrationTable[] CT = new CalibrationTable[0];

            for (int i = 0; i < doc.fileId.Length; i++)
            {
                CalibrationTable tempCT = new CalibrationTable(
                    doc.fileId[i],
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor,
                    CTEventProcessor);

                if (tempCT.ReadTable(doc.fileData[i]))
                {
                    tempCT.RepairTable(RepairVolumeInconcictensy);
                }

                if (tempCT.Table.Count == 0)
                {
                    continue;
                }

                Array.Resize(ref CT, CT.Length + 1);
                tempCT.CopyTo(ref CT[CT.Length - 1]);

                CT[CT.Length - 1].ChangeLevelBase(DefaultLevelBase);
            }

            TXTFile txt = new TXTFile(  //создали и записали TXT файлы
                FileEventProcessor,
                FileEventProcessor,
                FileEventProcessor,
                FileEventProcessor);

            txt.WriteManyFiles(CT, workPath, WriteValcomHeader);

            ManyTablesMenu(CT, workPath); //вызываем меню для таблиц
        }
Example #4
0
        /// <summary>
        /// Сохраняет тблицу калибровки в файл
        /// </summary>
        /// <param name="filePath">Путь к файлу</param>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Eprom в который необходимо сохранить данную таблицу калибровки</param>
        public void SaveEpromToFile(string filePath, CalibrationTable table, Eprom eprom)
        {
            IEFSaver svr = null;

            svr = platform.GetEFSaver(FileFormat.EF2XML);

            SaveCalibrationTableToFile(table, eprom);
            svr.Save(filePath, eprom);
        }
Example #5
0
        public void ConstructorTest()
        {
            var rowsList = new List <TableRow>();

            rowsList.Add(new TableRow(0, 0));
            rowsList.Add(new TableRow(1, 1.2));
            rowsList.Add(new TableRow(2, 4.2));
            var table = new CalibrationTable <TableRow>(rowsList);

            Assert.IsNotNull(table);
        }
Example #6
0
        private void _writeFile(            //запись в заданный файл указанных данных
            StreamWriter File,              //заданный файл
            string FilePath,                //путь к файлу
            CalibrationTable CT,            //таблица для записи
            bool writeValcomHeader = false, //опция: писать ли в файл заголовок Valcom
            bool Quiet             = false)
        {
            int VolumeAccuracy = 3;     //до какой цифры после запятой писать объем

            //определим точность записи объемов
            double tmpVol = CT.Table.ElementAt(0).Value *Math.Pow(10, VolumeAccuracy);

            tmpVol -= Math.Truncate(tmpVol);
            while (tmpVol != 0 && VolumeAccuracy <= 10)
            {
                VolumeAccuracy++;
                tmpVol *= 10;
                tmpVol -= Math.Truncate(tmpVol);
            }

            if (writeValcomHeader)           //запись заголовка Valcom
            {
                File.WriteLine("IndexValue={0}", CT.Table.ElementAt(0).Key);
                File.WriteLine("ScaleValue=1");
                File.Write("StepValue=");
                switch (CT.levelBase)
                {
                case LevelBase.Millimeters: File.WriteLine("10"); break;

                case LevelBase.Centimeters: File.WriteLine("1"); break;
                }
            }

            foreach (KeyValuePair <int, double> pair in CT.Table)          //для каждой пары из таблицы
            {
                File.Write(pair.Key);                                      //пишем ключ
                File.Write(" ");                                           //пишем пробел
                File.WriteLine(pair.Value.ToString("F" + VolumeAccuracy)); //пишем значение (три знака после запятой) и переходим на новую строку
            }

            //генерируем событие
            if (!Quiet)
            {
                int pos = FilePath.LastIndexOf('\\') + 1;
                OnFileWritten(new FileEventArgs(true, "Записаны данные в файл: " + FilePath.Substring(pos)));
            }
        }
Example #7
0
        static void OneTable()  //обработка одной таблицы
        {
            Console.Clear();

            //открыли, прочитали DOC файл
            DOCFile doc = new DOCFile(
                FileEventProcessor,
                FileEventProcessor);

            doc.ReadOneFile();

            if (doc.filePath == null)
            {
                return;
            }

            CalibrationTable CT = new CalibrationTable( //создаем градуировочную таблицу
                doc.fileId[0],
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor,
                CTEventProcessor);

            if (CT.ReadTable(doc.fileData[0]))
            {
                CT.RepairTable(RepairVolumeInconcictensy);
            }

            //зададим базу уровней
            CT.ChangeLevelBase(DefaultLevelBase);

            //создали, записали TXT файл
            TXTFile txt = new TXTFile(
                FileEventProcessor,
                FileEventProcessor,
                FileEventProcessor,
                FileEventProcessor);

            txt.WriteFile(CT, doc.filePath[0], WriteValcomHeader);

            OneTableMenu(CT); //вызываем меню для таблицы
        }
Example #8
0
        protected internal void WriteFile(      //запись одного файла
            CalibrationTable CT,                //данные для записи в файл
            string path            = null,      //папка для сохранения файла
            bool writeValcomHeader = false)
        {
            //выделили память
            //filePath = new string[1];
            //fileSW = new StreamWriter[1];
            string       filePath;
            StreamWriter fileSW;

            filePath = _chooseFile(CT.CTid, path);                   //выбор файла
            if (_createFile(out fileSW, filePath))                   //создали
            {
                _writeFile(fileSW, filePath, CT, writeValcomHeader); //записали
                _saveFile(fileSW, filePath);                         //сохранили и закрыли
            }
        }
Example #9
0
        /// <summary>
        /// Вывод таблицы калибровки
        /// </summary>
        /// <param name="calibrationTable">Таблица которую необходимо вывести</param>
        private void ShowCalibrationTableInDataGrid(CalibrationTable calibrationTable)
        {
            dataGridViewCalibrationTable.Rows.Clear();
            for (int i = 0; i < 11; i++)
            {
                DataGridViewRow r = new DataGridViewRow();

                if ((i % 2) == 0)
                {
                    r.DefaultCellStyle.BackColor = Color.WhiteSmoke;
                }
                dataGridViewCalibrationTable.Rows.Add(r);
            }

            for (int i = 0; i < currentState.SelectedCalibrationTable.CalibrationTable.Parameters.Count; i++)
            {
                dataGridViewCalibrationTable[0, i].Value = (ushort)currentState.SelectedCalibrationTable.CalibrationTable.Parameters[i].Physical;
                dataGridViewCalibrationTable[1, i].Value = (ushort)currentState.SelectedCalibrationTable.CalibrationTable.Parameters[i].Calibrated;
            }
        }
Example #10
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);
        }
Example #11
0
        /// <summary>
        /// Вывод графика на форму
        /// </summary>
        /// <param name="calibrationTable">Таблица калибровки которую необходимо показать</param>
        private void ShowCalibrationTableInGraphics(CalibrationTable calibrationTable)
        {
            int k = 0;

            if (currentState.SelectedCalibrationTable != null)
            {
                if (currentState.SelectedCalibrationTable.CalibrationTable != null)
                {
                    if (checkBoxDoScale.Checked && currentState.SelectedCalibrationTable.CalibrationTable.Parameters.Count > 3)
                    {
                        k = 1;
                    }
                }
            }

            Point[] points = new Point[calibrationTable.Parameters.Count - k];
            for (int index = 0; index < calibrationTable.Parameters.Count - k; index++)
            {
                points[index] = new Point(calibrationTable.Parameters[index].Physical,
                                          calibrationTable.Parameters[index].Calibrated);
            }
            gr.InsertPoints(points);
        }
Example #12
0
        /// <summary>
        /// Сохранить таблицу калибровки в файл
        /// </summary>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Виртуальный eprom устройства</param>
        public void SaveCalibrationTableToDevice(CalibrationTable table, Eprom eprom)
        {
            try
            {
                int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
                foreach (int index in Indices)
                {
                    if (eprom.GetByte(index) == table.Name)
                    {
                        string protectStart = "@JOB#000#" + string.Format("{0:X2}", platformIO.Options.Device) +
                            platformIO.Options.ProtectionStart + "$";
                        platform.SendPacket(new Packet(protectStart, DateTime.Now, null));

                        for (int line = 0; line < calibrationTableCountLines; line++)
                        {
                            int offset = index + (line * 16);

                            int pageNumber = (int)(offset / 256);
                            int offsetPage = (int)(offset % 256);

                            string data = string.Empty;
                            for (int byteIndex = 0; byteIndex < calibrationLineByteCount; byteIndex++)
                            {
                                data += string.Format("{0:X2}", eprom.GetByte(offset++));
                            }

                            platformIO.Write(platformIO.Options.Device, pageNumber, offsetPage, 16, data);
                            switch (platformIO.LastOperation)
                            {
                                case ResultOperation.Succes:

                                    if (eSaveCompleteReadEpromLine != null) eSaveCompleteReadEpromLine(this, new EventArgs());
                                    break;

                                case ResultOperation.Timeout:

                                    if (eSaveTimeoutReadEpromLine != null) eSaveTimeoutReadEpromLine(this, new EventArgs());
                                    return;

                                case ResultOperation.MorePopit:

                                    if (eSaveMorePopitReadEpromLine != null) eSaveMorePopitReadEpromLine(this, new EventArgs());
                                    return;

                                default:

                                    return;
                            }
                        }
                    }
                }
            }
            finally
            {
                string protectEnd = "@JOB#000#" + string.Format("{0:X2}", platformIO.Options.Device) +
                    platformIO.Options.ProtectionEnd + "$";
                platform.SendPacket(new Packet(protectEnd, DateTime.Now, null));
            }
        }
Example #13
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;
        }
Example #14
0
        /// <summary>
        /// Вывод графика на форму
        /// </summary>
        /// <param name="calibrationTable">Таблица калибровки которую необходимо показать</param>
        private void ShowCalibrationTableInGraphics(CalibrationTable calibrationTable)
        {
            int k = 0;
            if (currentState.SelectedCalibrationTable != null)
            {
                if (currentState.SelectedCalibrationTable.CalibrationTable != null)
                {
                    if (checkBoxDoScale.Checked && currentState.SelectedCalibrationTable.CalibrationTable.Parameters.Count > 3) k = 1;
                }
            }

            Point[] points = new Point[calibrationTable.Parameters.Count - k];
            for (int index = 0; index < calibrationTable.Parameters.Count - k; index++)
            {
                points[index] = new Point(calibrationTable.Parameters[index].Physical,
                    calibrationTable.Parameters[index].Calibrated);
            }
            gr.InsertPoints(points);
        }
Example #15
0
        /// <summary>
        /// Вывод таблицы калибровки
        /// </summary>
        /// <param name="calibrationTable">Таблица которую необходимо вывести</param>
        private void ShowCalibrationTableInDataGrid(CalibrationTable calibrationTable)
        {
            dataGridViewCalibrationTable.Rows.Clear();
            for (int i = 0; i < 11; i++)
            {
                DataGridViewRow r = new DataGridViewRow();

                if ((i % 2) == 0) r.DefaultCellStyle.BackColor = Color.WhiteSmoke;
                dataGridViewCalibrationTable.Rows.Add(r);
            }

            for (int i = 0; i < currentState.SelectedCalibrationTable.CalibrationTable.Parameters.Count; i++)
            {
                dataGridViewCalibrationTable[0, i].Value = (ushort)currentState.SelectedCalibrationTable.CalibrationTable.Parameters[i].Physical;
                dataGridViewCalibrationTable[1, i].Value = (ushort)currentState.SelectedCalibrationTable.CalibrationTable.Parameters[i].Calibrated;
            }
        }
Example #16
0
        /// <summary>
        /// Сохранить таблицу калибровки в файл
        /// </summary>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Виртуальный eprom устройства</param>
        public void SaveCalibrationTableToDevice(CalibrationTable table, Eprom eprom)
        {
            try
            {
                int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
                foreach (int index in Indices)
                {
                    if (eprom.GetByte(index) == table.Name)
                    {
                        string protectStart = "@JOB#000#" + string.Format("{0:X2}", platformIO.Options.Device) +
                                              platformIO.Options.ProtectionStart + "$";
                        platform.SendPacket(new Packet(protectStart, DateTime.Now, null));

                        for (int line = 0; line < calibrationTableCountLines; line++)
                        {
                            int offset = index + (line * 16);

                            int pageNumber = (int)(offset / 256);
                            int offsetPage = (int)(offset % 256);

                            string data = string.Empty;
                            for (int byteIndex = 0; byteIndex < calibrationLineByteCount; byteIndex++)
                            {
                                data += string.Format("{0:X2}", eprom.GetByte(offset++));
                            }

                            platformIO.Write(platformIO.Options.Device, pageNumber, offsetPage, 16, data);
                            switch (platformIO.LastOperation)
                            {
                            case ResultOperation.Succes:

                                if (eSaveCompleteReadEpromLine != null)
                                {
                                    eSaveCompleteReadEpromLine(this, new EventArgs());
                                }
                                break;

                            case ResultOperation.Timeout:

                                if (eSaveTimeoutReadEpromLine != null)
                                {
                                    eSaveTimeoutReadEpromLine(this, new EventArgs());
                                }
                                return;

                            case ResultOperation.MorePopit:

                                if (eSaveMorePopitReadEpromLine != null)
                                {
                                    eSaveMorePopitReadEpromLine(this, new EventArgs());
                                }
                                return;

                            default:

                                return;
                            }
                        }
                    }
                }
            }
            finally
            {
                string protectEnd = "@JOB#000#" + string.Format("{0:X2}", platformIO.Options.Device) +
                                    platformIO.Options.ProtectionEnd + "$";
                platform.SendPacket(new Packet(protectEnd, DateTime.Now, null));
            }
        }
Example #17
0
        static void OneTableMenu(CalibrationTable CT, string path = null, bool ExitIfTrue = true) //меню работы с одной таблицей
        {
            int MenuChoice = 0,                                                                   //выбранное доп. меню
                ItemChoice = 0;                                                                   //выбранный пункт  меню

            Menu.DoubleColor[] colorScheme = new Menu.DoubleColor[2];
            colorScheme[0] = new Menu.DoubleColor();
            colorScheme[1] = new Menu.DoubleColor(ConsoleColor.Yellow);

            Menu M = new Menu(
                new string[] { "Таблица: " + CT.CTid, "Опции (<Tab> для перехода)" },
                new string[][] { new string[] { }, new string[] { } },
                null,
                0,
                colorScheme);

            do
            {
                M.Items = new string[][] {
                    new string[]
                    {
                        "1. Отобразить таблицу",
                        "2. Изменить базу уровней на " + ((CT.levelBase == LevelBase.Centimeters)?"мм":"см"),
                        "3. Правка значений в таблице",
                        "4. Проверить таблицу",
                        "5. Исправить таблицу",
                        "6. Сортировать",
                        "7. Сохранить",
                        "8. " + ((ExitIfTrue)?"Выход":"Назад")
                    },
                    new string[]
                    {
                        "Исправлять непоследовательность объемов: " + ((RepairVolumeInconcictensy)?"да":"нет"),
                        "Записывать заголовок Valcom: " + ((WriteValcomHeader)?"да":"нет")
                    }
                };

                M.MenuCicle(out MenuChoice, out ItemChoice);
                switch (MenuChoice)
                {
                case -1:        //отмена меню
                    break;

                case 0:
                    switch (ItemChoice)
                    {
                    case 0:             //1. Отобразить таблицу
                        CT.ShowTable();
                        break;

                    case 1:             //2. Изменить базу уровней
                        switch (CT.levelBase)
                        {
                        case LevelBase.Millimeters:
                            CT.ChangeLevelBase(LevelBase.Centimeters);
                            break;

                        case LevelBase.Centimeters:
                            CT.ChangeLevelBase(LevelBase.Millimeters);
                            break;
                        }
                        break;

                    case 2:             //3. Правка значений в таблице
                        ChangeTableMenu(CT);
                        break;

                    case 3:             //3. Проверить таблицу
                        CT.CheckTable();
                        Console.BackgroundColor = ConsoleColor.Black;
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine("\n\nДля продолжения нажмите любую клавишу...");
                        Console.ReadKey(true);
                        break;

                    case 4:             //4. Исправить таблицу
                        CT.RepairTable(RepairVolumeInconcictensy);
                        Console.BackgroundColor = ConsoleColor.Black;
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine("\n\nДля продолжения нажмите любую клавишу...");
                        Console.ReadKey(true);
                        break;

                    case 5:             //5. Сортировать
                        CT.SortTable();
                        Console.BackgroundColor = ConsoleColor.Black;
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine("\n\nДля продолжения нажмите любую клавишу...");
                        Console.ReadKey(true);
                        break;

                    case 6:             //6. Сохранить
                        TXTFile tf = new TXTFile(
                            FileEventProcessor,
                            FileEventProcessor,
                            FileEventProcessor,
                            FileEventProcessor);
                        tf.WriteFile(CT, path, WriteValcomHeader);
                        break;

                    case 7:             //7. Выход
                        ExitApp = ExitIfTrue;
                        break;

                    default:            //ошибка меню
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Ошибка в работе доп. 0 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода...");
                        Console.ReadKey(true);
                        ExitApp = true;
                        break;
                    }
                    break;

                case 1:
                    switch (ItemChoice)
                    {
                    case 0:
                        Menu M4 = new Menu(
                            new string[] { "Исправлять непоследовательность объемов?" },
                            new string[][] { new string[] { "Да", "Нет" } },
                            null,
                            0,
                            new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) });
                        int MenuChoice4 = 0,
                            ItemChoice4 = 0;
                        M4.MenuCicle(out MenuChoice4, out ItemChoice4);
                        switch (MenuChoice4)
                        {
                        case 0:
                            switch (ItemChoice4)
                            {
                            case 0:                 //Да
                                RepairVolumeInconcictensy = true;
                                break;

                            case 1:                 //Нет
                                RepairVolumeInconcictensy = false;
                                break;
                            }
                            break;
                        }
                        break;

                    case 1:
                        Menu M2 = new Menu(
                            new string[] { "Записывать в выходные файлы заголовок Valcom?" },
                            new string[][] { new string[] { "Да", "Нет" } },
                            null,
                            0,
                            new Menu.DoubleColor[] { new Menu.DoubleColor(ConsoleColor.Yellow) });
                        int MenuChoice2 = 0,
                            ItemChoice2 = 0;
                        int curItem2    = (WriteValcomHeader) ? 0 : 1;
                        M2.MenuCicle(out MenuChoice2, out ItemChoice2, 0, curItem2);
                        switch (MenuChoice2)
                        {
                        case 0:
                            switch (ItemChoice2)
                            {
                            case 0:                 //Да
                                WriteValcomHeader = true;
                                break;

                            case 1:                 //Нет
                                WriteValcomHeader = false;
                                break;
                            }
                            break;

                        default:
                            Console.Clear();
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("Ошибка в работе меню опций!!!\n\nНажмите любую клавишу для выхода...");
                            Console.ReadKey(true);
                            ExitApp = true;
                            break;
                        }
                        break;

                    default:
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Ошибка в работе доп. 1 меню одной таблицы!!!\n\nНажмите любую клавишу для выхода...");
                        Console.ReadKey(true);
                        ExitApp = true;
                        break;
                    }
                    break;

                default:
                    Console.Clear();
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Ошибка в работе меню одной таблицы!!!\n\nНажмите любую клавишу для выхода...");
                    Console.ReadKey(true);
                    ExitApp = true;
                    break;
                }
            } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 7) && !ExitApp);
        }
Example #18
0
        /// <summary>
        /// Сохраняет таблицу калибровки в указанный eprom
        /// </summary>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Eprom в который необходимо сохранить таблицу калибровки</param>
        public void SaveCalibrationTableToFile(CalibrationTable table, Eprom eprom)
        {
            int[] Indices = { 0x0400, 0x0430, 0x0460, 0x0490, 0x04C0, 0x04F0, 0x0520, 0x0550 };
            foreach (int index in Indices)
            {
                if (eprom.GetByte(index) == table.Name)
                {
                    byte size = (byte)(table.Parameters.Count * 4);
                    eprom.SetByte(index + 3, size);

                    int offset = index + 4;
                    foreach (Parameter parameter in table.Parameters)
                    {
                        eprom.SetByte(offset++, (byte)(parameter.Physical >> 8));
                        eprom.SetByte(offset++, (byte)parameter.Physical);

                        eprom.SetByte(offset++, (byte)(parameter.Calibrated >> 8));
                        eprom.SetByte(offset++, (byte)parameter.Calibrated);
                    }
                    if (table.Parameters.Count < 11)
                    {
                        eprom.SetByte(offset++, 0xff);
                        eprom.SetByte(offset++, 0xff);

                        eprom.SetByte(offset++, 0xff);
                        eprom.SetByte(offset++, 0xff);
                    }
                    return;
                }
            }
        }
Example #19
0
        static void ChangeTableMenu(CalibrationTable CT)
        {
            int MenuChoice = 0,     //выбранное доп. меню
                ItemChoice = 0;     //выбранный пункт  меню

            Menu M = new Menu(
                new string[] { "Правка таблицы " + CT.CTid },
                new string[][] {
                new string[] {
                    "1. Добавить запись",
                    "2. Изменить запись",
                    "3. Удалить запись",
                    "4. Назад"
                }
            });

            do
            {
                M.MenuCicle(out MenuChoice, out ItemChoice);
                switch (MenuChoice)
                {
                case -1:        //отмена меню
                    break;

                case 0:
                    switch (ItemChoice)
                    {
                    case 0:             //1. Добавить запись
                        CT.AddPair();
                        break;

                    case 1:             //2. Изменить запись
                        CT.ChangeVolume();
                        break;

                    case 2:             //3. Удалить запись
                        CT.DeletePair();
                        break;

                    case 3:             //4. Назад
                        break;

                    default:            //ошибка меню
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Ошибка в работе доп. 0 меню правки таблицы!!!\n\nНажмите любую клавишу для выхода...");
                        Console.ReadKey(true);
                        ExitApp = true;
                        break;
                    }
                    break;

                default:
                    Console.Clear();
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Ошибка в работе меню правки таблицы!!!\n\nНажмите любую клавишу для выхода...");
                    Console.ReadKey(true);
                    ExitApp = true;
                    break;
                }
            } while (!(MenuChoice == -1 || MenuChoice == 0 && ItemChoice == 3) && !ExitApp);
        }
Example #20
0
        /// <summary>
        /// Сохраняет тблицу калибровки в файл
        /// </summary>
        /// <param name="filePath">Путь к файлу</param>
        /// <param name="table">Таблица калибровки, которую необходимо сохранить</param>
        /// <param name="eprom">Eprom в который необходимо сохранить данную таблицу калибровки</param>
        public void SaveEpromToFile(string filePath, CalibrationTable table, Eprom eprom)
        {
            IEFSaver svr = null;
            svr = platform.GetEFSaver(FileFormat.EF2XML);

            SaveCalibrationTableToFile(table, eprom);
            svr.Save(filePath, eprom);
        }
Example #21
0
 public SetCalibrationTableMessage(CalibrationTable table, CalibrationTable.TableType tableType) : base(OPCODE.SET_CALIBRATION_TABLE)
 {
     this.table     = table;
     this.tableType = tableType;
 }