Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами. Как тут быть? - разбираться с подключением библиотек, вызовами системных функци и т.д.? Все это зачастую бывает сложно. Модуль Ke-USB24A совсем другое дело! Благодаря тому что программный интерфейс реализован в виде последовательного порта, можно программировать модуль практически на любом языке. Продемонстрируем это на примере. В этой статье мы рассмотрим как можно управлять выводами модуля из программы Excel! Да-да, именно из нее, где Вы обычно составляете таблицы и строите графики.
Для того чтобы Excel могла общаться с COM портом нам потребуется установить в системе специальный компонент от Microsoft - ActiveX элемент MSComm. Для этого скачайте файлы к этой статье (скачать). Там будет находиться папка ActiveX.
![](https://kazus.ru/nuke/objects/articles/430/image/01.gif)
Для инсталляции компонента достаточно выполнить файл Instal.bat - он сам выполнит всю необходимую работу по установке и регестрации компонента в системе. В процессе его выполнения Вам будет задан вопрос такого вида:
![](https://kazus.ru/nuke/objects/articles/430/image/02.gif)
Нажимайите "Да". Полим сообщение об успешной установке. Нажимаем "Ok".
![](https://kazus.ru/nuke/objects/articles/430/image/03.gif)
Все компонент установлен, можно браться непосредственно за Excel. Запускаем программу. Нам необходимо следующим шагом разрешить выполнение макросов Excel, т.к. по умолчанию они скорее всего выключены. Для этого заходите в меню Сервис -> Макрос -> Безопасность...
![](https://kazus.ru/nuke/objects/articles/430/image/04.gif)
Установите вариант низкой безопастности - ведь мы то уверены в том наша собственная программа безопасна.
![](https://kazus.ru/nuke/objects/articles/430/image/05.gif)
Теперь определимся что мы собственно хотим получить от Excel:
Пусть на листе будут размещены элементы управления, которые позволят нам открывать доступ к устройству и записывать на указанную нами линию ввода/вывода низкий или высокий уровень напряжения.
Займемся расстановкой элементов управления. Для этого вызовите соответствующее окно, например, щелкнув правой кнпкой мыши по главному меню программы и выбрав в появившемся списке "Элементы управления".
![](https://kazus.ru/nuke/objects/articles/430/image/06.gif)
Перетаскиваем необходимые элементы управления на лист: три надписи, три окошка ввода и две кнопки. Изменить текст элементов можно нажав правую кнопку мыши в редакторе свойств элемента. В результате должно получиться например вот так:
![](https://kazus.ru/nuke/objects/articles/430/image/07.gif)
Теперь пора взяться собственно за программирование. Программа Excel, как в прочем и другие офисные программы от Microsoft (например, Word, Acsess и т.д.) имеют встроенную поддержку языка программирования VBA (Visual Basic For Application). Он представляет из себя несколько расширенный Visual Basic. Чтобы перейти в редактор программы дважды щелкните по кнопке "Открыть порт", ведь именно с нее начнется процесс выполнения программы.
Мы попадаем в редактор VBA, где перед нами появляется пустая заготовка кода для обработки события нажатия кнопки.
![](https://kazus.ru/nuke/objects/articles/430/image/08.gif)
Прежде чем мы начнем непосредственно писать программу нам еобходимо подключить компонент MSComm (тот самый который мы чуть выше только что устанавливали в системе). Для этого в редакторе VBA в меню выбираем Tools -> References....
![](https://kazus.ru/nuke/objects/articles/430/image/09.gif)
Нажимаем кнопку Browse.... В появившемся окне выбора файлов отыскиваем наш компонент MSCOMM32.OCX - он должен находится в директории C:\Windows\system32\. Нажимаем Открыть, затем кнопку Ok.
![](https://kazus.ru/nuke/objects/articles/430/image/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 перейти из режима редактора элементов управления в режим выполнения. Для этого на коне "Элементы управления" необходимо нажать соответсвующую кнопку в виде линейки-треугольника, чтобы она стала неактивной (не подствеченной).
![](https://kazus.ru/nuke/objects/articles/430/image/11.gif)
Теперь можно собрать схему - я тут ни чего не меняю, использую как и в прошлой статье: ко всем линиям ввода/вывода модуля Ke-USB24A подключены светодиоды. Все линии настроены на выход. Вот собственно и вся схемотехника:
![](https://kazus.ru/nuke/objects/articles/430/image/sh_big.gif)
Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.
![](https://kazus.ru/nuke/objects/articles/430/image/12.gif)
А вот и фотография конструкции. Схема набрана на макетной плате - очень удобно, паять ни чего не нужно. Здесь установлены не все 24 светодиода а меньше.
![](https://kazus.ru/nuke/objects/articles/430/image/module.jpg)
Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.
Программу конечно необходимо модернизировать - мы здесь ни как не анализируем ни ошибок выполнения, ни сами введенные данные. Однако не смотря на простоту данный пример показывает что с модулем Ke-USB24A можно работать практически из любой среды, в которой есть поддрежка ActiveX компонент и хоть какой-либо язык программирования (даже скриптовый). Например, работу с модулем можно интегрировать в программу Microsoft Acsess и вести базу данных, можно интегрировать данную концепцию в программу 1С, например, и проводить какие-либо действия по внешним событиям с датчиков (ключей) и т.д. - возможности неисчерпаемы. А можно продолжать развивать тему с Excel - например, использовать ее для автоматического построения графиков по данным получаемым с АЦП модуля.
Дмитрий Иванов 6 апреля 2008