Для того чтобы Excel могла общаться с COM портом нам потребуется установить в системе специальный компонент от Microsoft - ActiveX элемент MSComm. Для этого скачайте файлы к этой статье (скачать). Там будет находиться папка ActiveX.
Для инсталляции компонента достаточно выполнить файл Instal.bat - он сам выполнит всю необходимую работу по установке и регестрации компонента в системе. В процессе его выполнения Вам будет задан вопрос такого вида:
Нажимайите "Да". Полим сообщение об успешной установке. Нажимаем "Ok".
Все компонент установлен, можно браться непосредственно за Excel. Запускаем программу. Нам необходимо следующим шагом разрешить выполнение макросов Excel, т.к. по умолчанию они скорее всего выключены. Для этого заходите в меню Сервис -> Макрос -> Безопасность...
Установите вариант низкой безопастности - ведь мы то уверены в том наша собственная программа безопасна.
Теперь определимся что мы собственно хотим получить от Excel:
Пусть на листе будут размещены элементы управления, которые позволят нам открывать доступ к устройству и записывать на указанную нами линию ввода/вывода низкий или высокий уровень напряжения.
Займемся расстановкой элементов управления. Для этого вызовите соответствующее окно, например, щелкнув правой кнпкой мыши по главному меню программы и выбрав в появившемся списке "Элементы управления".
Перетаскиваем необходимые элементы управления на лист: три надписи, три окошка ввода и две кнопки. Изменить текст элементов можно нажав правую кнопку мыши в редакторе свойств элемента. В результате должно получиться например вот так:
Теперь пора взяться собственно за программирование. Программа Excel, как в прочем и другие офисные программы от Microsoft (например, Word, Acsess и т.д.) имеют встроенную поддержку языка программирования VBA (Visual Basic For Application). Он представляет из себя несколько расширенный Visual Basic. Чтобы перейти в редактор программы дважды щелкните по кнопке "Открыть порт", ведь именно с нее начнется процесс выполнения программы.
Мы попадаем в редактор VBA, где перед нами появляется пустая заготовка кода для обработки события нажатия кнопки.
Прежде чем мы начнем непосредственно писать программу нам еобходимо подключить компонент MSComm (тот самый который мы чуть выше только что устанавливали в системе). Для этого в редакторе VBA в меню выбираем Tools -> References....
Нажимаем кнопку Browse.... В появившемся окне выбора файлов отыскиваем наш компонент MSCOMM32.OCX - он должен находится в директории C:\Windows\system32\. Нажимаем Открыть, затем кнопку Ok.
Пишем следующий код. Что он делает? Содаем экземпляр компонента для работы с портом, настраиваем его параметры и в конце открываем порт.
'Создаем экземпляр компонента для работы с портом
Dim KeUSB As New MSComm
Private Sub CommandButton1_Click()
'Настраиваем порт
KeUSB.CommPort = Val(TextBox1.Value)
KeUSB.Settings = "9600,N,8,1"
KeUSB.Handshaking = comNone
KeUSB.InputLen = 0
KeUSB.InBufferSize = 40
KeUSB.OutBufferSize = 40
KeUSB.RThreshold = 0
'Открываем порт
KeUSB.PortOpen = True
End Sub Далее возвращаемся на лист Excel. Дважды щелкаем на кнопку Записать. Добавляем следующий код:
Private Sub CommandButton2_Click()
'Формируем команду $KE,WR
KeUSB.Output = "$KE,WR," & TextBox2.Value & "," & TextBox3.Value & Chr(13) & Chr(10)
End Sub Все, с программированием закончили. Можно закрывать редактор VBA (незабываем сохранить перед выходом). Теперь нам необходимо на листе Excel перейти из режима редактора элементов управления в режим выполнения. Для этого на коне "Элементы управления" необходимо нажать соответсвующую кнопку в виде линейки-треугольника, чтобы она стала неактивной (не подствеченной).
Теперь можно собрать схему - я тут ни чего не меняю, использую как и в прошлой статье: ко всем линиям ввода/вывода модуля Ke-USB24A подключены светодиоды. Все линии настроены на выход. Вот собственно и вся схемотехника:
alt="" />
Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.
А вот и фотография конструкции. Схема набрана на макетной плате - очень удобно, паять ни чего не нужно. Здесь установлены не все 24 светодиода а меньше.
Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.
Программу конечно необходимо модернизировать - мы здесь ни как не анализируем ни ошибок выполнения, ни сами введенные данные. Однако не смотря на простоту данный пример показывает что с модулем Ke-USB24A можно работать практически из любой среды, в которой есть поддрежка ActiveX компонент и хоть какой-либо язык программирования (даже скриптовый). Например, работу с модулем можно интегрировать в программу Microsoft Acsess и вести базу данных, можно интегрировать данную концепцию в программу 1С, например, и проводить какие-либо действия по внешним событиям с датчиков (ключей) и т.д. - возможности неисчерпаемы. А можно продолжать развивать тему с Excel - например, использовать ее для автоматического построения графиков по данным получаемым с АЦП модуля.
Дмитрий Иванов 6 апреля 2008