/// <summary> /// Подпрограмма инициализации драйвера платы PCI429 /// </summary> /// <returns></returns> private void Open() { // Установка признака инициализации _init = true; var str_att = new[] { XmlSettings.Pci429Card1Element, XmlSettings.Pci429Card2Element }; // Проверка наличия библиотеки var user_api = UnsafeNativeMethods.LoadLibrary(); if (IntPtr.Zero == user_api) { // Сборка DLL не найдена _init = false; App.MyWork.LogFileData += "Библиотека DLL PCI429_4.dll не найдена" + Environment.NewLine; CommonClass.set_result_text("Инициализация плат PCI-429", 1, 45, false, visible: true); } else { // Инициализация плат for (var i = 0; i < MaxDevice; i++) { var result = false; var address_device = 0U; var description = $"PCI-429,ADR#{address_device:D5}"; // Сдвиг шкалы ProgressBar App.MyWindows.ValueProgress++; // Считывание номера платы PCI429 из .xml файла XmlSettings.Read(XmlSettings.XmlCfgKtaName, str_att[i], XmlSettings.Pci429AttSn, out address_device); if (uint.MaxValue == address_device) { App.MyWork.LogFileData += "Ошибка чтения номера платы PCI429 из файла настроек" + Environment.NewLine; } else { try { // Инициализация драйвера // Создание объекта платы PCI429 address_device &= 0xFFFF; _device[i] = new GPCI429(( ushort )address_device); if (pci429_4_errors.INVALID_HANDLE_VALUE != _device[i].handle) { result = true; } else { // Указатель на плату не получен // Плата не инициализирована App.MyWork.LogFileData += $"Ошибка открытия 0х{_device[ i ].handle:X8}" + Environment.NewLine; } } catch (DllNotFoundException exc) { // The exception that is thrown when a DLL // specified in a DLL import cannot be found. // DllNotFoundException uses the HRESULT_COR_E_DLLNOTFOUND, // which has the value 0x80131524. App.MyWork.LogFileData += exc.Message + Environment.NewLine; } catch (EntryPointNotFoundException exc) { // The exception that is thrown // when an attempt to load a class fails // due to the absence of an entry method. // The EntryPointNotFoundException type // exposes the following members. App.MyWork.LogFileData += exc.Message + Environment.NewLine; } } if (!result) { // Плата не инициализирована // Сброс признака инициализации модуля _init = false; } // Возврат результата CommonClass.set_result_text($"Инициализация платы {description}", 1, 45, result, visible: true); } } }