Автор работы: Пользователь скрыл имя, 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
СПИСОК ЛИТЕРАТУРЫ……………………………………
Следующие четыре инструкции вставляют текст в ячейки 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(Аргумент строчного типа),
которая выполняет
До сих пор рассматривались изменения данных в активной ячейке и на текущем рабочем листе. Иногда требуется вводить данные на другой лист. Предположим, например, что после выполнения расчета стоимости необходимо заполнить накладную.
Для этого необходимо создать процедуру, копирующую значения ячеек одного листа в ячейки другого листа. Сначала, необходимо активизировать новый лист, выполнить процедуру Расчет_стоимости, используя допустимую величину скидки 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("
Range("C8").Value = _
Worksheets("Расчет").Range("
Range("C9").Value = _
Worksheets("Расчет").Range("
Установим в диапазоне B7:C9 размер шрифта 14
Range("B7:C9").Font.Size = 14
Range("B11").Value = "*** Спасибо за покупку! ***"
Range("B11").Font.Italic = True
End Sub
В этой процедуре впервые встречаются следующие объекты Excel, методы и свойства:
Процедура СоздатьНакладную создает новый рабочий лист с именем Накладная и выполняет копирование на него данных с рабочего листа с именем Расчет [8].
ПОСТАНОВКА ЗАДАЧИ
Реализованные
ранее в НИИ физики ОНУ имени
И.И.Мечникова программные
Для мобильного
использования универсального блока
необходимо обеспечить его программный
интерфейс в стандартных
ІІ ГЛАВА
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-порт, является программа HyperTerminal, входящая в состав всех широко распространенных версий ОС Windows. В качестве альтернативы можно применять специальную терминальную программу KeTerm, рекомендуемую разработчиком (для нее доступны исходные коды на языке С++, среды разработки Microsoft Visual C++ 6.0). Скачать ее можно на сайте Kernelchip. И наконец, наиболее интересный вариант - написать свою программу.
В качестве примера покажем управление устройством при помощи штатной для ОС Windows программы HyperTerminal. Для ее запуска необходимо выбрать Пуск - Программы - Стандартные - Связь - HyperTerminal. Тотчас же запуститься мастер создания нового соединения с предложением указать имя соединения. Указываем любое название. Следующим шагом необходимо выбрать COM-порт через который необходимо установить соединение. В списке выбрать такой номер порта, который был выделен Windows (отображено в диспетчере устройств, в нашем случае – COM3). Далее мастер предложит изменить настройки порта. В связи с тем, что устройство подключено не к реальному COM-порту, а к виртуальному, то можно оставить настройки используемого COM-порта по умолчанию [9].
После сообщения об установке соединения, для корректного обмена данными с устройством необходимо выполнить дополнительные настройки самой программы HyperTerminal. В открывшемся окне свойств программы, (кнопка с панели управления программой "Свойства" меню «Файлы») необходимо перейти на вкладку "Параметры" и нажать на кнопку "Параметры ASCII...". Далее необходимо установить флажки на опциях:
Особо следует обратить внимание на установку флажка на первой опции «Дополнять символы возврата каретки…» так как синтаксис команд устройства не требует чтобы, все команды заканчивались символом возврата каретки и перевода на новую строку.
Для решения основной задачи: работы с используемым устройством SUSB-ADAC в среде MS EXCEL, необходимы файлы:
Установка драйверов устройства осуществляется автоматически после запуска инсталлятора, в данном случае файла CDM 2.04.16.exe. После подключения устройства к шине USB, операционная система автоматически обнаруживает новое устройство и проводит необходимые действия для нормальной его работы. При этом вмешательство пользователя не требуется.
Для инсталляции компонента достаточно выполнить файл Instal.bat - он сам выполнит всю необходимую работу по установке и регистрации компонента в системе. После установки и регистрации компонента MSCOMM32.OCX, можно переходить к работе со средой MS Excel.
2.1.2 Управление СОМ-портом из Excel
Изначально необходимо разрешить выполнение макросов Excel, т.к. из соображений безопасности эта опция по умолчанию выключена. Для этого в меню Сервис - Макрос - Безопасность... необходимо установить вариант низкой безопасности. Далее необходимо на листе Excel разместить элементы управления, которые позволят открывать доступ к устройству, посылать ему команды, получать и отображать полученные от него данные. Для этого нужно вызвать соответствующее окно, например, щелкнув правой кнопкой мыши по главному меню программы и выбрав в появившемся списке "Элементы управления". Перетаскиваем необходимые элементы управления на лист: три надписи, три окошка ввода и две кнопки. Изменить текст элементов можно нажав правую кнопку мыши в редакторе свойств элемента [11]. В результате должно получиться так, как изображено на рис.6: