Управление модулем Ke-USB24A из Excel

Первая часть

Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами. Как тут быть? — разбираться с подключением библиотек, вызовами системных функции и т.д.? Все это зачастую бывает сложно. Модуль Ke-USB24A совсем другое дело! Благодаря тому что программный интерфейс реализован в виде последовательного порта, можно программировать модуль практически на любом языке. Продемонстрируем это на примере. В этой статье мы рассмотрим как можно управлять выводами модуля из программы Excel! Да-да, именно из нее, где Вы обычно составляете таблицы и строите графики.

Для того чтобы Excel могла общаться с COM портом нам потребуется установить в системе специальный компонент от Microsoft — ActiveX элемент MSComm. Для этого скачайте файлы к этой статье. Там находиться папка ActiveX.

comp82-1.gif

Для инсталляции компонента достаточно выполнить файл Instal.bat — он сам выполнит всю необходимую работу по установке и регистрации компонента в системе. В процессе его выполнения Вам будет задан вопрос такого вида:

comp82-2.gif

Нажимайте «Да». Видим сообщение об успешной установке. Нажимаем «Ok».

comp82-3.gif

Все компонент установлен, можно браться непосредственно за Excel. Запускаем программу. Нам необходимо следующим шагом разрешить выполнение макросов Excel, т.к. по умолчанию они скорее всего выключены. Для этого заходите в меню Сервис -> Макрос -> Безопасность…

comp82-4.gif

Установите вариант низкой безопасности — ведь мы то уверены в том наша собственная программа безопасна.

comp82-5.gif

Теперь определимся что мы собственно хотим получить от Excel:

Пусть на листе будут размещены элементы управления, которые позволят нам открывать доступ к устройству и записывать на указанную нами линию ввода/вывода низкий или высокий уровень напряжения.

Займемся расстановкой элементов управления. Для этого вызовите соответствующее окно, например, щелкнув правой кнопкой мыши по главному меню программы и выбрав в появившемся списке «Элементы управления».

comp82-6.gif

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

comp82-7.gif

Теперь пора взяться собственно за программирование. Программа Excel, как в прочем и другие офисные программы от Microsoft (например, Word, Acsess и т.д.) имеют встроенную поддержку языка программирования VBA (Visual Basic For Application). Он представляет из себя несколько расширенный Visual Basic. Чтобы перейти в редактор программы дважды щелкните по кнопке «Открыть порт», ведь именно с нее начнется процесс выполнения программы.

Мы попадаем в редактор VBA, где перед нами появляется пустая заготовка кода для обработки события нажатия кнопки.

comp82-10.gif

Пишем следующий код. Что он делает? Создаем экземпляр компонента для работы с портом, настраиваем его параметры и в конце открываем порт.

 'Создаем экземпляр компонента для работы с портом 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 перейти из режима редактора элементов управления в режим выполнения. Для этого на коне «Элементы управления» необходимо нажать соответствующую кнопку в виде линейки-треугольника, чтобы она стала неактивной (не подсвеченной).

comp82-11.gif

Теперь можно собрать схему — я тут ни чего не меняю, использую как и в прошлой статье: ко всем линиям ввода/вывода модуля Ke-USB24A подключены светодиоды. Все линии настроены на выход. Вот собственно и вся схемотехника.

Схема

Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать — моргаем светодиодами.

comp82-12.gif

А вот и фотография конструкции. Схема набрана на макетной плате — очень удобно, паять ни чего не нужно. Здесь установлены не все 24 светодиода а меньше.

Собранная схема на макетной плате

Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать — моргаем светодиодами.

Программу конечно необходимо модернизировать — мы здесь ни как не анализируем ни ошибок выполнения, ни сами введенные данные. Однако не смотря на простоту данный пример показывает что с модулем Ke-USB24A можно работать практически из любой среды, в которой есть поддержка ActiveX компонент и хоть какой-либо язык программирования (даже скриптовый). Например, работу с модулем можно интегрировать в программу Microsoft Acsess и вести базу данных, можно интегрировать данную концепцию в программу 1С, например, и проводить какие-либо действия по внешним событиям с датчиков (ключей) и т.д. — возможности неисчерпаемы. А можно продолжать развивать тему с Excel — например, использовать ее для автоматического построения графиков по данным получаемым с АЦП модуля.

Автор: Дмитрий Иванов (Grirog). Апрель 2008 г.

Теги: