Перейти к содержанию
    

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

Время традиционных СОМ-портов ушло. Теперь доминирует USB, по этому если требуется обеспечить работу прибора совместно с РС - следует применять именно USB. Собственно вопрос о том как используя Borland C++ Builder 6 создать необходимое ПО для РС, а именно в той части как обеспечить диалог по USB? Гуглил много, но самая популярная книга рассматривает это по в разрезе Visual C. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

Посмотрите в сторону HID или виртуального ком порта, и не надо будет ничего писать на BC6 для PC

 

НУ если сильно хочется можете посмотреть в сторону usbio.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будете использовать ваш старый софт, работавший с COM-портом.

А подробней? Очень заинтриговало! Спасибо! Хотя это по большому счету полумера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если USB-устройство запрограммировано, как виртуальный COM-порт (CDC-устройство), то со стороны Windows оно видно, как дополнительный COM-порт, работа с которым почти ничем не отличается от работы с обычным. "Почти" означает, что он, в отличие от настоящего, игнорирует установку бодов, четности, стоп-битов, уровней линий и пр., а всегда работает с максимальной скоростью.

 

Соотвественно этому, на любом языке программирования крайне просто с ним работать. Открываешь файл с именем "\\.\COM8" (номер порта может быть любой) и кидаешь в него байты или читаешь их оттуда. Всё как при работе с файлом. Предельно просто и удобно.

 

А вот со стороны устройства приходится потрудиться, чтобы чтобы все это работало. Особенно, если у вас МК со встроенным USB, а вы в USB ничего не понимаете.

 

С HID-устройствами люди тоже работают, но я их не люблю и не использую. Мне по душе CDC-устройство, которое эмулирует COM-порт. При этом зачастую переход на USB-интерфейс позволяет использовать старые программы, расчитанные на связь по COM-порту. И если в своем устройстве поддерживаешь старый протокол, то программа никогда не узнает, что работает через USB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я только запускал примеры LUFA, это USB для AVR. Использование либы тривиально: для МК - подправить какой-нибудь config.h, в программе вызвать что-то вроде init(), и дальше можно писать/читать... При подключении к ПК винде даётся .inf, в системе появлятся COM-порт. Всё что записано в COM-порт c ПК программа микроконтроллере прочитает вызвав одну функцию, и наоборот...

 

Ищите библиотеку для ваших МК...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Время традиционных СОМ-портов ушло. Теперь доминирует USB, по этому если требуется обеспечить работу прибора совместно с РС - следует применять именно USB. Собственно вопрос о том как используя Borland C++ Builder 6 создать необходимое ПО для РС, а именно в той части как обеспечить диалог по USB? Гуглил много, но самая популярная книга рассматривает это по в разрезе Visual C. Спасибо.

самое простое это реализовать HID или CDC (т.е. виртуальный ком порт),

большинство производителей микроконтроллеров обычно дают примеры реализации таких устройств.

а также они обычно не требуют написания своих драйверов (в винде уже есть дрова), иногда просто обходятся немного подправленным inf файлом.

Но у этих девайсов есть один недостаток, это скорость...

Если нужна высокая скорость, то придется копать в сторону BULK устройств...

и к ним придется писать свой драйвер

(но можно и схитрить да взять готовый, к примеру из пакета usbio

http://www.thesycon.com/eng/usbio.shtml (но тут он демо, по-моему на 240 минут работы)

и в нем есть также примеры для PC, и еще тут он используется www.tnkernel.com

или еще лучше из PowerPac (там же есть и пример для контроллера и тестовые утилиты для PC под Visual Studio причем на чистом СИ, так что понять легко))

Ну или написать свой BULK драйвер, пример такого драйвера есть в DDK (а ныне WDK).

 

еще можно копнуть в сторону "nrComm Lib Pro" компонентов, правда не знаю поддерживают ли они 6-ой Builder, так вот в них есть компонента для работы с USB.

и еще можно тут посмотреть кое-какие идеи

https://forums.codegear.com/thread.jspa?thr...2&tstart=30

 

PS: вот только IAR похоже сильно торопились с релизом PowerPac, и немного накосячили,

(пример для контроллера STM32 для usb так и не завелся, хотя в предыдущей версии PowerPac работал сразу)

