Главная arrow Программирование arrow AVR arrow Как использовать библиотеку libusb в Visual Studio (управление макеткой AVR-USB-MEGA16) Thursday, May 25 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:

Как использовать библиотеку libusb в Visual Studio (управление макеткой AVR-USB-MEGA16) Версия для печати
Написал microsin   
11.05.2009

В этой статье описана простая демонстрационная программа, показывающая, как вызывать и использовать функции библиотеки libusb-Win32 (находящиеся в libusb0.dll) из программы на C++, написанной в MS Visual Studio.

Для работы программа нуждается в установке библиотеки libusb для Windows, которую закачать можно по ссылке [1] (установка никаких вопросов и затруднений не вызывает). Программа управляет светодиодом на макетке AVR-USB-MEGA16, см. ссылку [5], в которую прошит firmware из примера hid-custom-rq пакета V-USB компании Objective Development (это firmware работает как устройство USB HID). AVR-USB теперь переименовали в V-USB, и пакет примеров можно свободно скачать с сайта компании Objective Development, см. ссылку [2]. Русифицированный пакет библиотеки V-USB можно также скачать по ссылке [2], прошивка firmware находится в файле examples\hid-custom-rq\firmware\main.hex архива пакета (пакет русской версии библиотеки).

Программа сделана на основе диалогового окна, и её шаблон подготовлен мастером Visual Studio в режиме "Dialog-based MFC application". Алгоритм работы программы прост - при запуске читается состояние светодиода на макетке. Если он горит, ставится галочка в чекбоксе "Светодиод горит", а если нет, то галочка снимается. Если пользователь меняет состояние галочки, то светодиод соответственно зажигается или гаснет.

AVR-USB-MEGA16-switching.gif

Принцип работы программы и код управления взят из консольной программы хоста, файлы set-led.c и opendevice.c (находящиеся в том же пакете примеров, папка examples\hid-custom-rq\commandline\). Добавлен только код загрузки библиотеки libusb0.dll) и инициализация указателей на используемые в ней библиотечные функции, что реализовано в модуле libusb_func.cpp. Идея загрузки библиотеки и указателей на функции взята из документа "HID device coding example.pdf", где имеется пример работы с HID-устройством USB, но через другую библиотеку - hid.dll (эта библиотека входит в состав Windows).

Проект можно скачать здесь - http://microsin.ru/Download.cnt/avr/set-led-gui.zip. Список файлов проекта и их краткое описание:
doc\"HID device coding example.pdf" пример загрузки dll и использование функций из неё
Debug\set-led-gui.exe скомпилированное в режиме Debug приложение
Debug\set-led-gui.exe скомпилированное в режиме Release приложение
res\*.* файлы ресурсов проекта
libusb_func.h заголовочный файл для загружаемых из libusb0.dll функций, а также объявление функции LoadLibusbFuncFromDLL, загружающей libusb0.dll и инициализирующей указатели на функции.
libusb_func.cpp код LoadLibusbFuncFromDLL и объявление необходимых переменных.
opendevice.cpp файл, взятый почти без изменений из консольного ПО хоста hid-custom-rq\commandline. Здесь находятся вспомогательные функции для открытия устройства.
opendevice.h заголовочный файл для opendevice.cpp.
ReadMe.txt текст, который Вы сейчас читаете
requests.h заголовочный файл, взятый без изменения из examples\hid-custom-rq\firmware\ пакета AVR-USB. Тут описаны используемые запросы USB
Resource.h заголовочный файл Visual Studio для использования ресурсов
set-led-gui.aps один из файлов проекта Visual Studio
set-led-gui.cpp файл, сгенерированный Visual Studio
set-led-gui.h заголовочный файл, сгенерированный Visual Studio
set-led-gui.ncb один из файлов проекта Visual Studio
set-led-gui.rc файл описания ресурсов, сгенерированный Visual Studio
set-led-gui.sln файл проекта Visual Studio - "файл решений"
set-led-gui.suo один из файлов проекта Visual Studio
set-led-gui.vcproj основной файл проекта Visual Studio
set-led-guiDlg.cpp файл описания функционала диалогового окна. Здесь сосредоточен основной код приложения
set-led-guiDlg.h заголовочный файл, сгенерированный Visual Studio
stdafx.cpp файл, сгенерированный Visual Studio
stdafx.h заголовочный файл, сгенерированный Visual Studio
usb.h файл из пакета libusb, в котором я позаимствовал определения библиотечных функций. Функции, загружаемые из libusb0.dll, в этом файле закомментированы
usbconfig.h заголовочный файл, взятый без изменения из examples\hid-custom-rq\firmware\. В нем определены основные параметры устройства USB HID, с которым работает программа (Vendor ID, Product ID и др.).

