Здійснення контролю режимів та параметрів голографічного запису засобами Microsoft Office Excel з використанням СОМ-порту

Автор работы: Пользователь скрыл имя, 18 Февраля 2013 в 14:24, дипломная работа

Краткое описание

В настоящее время технологии сбора данных нашли самое широкое применение: от научно-исследовательских приложений до различных задач испытаний и автоматизации в промышленности. Для осуществления сбора данных ученые и инженеры используют персональные компьютеры (ПК) с шинами PCI, PXI, CompactPCI, PCMCIA, USB, FireWire, а также с последовательными и параллельными портами. Многие устройства сбора данных устанавливаются непосредственно в компьютер и передают данные напрямую в его память. В ряде задач используются удаленные устройства сбора данных, которые подключаются к ПК через сеть или через последовательный и параллельный порт.

Содержание

ВВЕДЕНИЕ………………………………………………………………………..3
І ГЛАВА………………………………………………………………………...…4
Обзор существующих систем сбора данных.
Обоснование выбора и формулировка поставленной задачи……………..4
1.1.1 Типы и характеристики измеряемых сигналов………………....4
1.1.2 Персональный компьютер. Шины и порты,
используемые для передачи данных………………………………..…8
1.2. Средства решения задачи……………………………………………...14
1.2.1. Сом-порт: особенности, достоинства
и применение……………………………………………………….…14
1.2.2 Использование Visual Basic for Applications
при работе с Microsoft Excel………………………………………….18
ПОСТАНОВКА ЗАДАЧИ………………………………………………………31
ІІ ГЛАВА…………………………………………………………………………32
2.1 Практическое приложение
разработанного программного пакета………………………………….…32
2.1.1 Подключение СОМ-порта………………………………………32
2.1.2 Управление СОМ-портом из Excel……………………………..35
2.2. Установка «Запись объемных амплитудно-фазовых
голограмм на окрашенных щелочно-галоидных
кристаллах». Структура и задачи…………………………………….……40
ВЫВОДЫ……………………………………………………………………...…46
СПИСОК ЛИТЕРАТУРЫ……………………………………

Прикрепленные файлы: 1 файл

Turkova.doc

— 1.26 Мб (Скачать документ)

Следующие четыре инструкции вставляют текст в ячейки B7 и B9.

Range("B7").Select

ActiveCell.FormulaR1C1 = "Цена с учетом скидки"

Range("B9").Select

ActiveCell.FormulaR1C1 = "Размер скидки"

Следующая далее  строка программного кода процедуры  выполняет выделение столбца B и  изменяет его ширину

Columns("B:B").ColumnWidth = 19.43

Можно выделить один или более столбцов с помощью метода Columns (столбцы). Ссылка на столбцы является аргументом этого метода. Затем можно использовать свойство ColumnWidth (ширина столбца) текущего выделения, чтобы установить ширину выделенных столбцов. Аналогичным образом можно выделить одну или несколько строк с помощью метода Rows (строки).

Далее, устанавливается  выравнивание текста по правому краю в выделенном диапазоне:

Range("B5:B9").Select

With Selection

HorizontalAlignment = xlRight

VerticalAlignment = xlBottom

WrapText = False

Orientation = 0

AddIndent = False

IndentLevel = 0

ShrinkToFit = False

ReadingOrder = xlContext

MergeCells = False

End With

Меняется формат ячейки и вводится формула:

Range("C7").Select

Selection.NumberFormat = "#,##0.00 [$грн.-422]"

ActiveCell.FormulaR1C1 = "=(1-R[2]C)*R[-2]C"

Меняется формат ячейки на процентный  и вводятся данные:

Range("C9").Select

Selection.NumberFormat = "0.00%"

Range("C9").Select

ActiveCell.FormulaR1C1 = "0.05%"

 

Созданную процедуру  можно выполнить различными способами. Для ее выполнения можно воспользоваться командой меню; создать специальную кнопку в строке меню или на панели инструментов; создать объект на рабочем листе (например кнопку). Для этого нужно активировать неиспользованный рабочий лист и выполнить команду Сервис, Макрос, Макросы. Появится диалоговое окно Макрос, содержащее имена всех доступных в данный момент процедур, объявленных в открытых книгах, в том числе и в личной книге макросов. Это диалоговое окно позволяет выполнить, изменить или удалить выделенную процедуру. Нужно выделить процедуру Расчет_стоимости и щелкнуть на кнопке Выполнить. Процедура будет выполнена. После этого текущий рабочий лист будет выглядеть так же, как тот, на котором записывалась эта процедура.

