usb для чайника.

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

А как же функция LoadLibrary чтобы загрузить ftd2xx.dll, а как же функция FreeLibrary, для освобождения dll?
ftd2xx можно прилинковать статически. Use ftd2xx.lib & ftd2xx.h, Luke!
"левые" DLL не нужны.
А HID_LIB не "левая"? :)))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Пример:

Код: Выделить всё

#include "ftd2xx.h"

...

FT_STATUS fs;
FT_HANDLE h;

//открываем соединение
fs=FT_OpenEx("[тут серийный номер нашего девайса]",FT_OPEN_BY_SERIAL_NUMBER,&h);

//Либо можно просто открыть первое устройство на шине:
//fs=FT_Open(0,&h);

if (fs!=FT_OK)
  printf("Couldn't open specified device.\n");
else
{
  //Устанавливаем "1" на DTR
  FT_SetDtr(h);
  //Или "0"
  //FT_ClrDtr(h);
  FT_Close(h);
}
Все. А к DTR мы можем подключить все что угодно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

YS писал(а):А HID_LIB не "левая"?
Это не DLL и ее за прогой тащить не надо.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Еще раз.

Существует ftd2xx.lib. Она линкуется статически.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Вопролс у меня есть теоретический - ковыряюсь с SWUSB.LBX для BASCOM

Вопрос - можно-ли с ее помощью создать составное USB устройство из внешнего диска на котором есть программа управления (запускаемая autoran) и HID устройства, которым она управляет. Идея - подключили устройство - программа запустилась, устройство отключили - программа управления не обнаружив устройство в очередном цикле опроса самоликвидировалась. Внешнюю память необходимого объема для программы подключу. Вот организовать на ней файловую систему сложнее - ну наверное что-то типа FAT12 можно.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):Внешнюю память необходимого объема для программы подключу. Вот организовать на ней файловую систему сложнее - ну наверное что-то типа FAT12 можно.
А ее и не надо тебе организовывать. Придется реализовать набор комманд SCSI.
Реклама
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Тоесть простыми способами это не реалисуется ? Просто у Миландра есть реализации подобных устройств на много более убогом их клоне какого-то PIC17не помню. Иходники они зажимают - гады. Вот и вопрос - насколь это все реально. Особ учитывая что у миландровского контролера ОЗУ нет, только в алитернативных наборах регистров можно что-то хранить. Контролер USB там аппаратный, но урезанный и думаю библиотека SWUSB.LBX его впролне заменит. Вопрос только в реализации. Правда отдельный HID они не пользуют, а пишут в определенные сектора "масс сторадж". (Если им можно верить).
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Да нет вобщем то никаких проблем. кроме софтового УСБ low speed 1.1, которому кроме единственного софтового ендпойнта ничего не положено -))
Если такая страсть к AVRам - бери at90usb и делай устройство хоть 3 в 1, для некоторых классов ендпойнтов хватит.

А в 1886ВЕ4У настоящий нормальный USB fullspeed контроллер:
"Универсальный аппаратно реализованный контроллер и аналоговый приемопередатчик интерфейса USB 1.1, с четырьмя пользовательскими оконечными точками и со скоростью передачи до 12 Мбит/с."

Совершенно законно на нем делается HID+Mass storage, отвечающий всем стандартам.

SWUSB.LBX стоит очень далеко внизу от этого.
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Разве по спецификации USB1.1 не 6 (5 свободных) кончных точек полагается ?

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

AT90USB в наших деревнях достать проблематично, а с интернет-магазинами пока связываться не хочется (много печального опыта имею когда деньги пропадали или фактическая стоимость в 4-5 раз больше заявленной получалась).
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):Разве по спецификации USB1.1 не 6 (5 свободных) кончных точек полагается ?
Для lowspeed девайса полагается только контрол-эндпойнт и всё.
AT90USB в наших деревнях достать проблематично, а с интернет-магазинами пока связываться не хочется (много печального опыта имею когда деньги пропадали или фактическая стоимость в 4-5 раз больше заявленной получалась).
Оно есть даже у местного назойливого фарцовщика за смехотворные деньги. купи у него.
Подожди, 10 минут и он тут отпишется -)))
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

А разве обычному юзеру этак конечная точка вообще доступна ? Она-же для процесса идентификации устройства ? Или это только у 1886 ? Или это для всех HID есть только 1 конечная точка.

