Exemplo n.º 1
0
        /// <summary>
        /// показать форму выбора калибруемого канала
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listOfChannels_Click(object sender, EventArgs e)
        {
            if (currentState.CalibrationTableHandles == null)
            {
                MessageBox.Show(this, "Не загруженна таблица калибровочных параметров",
                                "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            ChannelsForm cha = new ChannelsForm();

            int i = 1;

            foreach (CalibrationTableHandle handle in currentState.CalibrationTableHandles)
            {
                ListViewItem item = new ListViewItem(i.ToString());

                ListViewItem.ListViewSubItem id     = new ListViewItem.ListViewSubItem(item, string.Format("{0:X2}", handle.Name));
                ListViewItem.ListViewSubItem offset = new ListViewItem.ListViewSubItem(item, string.Format("{0:X2}", handle.Offset));
                ListViewItem.ListViewSubItem name   = new ListViewItem.ListViewSubItem(item, "");

                item.Tag = handle;

                item.SubItems.Add(id);
                item.SubItems.Add(offset);
                item.SubItems.Add(name);

                cha.listViewChannels.Items.Add(item);
                i = i + 1;
            }

            if (cha.ShowDialog(this) == DialogResult.OK)
            {
                if (cha.listViewChannels.SelectedItems != null)
                {
                    if (cha.listViewChannels.SelectedItems[0].Tag is CalibrationTableHandle)
                    {
                        currentState.SelectedCalibrationTable = (CalibrationTableHandle)cha.listViewChannels.SelectedItems[0].Tag;
                        LastError lastError = bios.GetCalibrationTable(currentState.Eprom, currentState.SelectedCalibrationTable);

                        switch (lastError)
                        {
                        case LastError.Success:

                            ShowCalibrationTableInGraphics(currentState.SelectedCalibrationTable.CalibrationTable);
                            ShowCalibrationTableInDataGrid(currentState.SelectedCalibrationTable.CalibrationTable);

                            if (currentState.SelectedCalibrationTable.CalibrationTable.IsExtremCalculated)
                            {
                                if (currentState.SelectedCalibrationTable.CalibrationTable.IsValidExtremPoints == false)
                                {
                                    checkBoxCaculateSide.Checked = false;
                                    if (MessageBox.Show(this, "Крайние точки расчитаны не корректно" + Constants.vbCrLf +
                                                        "Сбросить крайние точки в значение по умолчанию?", "Ошибка", MessageBoxButtons.YesNo,
                                                        MessageBoxIcon.Exclamation) == DialogResult.Yes)
                                    {
                                        currentState.SelectedCalibrationTable.CalibrationTable.ClearExtremPoints();
                                    }
                                }
                                else
                                {
                                    checkBoxCaculateSide.Checked = true;
                                }
                            }
                            else
                            {
                                checkBoxCaculateSide.Checked = false;
                            }

                            checkBoxCaculateSide_CheckedChanged(checkBoxCaculateSide, new EventArgs());
                            checkBoxDoScale_CheckedChanged(checkBoxDoScale, new EventArgs());

                            onShown(null, null);

                            if (packetSyncMutex.WaitOne(defaultTimeWaitOnPacketMutex))
                            {
                                currentState.SelectedCalibrationTable.CalibrationTable.CalculateKoef();
                                currentState.SelectedCalibrationTable.CalibrationTable.SaveTable();

                                biosTranslated = false;
                                if (!currentState.PacketsTurnOn)
                                {
                                    currentState.PacketsTurnOn = true;
                                }
                                TurnOnPackets(null, null);

                                packetSyncMutex.ReleaseMutex();
                            }
                            else
                            {
                                MessageBox.Show(this, "Не настроить таблицу калибровки для работы." +
                                                Constants.vbCrLf + "Перезагрузите таблицу калибровки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }

                            break;

                        case LastError.Error:

                            MessageBox.Show(this, "Не удалось загрузить таблицу калибровки." +
                                            Constants.vbCrLf + "Возможно данные не корректы в таблице калибровки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            break;

                        case LastError.Default:

                            break;

                        default:

                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// показать форму выбора калибруемого канала
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listOfChannels_Click(object sender, EventArgs e)
        {
            if (currentState.CalibrationTableHandles == null)
            {
                MessageBox.Show(this, "Не загруженна таблица калибровочных параметров",
                    "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            ChannelsForm cha = new ChannelsForm();

            int i = 1;
            foreach (CalibrationTableHandle handle in currentState.CalibrationTableHandles)
            {
                ListViewItem item = new ListViewItem(i.ToString());

                ListViewItem.ListViewSubItem id = new ListViewItem.ListViewSubItem(item, string.Format("{0:X2}", handle.Name));
                ListViewItem.ListViewSubItem offset = new ListViewItem.ListViewSubItem(item, string.Format("{0:X2}", handle.Offset));
                ListViewItem.ListViewSubItem name = new ListViewItem.ListViewSubItem(item, "");

                item.Tag = handle;

                item.SubItems.Add(id);
                item.SubItems.Add(offset);
                item.SubItems.Add(name);

                cha.listViewChannels.Items.Add(item);
                i = i + 1;
            }

            if (cha.ShowDialog(this) == DialogResult.OK)
            {
                if (cha.listViewChannels.SelectedItems != null)
                {
                    if (cha.listViewChannels.SelectedItems[0].Tag is CalibrationTableHandle)
                    {
                        currentState.SelectedCalibrationTable = (CalibrationTableHandle)cha.listViewChannels.SelectedItems[0].Tag;
                        LastError lastError = bios.GetCalibrationTable(currentState.Eprom, currentState.SelectedCalibrationTable);

                        switch (lastError)
                        {
                            case LastError.Success:

                                ShowCalibrationTableInGraphics(currentState.SelectedCalibrationTable.CalibrationTable);
                                ShowCalibrationTableInDataGrid(currentState.SelectedCalibrationTable.CalibrationTable);

                                if (currentState.SelectedCalibrationTable.CalibrationTable.IsExtremCalculated)
                                {
                                    if (currentState.SelectedCalibrationTable.CalibrationTable.IsValidExtremPoints == false)
                                    {
                                        checkBoxCaculateSide.Checked = false;
                                        if (MessageBox.Show(this, "Крайние точки расчитаны не корректно" + Constants.vbCrLf +
                                                "Сбросить крайние точки в значение по умолчанию?", "Ошибка", MessageBoxButtons.YesNo,
                                                MessageBoxIcon.Exclamation) == DialogResult.Yes)
                                        {
                                            currentState.SelectedCalibrationTable.CalibrationTable.ClearExtremPoints();
                                        }
                                    }
                                    else
                                        checkBoxCaculateSide.Checked = true;
                                }
                                else
                                    checkBoxCaculateSide.Checked = false;

                                checkBoxCaculateSide_CheckedChanged(checkBoxCaculateSide, new EventArgs());
                                checkBoxDoScale_CheckedChanged(checkBoxDoScale, new EventArgs());

                                onShown(null, null);

                                if (packetSyncMutex.WaitOne(defaultTimeWaitOnPacketMutex))
                                {
                                    currentState.SelectedCalibrationTable.CalibrationTable.CalculateKoef();
                                    currentState.SelectedCalibrationTable.CalibrationTable.SaveTable();

                                    biosTranslated = false;
                                    if (!currentState.PacketsTurnOn) currentState.PacketsTurnOn = true;
                                    TurnOnPackets(null, null);

                                    packetSyncMutex.ReleaseMutex();
                                }
                                else
                                    MessageBox.Show(this, "Не настроить таблицу калибровки для работы." +
                                        Constants.vbCrLf + "Перезагрузите таблицу калибровки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

                                break;

                            case LastError.Error:

                                MessageBox.Show(this, "Не удалось загрузить таблицу калибровки." +
                                    Constants.vbCrLf + "Возможно данные не корректы в таблице калибровки", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                break;

                            case LastError.Default:

                                break;

                            default:

                                break;
                        }
                    }
                }
            }
        }