[Управление светодиодом AVR-USB-TINY45

Аналогичный пример firmware для управления макетной платой AVR-USB-TINY45 можно скачать по ссылке [6]. Оно реализует точно такое же USB-устройство, как и firmware AVR-USB-MEGA16, так что ПО хоста одинаковое для обеих макетных плат (исходный код для ATmega32 портирован на микроконтроллер ATtiny85).

AVR-USB-TINY45-switching.gif 

[Ссылки]

1. Библиотека libusb (используется для ПО хоста).
2. Версии библиотеки V-USB на английском языке с сайта Objective Development. Библиотека V-USB, переведенная на русский язык - исходники с комментариями на русском языке и примерами (используется для firmware микроконтроллера).
3. Разработка устройства USB - как начать работу с библиотеками AVR USB и libusb.
4. Примеры, описанные в этой статье - прошивки firmware (для макетной платы AVR-USB-MEGA16 с микроконтроллерами ATmega16 и ATmega32 на все поддерживаемые частоты кварцев) с исходниками, программа для хоста (компьютера) для командной строки и GUI с исходниками.
5Макетная плата AVR-USB-MEAG16.
6Пакет библиотеки V-USB, где содержатся примеры кода как для AVR-USB-MEGA16, так и для AVR-USB-TINY45, описанные в этой статье
7Как портировать проекты V-USB с ATmega16 (ATmega32) на ATtiny45 (ATtiny85).

Последнее обновление ( 27.09.2011 )
 

Комментарии  

  1. #6 help me
    2011-06-1220:01:20 Hello sir!

    What type of circuits and firmware used for this "set-led-gui" on VC++6.0?.
    You can list the details are not?
    Much grateful to you

    Какие схемы и прошивки для использования "для установки LED-GUI на VC + +6.0" это?
    Вы можете просмотреть детали нет?
    Много благодарен вам

    microsin: firmware here: http://www.obdev.at/products/vusb/index.html, press "Download" and download, use example examples\hid-custom-rq\firmware\, schematics see in fold \circuits\. Or download all from link [4], schematic see here - http://microsin.ru/images/stories/hard/avr-usb-mega16-sch.jpg
  2. #5 дмитрий
    2011-04-0316:20:28 Правильно я понимаю, что эта программа будет работать со стандартной прошивкой с которой вы поставляете макетку и в контроллер ничего прошивать не надо?

    microsin: Вы поняли почти правильно, но нужно кое-что уточнить:
    1. Да, в макетку по умолчанию, кроме бутлоадера USBasp, прошита еще и прошивка, работа с которой описана в этой статье.
    2. Эту прошивку ни в коем случае нельзя назвать "стандартной", и она ничего, кроме как управлять светодиодом и читать его состояние, не умеет. Только простейший пример использования макетки, и все.
    3. Поигравшись с этой прошивкой, Вам все равно придется записать в чип другую программу. Это можно сделать как через программатор, так и через бутлоадер USBasp.
  3. #4 Дмитрий
    2011-03-2719:31:37 А есть ли пример какой-нибудь простейшей программы (например то же зажигание светодиода) написанной на Borland C++ Builder ???

    microsin: проекта на Borland C++ Builder нет, к сожалению. Научитесь загружать в память DLL библиотеки libusb и получать указатели на её функции. После этого сможете взять код любого примера на C.
  4. #3 andrey
    2010-10-1620:54:33 Могли бы Вы дать firmware предназначенную для ATmega32, которую зашиваете в качестве тестовой. У меня не получается перекомпилирова ть, а начальную я не сохранил.

    microsin: напишите на email (см. Контакты), все что надо вышлю.
  5. #2 andrey
    2010-10-1512:02:50 Добрый день. Подойдет ли прошивка(и) firmware предназначенные для ATmega16, для макетки с установленной ATmega32.

    microsin: для общего случая - не подойдут, так как у ATmega16 и ATmega32 отличаются таблицы векторов прерываний. Некоторые прошивки могут подойти и будут работать, и их большинство. Но лучше все-таки не испытывать судьбу, а просто перекомпилирова ть на другой тип процессора.
  6. #1 Sweed
    2010-08-3014:47:06 А возможно использовать данные библиотеки для Borland C++ Builder?

    microsin: можно, конечно. И не только для Borland C++ Builder, но и для любой другой системы программировани я. Нужно всего лишь загрузить dll библиотеки libusb, и получить указатели на её функции.

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017