Полученный в результате записи текст процедуры можно изменить для достижения той или иной цели, применяя инструкции VBА. Предположим, что нужно задавать размер скидки, применяя диалоговое окно функции InputBox. Для этого в тексте кода процедуры Расчет_стоимости вместо инструкции ActiveCell.FormulaR1C1 = "5%", помещающей в ячейку C9 величину скидки 00.5 (5%), можно применить инструкцию:

ActiveCell.FormulaR1C1 = InputBox("Введите процент скидки")

После этого нужно  сохранить процедуру. Для проверки работы измененной процедуры Расчет_стоимости нужно ее выполнить.

В появившемся диалоговом окне нужно ввести значение скидки в виде десятичной дроби 0.3 (соответствует 30%) и щелкнуть на кнопке ОК. Если нет ошибки, то новый лист будет заполнен, а в ячейке C9 появится значение скидки 30,00%.

Предположим далее, что размер скидки ограничен, например не должен превышать 50%. Внесем в процедуру такие изменения, чтобы выполнялась проверка размера скидки. Если введенная скидка больше 50%, то ячейка должна быть очищена, формирование рабочего листа приостановлено, подан сигнал, а также выведено соответствующее предупреждающее сообщение. Если же размер скидки в норме, то должно быть завершено формирование рабочего листа и выведено подтверждающее сообщение. В тексте кода процедуры Расчет_стоимости инструкцию

ActiveSheet.Protect DrawingObjects:=True, _

Contents:=True, Scenarios:=True

замените на инструкцию If:

If Val(ActiveCell.FormulaR1C1) > 0.5 Then

MsgBox ("Величина скидки должна быть меньше 0,5 ")

ActiveCell.Clear

Beep

Else

ActiveSheet.Protect DrawingObjects:=True, _

Contents:=True, Scenarios:=True

MsgBox ("Формирование листа закончено")

End If

Особо следует обратить внимание на применение стандартной  функции Val(Аргумент строчного типа), которая выполняет преобразование аргумента типа строки в число  типа Double. VBA в отличие от VB, сам не выполняет в выражениях преобразование строчного типа операнда в числовой, а числового в строчный. За соответствием типов операндов выражения здесь обязан следить программист. При необходимости преобразовать число в строку применяется стандартная функция Str(Аргумент любого числового типа).

До сих пор рассматривались  изменения данных в активной ячейке и на текущем рабочем листе. Иногда требуется вводить данные на другой лист. Предположим, например, что после  выполнения расчета стоимости необходимо заполнить накладную.

Для этого необходимо создать процедуру, копирующую значения ячеек одного листа в ячейки другого листа. Сначала, необходимо активизировать новый лист, выполнить процедуру Расчет_стоимости, используя допустимую величину скидки 0.3 и ввести значение розничной цены равное 100. Далее необходимо снять защиту с листа с помощью команды Сервис, Защита, Снять защиту листа.

Чтобы создать новую  процедуру, необходимо выполнить команду Сервис, Макрос, Макросы. В поле Имя макроса ввести название создаваемой процедуры СоздатьНакладную и щелкнуть на кнопке Создать. В открывшемся окне кода модуля в редакторе необходимо ввести следующий текст процедуры:

Sub СоздатьНакладную()

';Назовем активный  лист именем Расчет

ActiveSheet.Name = "Расчет"

';Добавим рабочий лист

Worksheets.Add

';Назовем активный  лист (только что добавленный) именем Накладная

ActiveSheet.Name = "Накладная"

';Введем в ячейку C1 значение "Накладная"

Range("C1").Value = "Накладная"

';Установим в ячейке C1 шрифт полужирный, 14, курсив

Range("C1").Font.Bold = True

Range("C1").Font.Size = 14

Range("C1").Font.Italic = True

';Введем данные в  ячейки A3, A4 и A5