а еще они забыли вложить исходники файлов для работы с USB (в прежней версии они есть), да и без них примеры для PC не скомпилятся.

В общем вот эти файлы, во вложении...

USBBULK.rar

Изменено пользователем UniSoft

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть кто-то знает, в каких случаях CDC-устройство получает команды:

#define SEND_ENCAPSULATED_COMMAND 0x00
#define GET_ENCAPSULATED_COMMAND  0x01

Вот уже год ищу везде, но так ничего и не нашла.

Что надо в устройство послать, чтобы она получила эти экзотические команды?

 

А с остальными CDC-командами все предельно ясно без описаний:

#define GET_LINE_CODING           0x21
#define SET_LINE_CODING           0x20
#define SET_CONTROL_LINE_STATE    0x22
#define SEND_BREAK                0x23

- тут я сразу догадалась.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть кто-то знает, в каких случаях CDC-устройство получает команды:

#define SEND_ENCAPSULATED_COMMAND 0x00
#define GET_ENCAPSULATED_COMMAND  0x01

Вот уже год ищу везде, но так ничего и не нашла.

Что надо в устройство послать, чтобы она получила эти экзотические команды?

 

Возможно это поможет... :)

usb_comm.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще можно копнуть в сторону "nrComm Lib Pro" компонентов, правда не знаю поддерживают ли они 6-ой Builder, так вот в них есть компонента для работы с USB.

Спасибо! Да, поддерживает, да есть USB. Но твм другая беда: trial version with nag screen. Как я понимаю на долгую и плодотворную работу расчитывать не приходится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрел вот это: http://www.recursion.jp/avrcdc/cdc-232.html

Идея понравилсь, однако не ясно как использовать два устройсва одновременно поскольку инсталяция следующего требует деинсталяции предидущего: (1) Clean up the previously installed AVR-CDC drivers, if any. See the [uninstallation] section.

 

Хотелось бы прояснить вопросы программирования при использовании FTDI микросхем. Там драйвер не есть проблема и серийные номера там я думаю тоже все разные. А как писать ПО со стороны ПК? Как произвести обмен пакетами? FTDI это CDC как я понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Идея понравилсь, однако не ясно как использовать два устройсва одновременно поскольку инсталяция следующего требует деинсталяции предидущего: (1) Clean up the previously installed AVR-CDC drivers, if any. See the [uninstallation] section.

Не путайте инсталляцию драйверов и втыкание устройства. Воткнете два - будут работать два.

 

FTDI это CDC как я понимаю?

Нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Да, поддерживает, да есть USB. Но твм другая беда: trial version with nag screen. Как я понимаю на долгую и плодотворную работу расчитывать не приходится?

есть, такое...

но можно на-гуглить вот такие ссылки...

http://www.dumpz.ru/showpost.php?p=533673&postcount=390

http://rapidshare.com/files/294620815/nrCo..._7-2010_-_FS.7z

http://www.onlinedisk.ru/file/244810/

 

Хотелось бы прояснить вопросы программирования при использовании FTDI микросхем. Там драйвер не есть проблема и серийные номера там я думаю тоже все разные. А как писать ПО со стороны ПК? Как произвести обмен пакетами? FTDI это CDC как я понимаю?

Нет, FTDI это не CDC класс...

А работать с FTDI вообще просто, одно удовольствие...

они могут работать в двух режимах, либо как виртуальный ком порт, либо как D2XX устройство.

Конфигурация (VID, PID, и режимы) программируются в eeprom, обычно весит снаружи,

но есть и с внутренней eeprom'кой (обозначены как R, например FT232R, и в них, кстати, есть уникальный серийный номер, можно использовать для защиты от копирования)...

 

В режиме ком порта, работать можно как с обычным ком портом...

А в режиме D2XX, ftdichip предоставляют свой набор api функций в DLL, работа через которые намного упрощается...

У них на сайте http://www.ftdichip.com есть и вся необходимая документация, а также множество примеров, под разные компиляторы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для работы с USB в C++Builder 6 можно использовать бесплатную библиотеку libusb-win32 ( http://libusb-win32.sourceforge.net) Пользуюсь ей регулярно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...