ЗЫЖ через эту библиотеку данные гоняются в двух направлениях, а вроде как каждая конечная точка симплексна и направление выбирается в процессе инициализации.

ЗЫЖ - USB занимаюсь 2 месяца (если не считать - как лет 5 назад пытался IGORPLUG подружить с USB драйвером OSR 2.1 :))) и кривым аппаратным контролером из i430TX )- в голове каша, учитываю, что программы под PC я не писал до того и о языках высокго уровня знал только, что они есть, писал только на assembler
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):А разве обычному юзеру этак конечная точка вообще доступна ? Она-же для процесса идентификации устройства ? Или это только у 1886 ?
Доступна. По ней идет обмен стандартного вида запросами (шапка+данные), но кроме различных конфигурационных запросов возможны и девайзо-специфичные запросы.
Всякие приблуды на основе HIDа именно по контрол-эндпойнту и общаются.
ЗЫЖ. У нас в городе микроконтроллеры купить вообще нельзя :-) или точнее :cry:
В Калуге? И чего, почта, служба доставки не существуют ?
Я живу в 8км от Москвы, работаю в Москве и то все заказываю исключительно по почте или курьерскими службами хотя бы для удобства и экономии времени.
Так что особо разницы между твоим и моим городом не наблюдаю
да когда в Москву езжу - кое что прикупаю.
И это, надо полагать, не раз в 5 лет происходит ? -))
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Получается что для HID устройств малой скорости конечная точка только одна и обмен по ней 2х направленный ?

ЗЫЖ более-менее разобрался с Pure Basic для Win - там пользую рекомендованную библиотеку HID_Lib. Но в переспективе надо будет работать с 1886 - а есть-ли для оного компилятора библиотеки, поддерживающие высокоскоростные устройства (опять-же хочу прикидываться HID (уже пол дня :) ) что-бы не ставить драйверов. Да и PB кросплатформенный и мультисистемный компилятор - вроде как можно и под *nix компилировать программу. Есть-ли для него библиотеки для высокоскоростных USB, а то несколь я изучил HID_Lib (по хелпу) она конечные точки выбирать не может. А то как мне кажется Mass Storage код я ниосилю.
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):Получается что для HID устройств малой скорости конечная точка только одна и обмен по ней 2х направленный ?
Примерно так.
HID устройства еще могут иметь interrupt endpoint.
поддерживающие высокоскоростные устройства (опять-же хочу прикидываться HID (уже пол дня :) ) что-бы не ставить драйверов.
Тут какбе есть проблема. Чтобы и HID, и высокоскоростное.
В low и full speed USB передается 1000 фреймов в секунду, но для контролэндпойнта макс. размер фрейма для low speed 8 байт и 64 байта для fullspeed

итого, по HIDу максимум что можно передать это 8kb/s для lowspeed (тот же v-usb) и 64kb/s для fullspeed.
так что пользуясь HID ограничиваешь себя этими скоростями.

Если лень писать драйвера - прикинься классом CDC Serial port. Драйвер стандартный, реальную скорость в один конец у меня получилось достичь около 800kb/s
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):А то как мне кажется Mass Storage код я ниосилю.
В массторадже сама усбшная часть примитивная, а что напряжно - так эмуляция SCSI командсета. Хотя, там достаточно реализовать только обязательные комманды, а их всего с десяток для блочного устройства.
Вобщем класс MSC - это , говоря на пальцах, типа подключения по USB к SCSI устройству.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Satyr писал(а):Примерно так.HID устройства еще могут иметь interrupt endpoint.
Вот, низкоскоростному HID положено 1 control-endpoint и 2 interrupt-endpoint, т. е. может быть до 3 конечных точек.
Wladimir_TS писал(а):Но в переспективе надо будет работать с 1886
Это у нас что?
Если под винду, то есть порт в виде DLL с либы HID_Lib.
Wladimir_TS писал(а):поддерживающие высокоскоростные устройства
HID'ы тоже могут быть высокоскоростными, но для этого надо МК с аппаратным модулем USB, т. к. программно не хватит ресурсов на расшифровку, по крайней мере у 8-ми битных AVR'ов.
Wladimir_TS писал(а):Есть-ли для него библиотеки для высокоскоростных USB
Это не от библиотеки зависит, а от железа.
Вот пример работы с высокоскоростным HID девайсом.
Wladimir_TS писал(а):она конечные точки выбирать не может
Они конфигурируются в железе, т. е. контроллере.
С ними также можно работать, если они описаны конфиге.
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Satyr писал(а): HID устройства еще могут иметь interrupt endpoint.
Это вроде RTS и DTR ?
поддерживающие высокоскоростные устройства (опять-же хочу прикидываться HID (уже пол дня :) ) что-бы не ставить драйверов.
Тут какбе есть проблема. Чтобы и HID, и высокоскоростное.
В low и full speed USB передается 1000 фреймов в секунду, но для контролэндпойнта макс. размер фрейма для low speed 8 байт и 64 байта для fullspeed итого, по HIDу максимум что можно передать это 8kb/s для lowspeed (тот же v-usb) и 64kb/s для fullspeed.
так что пользуясь HID ограничиваешь себя этими скоростями.
[/quote]

