/// <summary> /// Загрузка данных с устройства /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void loadFromDevice_Click(object sender, EventArgs e) { bool blocked = false; try { if (packetSyncMutex.WaitOne(defaultTimeWaitOnPacketMutex)) { blocked = true; biosTranslated = true; blocked = false; packetSyncMutex.ReleaseMutex(); } else { return; } if (!currentState.PacketsTurnOn) { currentState.PacketsTurnOn = true; TurnOnPackets(null, null); } LoadeForm loader = new LoadeForm(bios, currentState); if (loader.ShowDialog(this) == DialogResult.OK) { if (currentState.Eprom == null) { MessageBox.Show(this, "Произошла не предвиденная ошибка!" + Constants.vbCrLf + "не удалось загрузить таблицу описателей калибруемых параметров", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (currentState.CalibrationTableHandles == null) { MessageBox.Show(this, "Данные в EPROM устройстве не корректны!" + Constants.vbCrLf + "Не удалось выделить таблицу описателей калибровочных параметров", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); currentState.Eprom = null; } } loader.Close(); loader.Dispose(); gr.ResetPoint(); gr.ResetPoints(); gr.ResetScale(); ClearDataGrid(); onShown(null, null); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if (blocked) { packetSyncMutex.ReleaseMutex(); } currentState.PacketsTurnOn = false; TurnOffPackets(null, null); } }