Интернет-магазин

Просмотр корзины
В корзине:

товаров - 0 шт.



§ 11. Управление модулями Kernelchip из программы Microsoft Excel

Дмитрий Иванов, 16 Февраля 2011

Файлы к статье скачать
Имя: MSCOMM32.zip (ZIP архив)
Размер: 50 КБ

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

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

Программирование на VBA USB модуля Ke-USB24A

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

Пример программирования MSComm

Нажимайите "Да". Получим сообщение об успешной установке. Нажимаем "Ok".

Установка компонента MSComm


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

Программирование макросов на VBA

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

Программирование USB на VBA


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

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

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

Программирование USB на VisualBasic

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

Программирование VBA Excel

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

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

Программирование COM порта в Excel

Прежде чем мы начнем непосредственно писать программу нам еобходимо подключить компонент MSComm (тот самый который мы чуть выше только что устанавливали в системе). Для этого в редакторе VBA в меню выбираем Tools -> References....

Программирование USB KernelChip

Нажимаем кнопку Browse.... В появившемся окне выбора файлов отыскиваем наш компонент MSCOMM32.OCX - он должен находится в директории C:\Windows\system32\. Нажимаем Открыть, затем кнопку Ok.

Подключение MSCOMM32.OCX

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

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

Макросы Excel

Теперь можно собрать схему - я тут ни чего не меняю, использую как раньше: ко всем линиям ввода/вывода модуля Ke-USB24A подключены светодиоды. Все линии настроены на выход. Вот собственно и вся схемотехника. Итак, указываем номер COM порта модуля, нажимаем кнопку Открыть порт. Затем, указываем номер нужной линии и значение для записи (0 или 1). Нажимаем кнопку Записать - моргаем светодиодами.

Управление светодиодами из Excel

Мигание светодиодами через USB

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



© Дмитрий Иванов
16 Февраля 2011
http://www.kernelchip.ru



© KERNELCHIP 2006 - 2017