Range("A3").Value = "Склад"

Range("A4").Value = "Ленинградское шоссе 27-а"

Range("A5").Value = "Украина, г. Одесса"

';Введем данные в ячейки B7, B8 и B9

Range("B7").Value = "Розничная цена:"

Range("B8").Value = "Оптовая скидка:"

Range("B9").Value = "Оптовая цена:"

Установим ширину столбцов B и C

Columns("B:C").ColumnWidth = 30

Установим курсивный  шрифт в ячейках B7:B9

Range("B7:B9").Font.Italic = True

Скопируем данные из ячеек  листа Расчет в ячейки текущего листа

Range("C7").Value = _

Worksheets("Расчет").Range("C5").Value

Range("C8").Value = _

Worksheets("Расчет").Range("C9").Value

Range("C9").Value = _

Worksheets("Расчет").Range("C7").Value

Установим в диапазоне B7:C9 размер шрифта 14

Range("B7:C9").Font.Size = 14

Range("B11").Value = "*** Спасибо за покупку! ***"

Range("B11").Font.Italic = True

End Sub

В этой процедуре впервые  встречаются следующие объекты Excel, методы и свойства:

    • объект ActiveSheet – активный рабочий лист;
    • объект Worksheets – рабочий лист;
    • метод Add.Worksheets.Add – добавление нового рабочего листа;
    • свойство Value (значение) диапазона Range, обеспечивающее доступ к данным, содержащимся в ячейках диапазона.

Процедура СоздатьНакладную создает новый рабочий лист с именем Накладная и выполняет копирование на него данных с рабочего листа с именем Расчет [8].

 

ПОСТАНОВКА ЗАДАЧИ

 

Реализованные ранее в НИИ физики ОНУ имени  И.И.Мечникова программные оболочки интерфейса «исследователь-установка» для USB-устройств были узко-специализированы. Для автоматизации измерений был разработан и изготовлен блок сопряжения SUSB-DAC. В простейшем случае это устройство представляет цифро-аналоговый преобразователь (ЦАП) для управления пьезокерамикой с USB интерфейсом для подключения к персональному компьютеру. В развернутой комплектации устройство представляет собой двухканальный цифро-аналоговый преобразователь и двухканальный аналого-цифровой преобразователь (АЦП) с USB интерфейсом для подключения к ПК, совмещенных с восьмиканальным гальванически-развязанным коммутатором в одном устройстве. Применение коммутаторов позволяет проводить практическое любое активное воздействие на объект, например, при помощи электро-механических преобразователей. Кроме того, возможно управление световыми пучками и самими источниками излучения.

Для мобильного использования универсального блока  необходимо обеспечить его программный  интерфейс в стандартных программных  пакетав. Целью работы является создание в среде MS EXCEL программного пакета управления установкой «Записи объемных амплитудно-фазовых голограмм на окрашенных щелочно-галоидных кристаллах» осуществляющего управление и обмен данными по виртуальному COM-порту.

 

 

ІІ ГЛАВА

 

2.1 Практическое приложение разработанного программного пакета

 

Практически, данную работу условно можно разделить  на два этапа: подключение СОМ-порта  и управление СОМ-портом из MS EXCEL с  использованием VBA.

 

 

2.1.1 Подключение  СОМ-порта

 

Как отмечалось во введении, штатное использование портов COM или LPT не вызывало никаких трудностей. Windows предоставляет для этих целей набор API-функций. Вкратце напомним, что при использовании API-функций работа с данными портами ничем не отличается от работы с файлами. При таких операциях порты как файл открываются (функция CreateFile), можно производить запись данных в порт (Write File) или читать данные из порта (Read File) и закрывать порт (CloseHandle). При таком способе обмена данными вся необходимая функциональность ложится на внешнее устройство, подключенное к соответствующему порту. Эту функциональность могут обеспечить микроконтроллеры. Еще одним, редкоиспользуемым методом обращения с портами является использование компонента MSCOMM32.OCX. Такой подход позволяет нам доступными в EXCEL cредствами VBA наиболее простыми методами программировать используемое нами устройство.

