imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 24.03.2003, 17:59     # 1
Евгений
Guest
 
Сообщения: n/a

Unhappy Мне надо достучаться до USB

Ребята пишем программу для работы с модемами. Нужно посылать данные через USB порт, а как его инициализировать, то есть получить хэндл устройства не знаем ( то есть хотим получить хэндл как при работе с СОМ-портом). Заранее спасибо!!!!
 
Старый 28.03.2003, 15:05     # 2
Sh
Guest
 
Сообщения: n/a

Знаешь Евгений ... по моим сведениям такой халявы как с COM-портом - с USB не будет... Com порт почему можно открыть c CreateFile("\\\\.\\com1",....... - потому что драйвер стандартный есть который етот линк и предоставляет.
На USB драйвера тоже есть, но только на HID девайсы (и еще на что-то) и собственно на USB BUS... А вообще это выглядит так - на самом нижнем уровне лежит драйвер, который общается непосредственно с шиной, чуть повыше него - ТВОЙ ДРАВЕР который принимает запросы из пользовательского приложения и формирует запрос (URB) нижележашему драйверу на передачу, конфигурацию или чего еще там тебе надо. URB отправляется туда через IRP и никак иначе - поетому обычное USERMODE приложение работать напрямую не сможет.
Вывод: пишем свой USB драйвер (да, да - не надо делать такое лицо), который и предоставит интерфейс для твоего девайса. И тогда ты сможешь получить Handle от своего драйвера.
Еще одна ложка дегтя - по-DDKшному драйвер должен быть еще и Plug'n'Play и интерфейс создавать не через IoCreateSymbolicLink а через IoRegisterDeviceInterface. Почему "по-DDKшному " - я сейчас пытаюсь сделать ето по другому хотя в DDK написано что должно быть так.
 
Старый 28.03.2003, 19:26     # 3
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Неужто семплов нет нигде как работать с USB ? ...
RaZEr вне форума  
Старый 29.03.2003, 07:34     # 4
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
W knowledge baze MS'ow wrode est.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 29.03.2003, 15:04     # 5
Sh
Guest
 
Сообщения: n/a

В DDK есть но..... Очень уж крученые, слишком USB-шные и черезчур Plug'n'Play-ные :-) . Изучать по ним работу тяжеловато немного....
 
Старый 29.03.2003, 20:43     # 6
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Prosto eto prawilno napisannie.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 04.04.2003, 15:39     # 7
Евгений
Guest
 
Сообщения: n/a

Question

Sh Это я уже понял, но вот второй вопрос. То есть переселка данных в порт с помощью WriteFile(/////) у меня не получится. Если я не прав, то поправьте. И мне придется писать свою функцию, которая будет посылать данные на порт, так? Тогда объясните мне одну вещь, что такое в USB конечная точка(end point) и для чего она нужна. Кстати кому нужен исходник проги, а также драйвер, то ищите програмку для написания драйверов Kernel Driver версию не помню. Можете полазить по нету и найти интсталляшку. У нее в примерах есть много чего интересного, и дрова которые она устанавливает являются универсальными. Проги там написаны С. Так ищите и разбирайте. Кстати Sh а где можно найти инфу по этой теме (желателбно русскоязычную). Спасибо заранее!!!!
 
Старый 04.04.2003, 17:24     # 8
Sh
Guest
 
Сообщения: n/a

Enpoint?? - На аппаратном уровне, если не ошибаюсь - ето ...ммм... скажем регистр на N-ое количество байт (по принципу FIFO), причем для поддержки Control transfer обязательно резервируется так называемый Нулевой ЕндПойнт (endpoint zero ) обычно 8-ми байтовый и двунаправленный. А дальше endpoint-ов столько сколько девайс поддерживает. Да чуть не забыл - так называемый "коммуникационный канал" (соединение) между ендпойнтами завется ПАЙПОМ.
И когда ты хочешь отправить данные по USB ты используешь именно хендл пайпа отправляя запрос из своего драйвера нижележащему. А хендлы пайпов получают запрашивая и выбирая конфигурацию девайса. (надеюсь не слишком загрузил ) Хотя если ты, как говоришь, используешь JUNGO KERNEL DRIVER или JUNGO WINDRIVER то тебе ето все не понадобится практически. Я привык по старинке писать... :-))
З.Ы Да! Инфа! Чуть не забыл.. :-) DDK и USB spec. rev 2.0 - рускоязычных не встречал... Хотя может и есть такое
 