64 кБит и 64 кБайт ? Вроде как 64 кБайт - это сойдет. Грубо говоря есть 2 участка памяти 8х256 к их надо обслуживать без заметных тормозов.
Если лень писать драйвера - прикинься классом CDC Serial port. Драйвер стандартный, реальную скорость в один конец у меня получилось достичь около 800kb/s
Я не настолько умен - что-б еще и драйвер создать - я програмированием по РС только пару недель, как занялся. А задача - что-бы работало БЕЗ УСТАНОВКИ КАКИХ-ЛИБО СТОРОННИХ ДРАЙВЕРОВ !!! Это задача номер 1 :o увы. Тоесть воткнул и запустил обычный EXEшник не имея админских прав и работать. Только штатные драйвера Windows XP. В том виде - как поставляла Microsoft в обычной поставке причем даже не proffesional. Почему долгая история не для форума. Нельзя так-же изменять никаких файлов на системном диске компьютера. Запуск или с флешки или с того-же устройства прикинувшегося флешкой.

Получается только или HID или Mass Storage, все остальное требует дров.
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Мурик писал(а):
Wladimir_TS писал(а):Но в переспективе надо будет работать с 1886
Это у нас что?
1886ВЕ4У он-же Microchop PIC17C не помню.
Если под винду, то есть порт в виде DLL с либы HID_Lib.
Wladimir_TS писал(а):поддерживающие высокоскоростные устройства
HID'ы тоже могут быть высокоскоростными, но для этого надо МК с аппаратным модулем USB, т. к. программно не хватит ресурсов на расшифровку, по крайней мере у 8-ми битных AVR'ов.
[/quote]
У 1886го аппаратный контролер - на MEGA это я так - балуюсь, что-б не угробить дорогущий кристалл при экспериментах раньше времени.

Wladimir_TS писал(а):Есть-ли для него библиотеки для высокоскоростных USB
Это не от библиотеки зависит, а от железа.
Вот пример работы с высокоскоростным HID девайсом.
[/quote]

ШпасиП !
Wladimir_TS писал(а):она конечные точки выбирать не может
Они конфигурируются в железе, т. е. контроллере.
С ними также можно работать, если они описаны конфиге.[/quote]
[/quote]

Где именно ?
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Wladimir_TS писал(а):
Если лень писать драйвера - прикинься классом CDC Serial port. Драйвер стандартный, реальную скорость в один конец у меня получилось достичь около 800kb/s
Я не настолько умен - что-б еще и драйвер создать - я програмированием по РС только пару недель, как занялся. А задача - что-бы работало БЕЗ УСТАНОВКИ КАКИХ-ЛИБО СТОРОННИХ ДРАЙВЕРОВ !!! Это задача номер 1 :o увы.
Очень невнимательно читаешь. попробуй еще раз.
Друг Кота
Сообщения: 5066
Зарегистрирован: Вс фев 15, 2009 01:04:58
Откуда: Kaluga

Сообщение Wladimir_TS »

Я просто подумал - что мол драйвер-то стандартный, но ставящийся отдельно. Ведь USB-COM переходники автоматом-то не ставяться - дрова хотят.

И это опять одна конечная точка выходит (те-же 64 кбайт/сек) или как ?
Ответить

Вернуться в «Интеграция с ПК»