Библиотека instrument.dll КРАТКОЕ ОПИСАНИЕ Библиотека должна называться instrument.dll и содержать следующие функции: InitInst: function(path: PChar): boolean; stdcall; Shutter: function(state: byte): boolean; stdcall; Filter: function(n: integer): boolean; stdcall; Lamp: function(const kind: PChar; state: byte): boolean; stdcall; Disp: function(n: byte; const state: PChar): boolean; stdcall; Slit: function(const state: PChar): boolean; stdcall; CloseInst: function: boolean; stdcall; 1. InitInst: Выполняет все необходимые действия по инициализации спектрографа. Параметры: path: имя директория где могут храниться необходимые данные для работы библиотеки. Эта и другие функции должны возвращать 1 если операция прошла успешно и 0 в противном случае. 2. Shutter: Открывает (state=1) и закрывает (state=0) затвор. 3. Filter: Устанавливает фильтр разделения порядков с заданным номером n. 4. Lamp: Включить (state=1) или выключить (state=0) лампу плоского поля (kind=FF) или спектра сравнения (kind=CS). 5. Disp: Установить наклон state для n-го диспергирующего устройства спектрографа. 6. Slit: Установить ширину щели спектрографа равной state. 7. CloseInst: Выполняет все необходимые действия по подготовке спектрографа к выключению, а библиотеки к выгружению из памяти. ОПИСАНИЕ ФУНКЦИЙ БИБЛИОТЕКИ. 1. InitInst: Записать в регистр X008, бит-0, значение 1. Если запись прошла успешно, вернуть в функции значение true. Если запись прошла с ошибкой, выдать сообщение "НЭСМИТ ошибка связи", выдать значение функции false. 2. Shutter: Делаем чтение бита-0 регистра Х008.Если бит равен 0, выводим сообщение "НЭСМИТ Не готов.", и выходим возвращая значение функции false. При значении state=1 в регистр X001 бит 0, записать значение 1. При значении state=0 в регистр X001 бит 0, записать значение 0. При успешном выполнении команды записи, вернуть значение функции true. При ошибки записи, вывести сообщение "Сбой управления Shutter", вернутьь значение функции false. 3.Filter: НЕ ИСПОЛЬЗУЕТСЯ 4. Lamp: kind - строковая переменная типа PChar if (kind<>'CS') and (kind<>'FF') Then Exit; Делаем чтение бита-0 регистра Х008.Если бит равен 0, выводим сообщение "НЭСМИТ Не готов.", и выходим возвращая значение функции false. Если kind='CS' и state=1 тогда установить в регистре X001 бит 2 в значение 1 Если kind='CS' и state=0 тогда установить в регистре X001 бит 2 в значение 0 Если kind='FF' и state=1 тогда установить в регистре X001 бит 1 в значение 1 Если kind='FF' и state=0 тогда установить в регистре X001 бит 0 в значение 1 5.Disp: Если значение angle менее 8 или больше 30. тогда выходим, возвращая значение функции false. Делаем чтение бита-0 регистра Х008.Если бит равен 0, выводим сообщение "НЭСМИТ Не готов.", и выходим возвращая значение функции false. Делаем чтение бита-2 регистра Х008. Если бит равен 1. выводим сообщение "НЭСМИТ занят.", и выходим возвращая значение функции false. Входное значение angle, умножаем на 1000, округляем до целого и записываем в регистр X005-X006. В регистр Х007, бит 0 - записать 0. В регистр Х007, бит 1 - записать 0. В регистр Х008. бит 2 - записать 0. Затем показть на экране прогресс- бар, с подписью Движение решетки. Значение прогрессбара. брать из регистра Х009, где о это 0%, а 255-это 100%. Необходимо чтобы значение обновлялось как минимум 2 раза в секунду. После того, как в регистре Х008, бит 2 примет значение 1, закрыть окно прогрессбара, и выйти из функции вернув значение true. 6.Slit: НЕ ИСПОЛЬЗУЕТСЯ. 7. CloseInst: В регистр Х008 бит 0 записать 0. В случае ошибки записи выдать сообщение "НЭСМИТ ошибка связи". Выйти из функции вернув значение 1.