Старый 05.04.2003, 08:23     # 9
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Sh - molodec!
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 05.04.2003, 15:29     # 10
Евгений
Guest
 
Сообщения: n/a

Question

Sh
Спасибо большое выручил!!!!Объясни почему мне это не надо, если я пользуюсь этой прогой???
 
Старый 07.04.2003, 12:15     # 11
Sh
Guest
 
Сообщения: n/a

Так она за тебя все генерит по-моему....
По крайней мере WinDriver делает сразу программу в которой уже готовые вызовы всего чего только душа не пожелает.... Вообще это удобно но есть маленькое НО. Надо использовать их так называемый KERNEL PLUGIN - не знаю как у тебя а у меня он был не вполне лицензионный :-) Иеще одна деталь из-за которой я не использую ету прогу: мы когда отчет сдаем - от нас требуют ВСЕ ИСХОДНИКИ на ВСЕ пограммные модули которые только есть в проекте и принципиальные схемы на ВСЕ аппаратные модули которые у нас есть. Ну и вот... Дизассемблировать же его не будешь, типа ты его на asme писал... :-)
З.Ы. А вообще рад был помочь.... :-) честно-честно :-)
 
Старый 07.04.2003, 21:00     # 12
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Strannaya u was kontora. W normalnoi kontore sprosili-bi, chto deshewle: kupit modul ili pisat samim.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 08.04.2003, 13:46     # 13
Евгений
Guest
 
Сообщения: n/a

Sh Большое , при большое спасибо. Я конечно понимаю, что спасибо на хлеб не намажишь и в карман не положишь. Так что пиши, если чего-нибудь надо там помочь или инфу какую-нибудь тебе будет надо, чем смогу, тем помогу. Кстати ты когда-нибудь был на буржуйских сайтах типа www.lvr.com или www.usb-by-example.com. Там даже исходнички есть, но вот работать они не хотят, так как злые дядьки скорей всего написанный ими драйвер не поставляют. Но инфа там есть, так что если не знал, то загляни.
helldomain сам понимаешь, как у нас офисах происходят дела. Лучше человек пусть мучается пишет прогу, но он ее напишет (вот этим отличается русский программист от других буржуйских программеров), чем выложить бабки за готовый рабочий продукт.
 
Старый 08.04.2003, 17:14     # 14
Евгений
Guest
 
Сообщения: n/a

Question

Sh вот думал что, тебя больше мучать не буду, но извини прийдется. Ты обмолвился про, то что работал с Kernel. Скажи функция WD_Open открывает устройство (в моем случае ты понял какое) или открывает ссылку на драйвер, а драйвер потом обращается к устройству? Мне вот интересно эта функция возращает хэндл устройства? И последний вопрос так все таки могу ли я использовать WriteFile() для записи в порт данных или мне надо ее писать, или в Kernel есть своя функция для записи? Фух все. СПАСИБО ТЕБЕ ЗАРАНЕЕ
 
Старый 08.04.2003, 21:35     # 15
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Ponimaju. Prosto u burjuew rabochee wremya programmera oplachiwaetsya po chasam. Poetomu chastenko deshewle kupit kakoi-to kusok chem pisat samomu.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 10.04.2003, 13:38     # 16
Sh
Guest
 
Сообщения: n/a