После штатного установления драйверов и подключения применяемого нами устройства в списке устройств операционной системы, появляется новый COM-порт (Окно «Диспетчера устройств» представлено на рис. 5). Номер порта устанавливается системой в данном случае новым устройством является «USB Serial Port (COM3)», находящийся в ветви «Порты (COM и LPT)». Это не реальный COM-порт, а виртуальный порт, так как устройство подключено к шине USB.

Наиболее простым средством  управления устройством, зарегистрированным в системе как реальный или  виртуальный COM-порт, является программа HyperTerminal, входящая в состав всех широко распространенных версий ОС Windows. В  качестве альтернативы можно применять специальную терминальную программу KeTerm, рекомендуемую разработчиком (для нее доступны исходные коды на языке С++, среды разработки Microsoft Visual C++ 6.0). Скачать ее можно на сайте Kernelchip. И наконец, наиболее интересный вариант - написать свою программу.

 Рис. 5 Окно «Диспетчера устройств»

 

В качестве примера покажем  управление устройством при помощи штатной для ОС Windows программы HyperTerminal. Для ее запуска необходимо выбрать Пуск - Программы - Стандартные - Связь - HyperTerminal. Тотчас же запуститься мастер создания нового соединения с предложением указать имя соединения. Указываем любое название. Следующим шагом необходимо выбрать COM-порт через который необходимо установить соединение. В списке выбрать такой номер порта, который был выделен Windows (отображено в диспетчере устройств, в нашем случае – COM3). Далее мастер предложит изменить настройки порта. В связи с тем, что устройство подключено не к реальному COM-порту, а к виртуальному, то можно оставить настройки используемого COM-порта по умолчанию [9].

После сообщения  об установке соединения, для корректного обмена данными с устройством необходимо выполнить дополнительные настройки самой программы HyperTerminal. В открывшемся окне свойств программы, (кнопка с панели управления программой "Свойства" меню «Файлы») необходимо перейти на вкладку "Параметры" и нажать на кнопку "Параметры ASCII...". Далее необходимо установить флажки на опциях:

  • «Отображать введены символы на экране».
  • «Переносить строки, превышающие ширину терминала».

Особо следует обратить внимание на установку флажка на первой опции «Дополнять символы возврата каретки…» так как синтаксис команд устройства не требует чтобы, все команды заканчивались символом возврата каретки и перевода на новую строку.

Для решения основной задачи: работы с используемым устройством SUSB-ADAC в среде MS EXCEL, необходимы файлы:

  • драйвера аппаратных мостов фирмы FTDI (доступны на сайте разработчика http://www.ftdichip.com/FTDrivers.htm);
  • компонента MSComm32 и его регистрации в операционной системе (доступны например на http://cxem.net/comp/download/usb_module.rar [10]) и расположенные в папке ActiveX.

Установка драйверов  устройства осуществляется автоматически  после запуска инсталлятора, в данном случае файла CDM 2.04.16.exe. После подключения устройства к шине USB, операционная система автоматически обнаруживает новое устройство и проводит необходимые действия для нормальной его работы. При этом вмешательство пользователя не требуется.

Для инсталляции компонента достаточно выполнить файл Instal.bat - он сам выполнит всю необходимую работу по установке и регистрации компонента в системе. После установки и регистрации компонента MSCOMM32.OCX, можно переходить к работе со средой MS Excel.

 

 

2.1.2 Управление  СОМ-портом из Excel

 

Изначально необходимо разрешить выполнение макросов Excel, т.к. из соображений безопасности эта опция по умолчанию выключена. Для этого в меню Сервис - Макрос - Безопасность... необходимо установить вариант низкой безопасности. Далее необходимо на листе Excel разместить элементы управления, которые позволят открывать доступ к устройству, посылать ему команды, получать и отображать полученные от него данные. Для этого нужно вызвать соответствующее окно, например, щелкнув правой кнопкой мыши по главному меню программы и выбрав в появившемся списке "Элементы управления". Перетаскиваем необходимые элементы управления на лист: три надписи, три окошка ввода и две кнопки. Изменить текст элементов можно нажав правую кнопку мыши в редакторе свойств элемента [11]. В результате должно получиться так, как изображено на рис.6:

Информация о работе Здійснення контролю режимів та параметрів голографічного запису засобами Microsoft Office Excel з використанням СОМ-порту