/// <summary> /// Создает экземпляр класса Crate для управления крейтом /// </summary> /// <param name="csn">Строка - серийный номер крейта</param> /// <param name="servIP">IP-адрес LTR-сервера</param> /// <param name="ipStatus">Состояние подключения крейта</param> /// <param name="crateIP">IP-адрес крейта</param> public Crate(string csn, string servIP = "", LTRInfo.CrateIPStatus ipStatus = LTRInfo.CrateIPStatus.OFFLINE, string crateIP = "") { //переменная для обработки кодов ошибок при работе с крейтом _LTRNative.LTRERROR errorCode; //сохраняем переданный серийный номер крейта this.serialNumber = csn; //инициализируем структуру класса TLTR tLTR = new _LTRNative.TLTR(); errorCode = _LTRNative.LTR_Init(ref tLTR); LTRInfo.CheckOperationStatus(errorCode, "Ошибка инициализации крейта"); //передаем серийный номер крейта в управляющую структуру tLTR.csn = LTRInfo.GetByteSN(csn); //передаем IP-адрес ltr-сервера в управляющую структуру if (servIP != "") tLTR.saddr = LTRInfo.GetServerIP(servIP); //задаем состояние подключия крейта this.IPStatus = ipStatus; //задаем IP-адрес самого крейта this.IPAddress = crateIP; //выделяем память для списка модулей крейта modules = new List<CrateModule>(); //получаем информацию о крейте GetCrateInfo(); //получаем список модулей крейта GetCrateModules(); //если крейт двухместный, то оставляем в списке модулей только 2 модуля if (this.CrateType == (byte)LTRInfo.CrateType.CRATE_TYPE_LTR021) for (int i = this.modules.Count - 1; i > 1; i--) this.modules.RemoveAt(i); }
//Получение списка крейтов private void menuItemGetCratesList_Click(object sender, EventArgs e) { if (sender is ComboBox && !checkBoxGetCratesOnSelect.Checked) return; ClearFields(); string servIP = (comboBoxIP.Items.Count == 0 || comboBoxIP.SelectedIndex == -1) ? "127.0.0.1" : serversList[comboBoxIP.SelectedIndex].ServerIP; LTRInfo cratesInfo; try { cratesInfo = new LTRInfo(servIP); } catch (Exception exc) { MessageBox.Show(String.Format("Ошибка установки соединения с сервером {0}: \n{1}", comboBoxIP.Text, exc.Message), "Ошибка"); return; } crates.Clear(); //добавляем не IP-шные крейты и выключенные if (cratesInfo.CratesSerialNumbers.Length != cratesInfo.CratesStatesList.Length) { bool isContain; foreach (string crateSN in cratesInfo.CratesSerialNumbers) { isContain = false; foreach (LTRInfo.TIPCRATE_ENTRY_EXTEND csl in cratesInfo.CratesStatesList) if (isContain = csl.serial_number == crateSN) break; if (!isContain) AddCrate(new Crate(crateSN, servIP, LTRInfo.CrateIPStatus.ONLINE, "USB")); } } //теперь добавляем IP-шные foreach (LTRInfo.TIPCRATE_ENTRY_EXTEND csl in cratesInfo.CratesStatesList) { AddCrate(new Crate(csl.serial_number, servIP, csl.status, csl.ip_addr)); } //подключаемся к БД KD2210 для получения конфига, его парсинга и получения точек измерений ConnectToDataBase(); }