Извини Kernel рядом не нашел, но нашел WinDriver. Давай посмотрим что там есть :-)
Если выдрать кое-что из контекста получаем
......
#define WD_Open WD_OpenLocal
......

#elif defined(WIN32)
#define WD_OpenLocal()\
CreateFile(\
TEXT("\\\\.\\WINDRVR"),\
GENERIC_READ,\
FILE_SHARE_READ | FILE_SHARE_WRITE,\
NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL)
static DWORD WD_FUNCTI
.........
Обратил внимание куда смотрит CreateFile ???
Ето и есть их стандартный драйвер (в Kernele по-моему такой же) который и делает всю черную работу. :-)
Ето в ответ на вопрос что же возвращает WD_OPEN.

Второй вопрос: ...WriteFile....
Немного теории :-)
Как ты знаешь (ну или догадываешься :-)) в результате вызова WriteFile и ReadFile драйверу посылается IRP-ы, соответственно IRP_MJ_WRITE и IRP_MJ_READ. Чтобы ты смог юзать WriteFile надо чтобы драйвер их обрабатывал, типа так

pDriverObject->MajorFunction[IRP_MJ_WRITE] = Usb_Write;
pDriverObject->MajorFunction[IRP_MJ_READ] = Usb_Read;

где Usb_Write и Usb_Read функции твои, которые и будут обрабатывать запрос.
А теперь суть - посмотри обрабатывает ли твой драйвер пакет IRP_MJ_WRITE и если нет - добавь что надо (подробнее см DDK 2k)
Прототипы такие:
NTSTATUS
Usb_Write(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP Irp
)

есть гемор с передачей буффера размером большим чем размер USB пакета - то есть прийдется разбивать на несколько. Ето так - предупреждение.

З.Ы.
А вообще ты знаешь разница между Windriver и Kernel по-моему небольшая. Они обе всего лишь навсего предоставляют интерфейс для работы со своим драйвером который судя по всему сделан так, что может работать со всем и подходить ко всему (ты наверно заметил когда проекты создавал)
З.З.Ы.
Пасибо за ссылки, обязательно посмотрю...
З.З.Ы. To HELL
Так конторка наша при институте... денег немного... вылезаем за счет себя же :-) Мда... мне бы в Intel махнуть - хочешь пироженого... хочешь мороженного ... хочешь импульсный стабилизатор с кофемолкой и GSM трансивером. :-)) Да кто меня туда возьмет. А тут слишком много не купишь.
 
Старый 10.04.2003, 20:02     # 17
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
А как же родина товарищи ?
RaZEr вне форума  
Старый 10.04.2003, 20:10     # 18
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Ponimaju.
__________________
Осколки прошлого, как снег, закрутит ураган времён,
В ушедший день для нас навек, обрушив мост,
Оставив в наших душах след, тьма уплывёт за горизонт,
И в чистом небе вспыхнет свет, свет новых звёзд.
helldomain вне форума  
Старый 11.04.2003, 12:37     # 19
Sh
Guest
 
Сообщения: n/a

To RaZEr : я имею в виду российское отделение, конечно. Заграницей что-то не очень хочется работать: каждый день ездить из дома за границу на работу, а вечером назад возвращаться в родной Клин - ломает... :-) Я и так каждый день на учебу в другой город езжу. :-)
 
Старый 15.04.2003, 16:04     # 20
Евгений
Guest
 
Сообщения: n/a

RaZEr Родина Родиной а кушать хочется всегда и деньжат бы нам по самые не хочу.
Sh после двух суток работы с USB я понял наконец-то как с ним работать. Могу сказать следующие РЕБЯТА ПИШИТЕ ВСЕ САМИ. Эти блин буржуи со своим Kernelом, вобщем плохие дядьки. Пришлось писать функцию передачи и приема данных на порт самому. А теперь еще неделю буду отлаживать и встраивать в основную прогу.
Sh ты DDK качал с нета или использовал те, которые идут с MSDN????
 


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:43.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.