smk 0 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Время традиционных СОМ-портов ушло. Теперь доминирует USB, по этому если требуется обеспечить работу прибора совместно с РС - следует применять именно USB. Собственно вопрос о том как используя Borland C++ Builder 6 создать необходимое ПО для РС, а именно в той части как обеспечить диалог по USB? Гуглил много, но самая популярная книга рассматривает это по в разрезе Visual C. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Посмотрите в сторону HID или виртуального ком порта, и не надо будет ничего писать на BC6 для PC НУ если сильно хочется можете посмотреть в сторону usbio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Почему не надо? Всеравно обмен по USB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjotar 0 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Будете использовать ваш старый софт, работавший с COM-портом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Будете использовать ваш старый софт, работавший с COM-портом. А подробней? Очень заинтриговало! Спасибо! Хотя это по большому счету полумера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Если USB-устройство запрограммировано, как виртуальный COM-порт (CDC-устройство), то со стороны Windows оно видно, как дополнительный COM-порт, работа с которым почти ничем не отличается от работы с обычным. "Почти" означает, что он, в отличие от настоящего, игнорирует установку бодов, четности, стоп-битов, уровней линий и пр., а всегда работает с максимальной скоростью. Соотвественно этому, на любом языке программирования крайне просто с ним работать. Открываешь файл с именем "\\.\COM8" (номер порта может быть любой) и кидаешь в него байты или читаешь их оттуда. Всё как при работе с файлом. Предельно просто и удобно. А вот со стороны устройства приходится потрудиться, чтобы чтобы все это работало. Особенно, если у вас МК со встроенным USB, а вы в USB ничего не понимаете. С HID-устройствами люди тоже работают, но я их не люблю и не использую. Мне по душе CDC-устройство, которое эмулирует COM-порт. При этом зачастую переход на USB-интерфейс позволяет использовать старые программы, расчитанные на связь по COM-порту. И если в своем устройстве поддерживаешь старый протокол, то программа никогда не узнает, что работает через USB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjotar 0 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Я только запускал примеры LUFA, это USB для AVR. Использование либы тривиально: для МК - подправить какой-нибудь config.h, в программе вызвать что-то вроде init(), и дальше можно писать/читать... При подключении к ПК винде даётся .inf, в системе появлятся COM-порт. Всё что записано в COM-порт c ПК программа микроконтроллере прочитает вызвав одну функцию, и наоборот... Ищите библиотеку для ваших МК... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 12 февраля, 2010 Опубликовано 12 февраля, 2010 (изменено) · Жалоба Время традиционных СОМ-портов ушло. Теперь доминирует 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 Изменено 12 февраля, 2010 пользователем UniSoft Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 12 февраля, 2010 Опубликовано 12 февраля, 2010 · Жалоба Может быть кто-то знает, в каких случаях 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 - тут я сразу догадалась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
manul78 4 13 февраля, 2010 Опубликовано 13 февраля, 2010 · Жалоба Может быть кто-то знает, в каких случаях CDC-устройство получает команды: #define SEND_ENCAPSULATED_COMMAND 0x00 #define GET_ENCAPSULATED_COMMAND 0x01 Вот уже год ищу везде, но так ничего и не нашла. Что надо в устройство послать, чтобы она получила эти экзотические команды? Возможно это поможет... :) usb_comm.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 13 февраля, 2010 Опубликовано 13 февраля, 2010 · Жалоба еще можно копнуть в сторону "nrComm Lib Pro" компонентов, правда не знаю поддерживают ли они 6-ой Builder, так вот в них есть компонента для работы с USB. Спасибо! Да, поддерживает, да есть USB. Но твм другая беда: trial version with nag screen. Как я понимаю на долгую и плодотворную работу расчитывать не приходится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 13 февраля, 2010 Опубликовано 13 февраля, 2010 · Жалоба Посмотрел вот это: 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 как я понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 13 февраля, 2010 Опубликовано 13 февраля, 2010 · Жалоба Идея понравилсь, однако не ясно как использовать два устройсва одновременно поскольку инсталяция следующего требует деинсталяции предидущего: (1) Clean up the previously installed AVR-CDC drivers, if any. See the [uninstallation] section. Не путайте инсталляцию драйверов и втыкание устройства. Воткнете два - будут работать два. FTDI это CDC как я понимаю? Нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
UniSoft 15 13 февраля, 2010 Опубликовано 13 февраля, 2010 · Жалоба Спасибо! Да, поддерживает, да есть 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 есть и вся необходимая документация, а также множество примеров, под разные компиляторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KSN 0 27 февраля, 2010 Опубликовано 27 февраля, 2010 · Жалоба Для работы с USB в C++Builder 6 можно использовать бесплатную библиотеку libusb-win32 ( http://libusb-win32.sourceforge.net) Пользуюсь ей регулярно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться