|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.02.2009, 10:01 | #1 |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Работа с устройствами, JEDI API
Здравствуйте!
Требуется программно отключить, а потом подключить USB-устройство (FT245R) подобно пунктам меню Диспетчера устройств "Отключить" и "Задействовать". Как это проще всего сделать? Как я понял надо использовать SetupApi. Скачал его. Но как понял - не полностью (scapi_current.zip, win32api_current.zip)... При компиляции выдаётся ошибка [Fatal Error] SetupApi.pas(57): File not found: 'ModuleLoader.dcu'. Где взять этот файл? Пока даже подключить библиотеку не удалось, я уже не говорю о программировании Спасибо заранее! |
27.02.2009, 10:59 | #2 |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Всего у меня скачано:
scapi_current.zip win32api_current.zip jedi_api22a_jwscl092a.zip ntapi_current.zip Хм... после скачки огромного jedi_api22a_jwscl092a.zip и прописи путей к папкам Common, SaCMAPI, Win32API компиляция прошла успешно! Видимо, надо было сразу качать этот файл. Далее. Есть ли какие-нибудь тонкости установки данного пакета? Компиляции его? Сейчас будем пробовать функции вызывать Пробуем вызывать функции... Код:
С чем это связано? Что-то с компиляцией модулей? Последний раз редактировалось rpy3uH; 27.02.2009 в 12:51. |
27.02.2009, 12:52 | #3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
прочитай вот эту статью и будет тебе счатье.
Последний раз редактировалось rpy3uH; 27.02.2009 в 19:59. |
27.02.2009, 19:04 | #4 | |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Цитата:
С первого взгляда полезная статья! Будем читать |
|
02.03.2009, 12:05 | #5 |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Спасибо большое за статью!
Ценная статья! Разбираемся, пробуем. Возникло несколько вопросов. 1. При компиляции возникает ошибка: Код:
Приходится делать Integer(DeviceInfoSet_). Понятное дело, указатель и целое число... Почему в статье нет приведения типа? 2. При вызове SetupDiEnumDeviceInfo с параметром SPDRP_FRIENDLYNAME функция возвращает ERROR_INVALID_DATA (уточнял в MSDN). Пробовал для USB, Video, HID - везде такой результат. Почему? Неужели у устройств данных классов нету таких свойств? 3. Как лучше (проще) осуществить поиск конкретного устройства (считаем, что к компьютеру подключено несколько одинаковых устройств FTDI с разными Description и Serial Number? Т. е., нужно заполнить структуры, необходимые для включения и отключения устройства, не перебирая все устройства... Видимо, как-то по GUID устройства (см. п. 4). 4. Как можно узнать GUID (PnP идентификатор, физическое имя устройства в Windows) конкретного устройства для работы с ним? Имеется ввиду не с помощью своего приложения, а как-нибудь средствами Windows. 5. Из чего состоит и как формируется GUID устройства? 6. Как осуществляется привязка GUID к устройству? Т. е., если я буду подключать устройство к разным ПК, то GUID устройства всегда будет разный или всегда одинаковый? Последний раз редактировалось Koluna; 02.03.2009 в 12:14. |
02.03.2009, 12:22 | #6 | ||
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
на Delphi 7.2 всё нормально
Цитата:
PCI\VEN_1969&DEV_1048&SUBSYS_822610 43&REV_B0\4&935E26E&0&00E3 (сетевая плата), такие коды есть у каждого нормального устройства. по нему и надо искать. Цитата:
кстати, на какой системе работает программа? Последний раз редактировалось rpy3uH; 02.03.2009 в 12:25. |
||
02.03.2009, 12:32 | #7 | ||
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Может, она сама типы неявно преобразовывает, галочка есть какая-нибудь...
Цитата:
Мне тут не понятно только где его искать, этот "код экземляра устройства"! Цитата:
Код:
WinXP, Delphi 7. |
||
02.03.2009, 13:41 | #8 | |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Цитата:
Для моего устройства код экземпляра устройства: USB\VID_0403&PID_6001\FTRXGIAZ А не поверил, потомучто код маленький и простой. До этого попадались только большие и сложные |
|
02.03.2009, 15:18 | #9 |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Пытаюсь по коду экземпляра устройства получить структуру DeviceInfoData_ - не получается для любого кода... почему?
SetupDiEnumDeviceInfo возвращает ERROR_NO_MORE_ITEMS. Кажется, SetupDiEnumDeviceInfo не находит устройства... почему? Код:
Код:
Код:
И это (последний пост): http://forum.codenet.ru/showthread.php?threadid=32464 Последний раз редактировалось rpy3uH; 02.03.2009 в 19:31. |
02.03.2009, 15:57 | #10 |
Пользователь
Регистрация: 27.02.2009
Сообщений: 18
|
Хм... оказывается, надо делать так:
Код:
Странно, почему в приведённых мною примерах не так? |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Установка Jedi компонент | Dr.Badnezz | Компоненты Delphi | 9 | 23.11.2010 17:19 |
Работа с внешними устройствами через COM порт | Georgios | Помощь студентам | 11 | 11.02.2009 15:59 |
Jedi | Makarov | Компоненты Delphi | 2 | 15.08.2008 20:45 |
обновление в блоге - Работа с устройствами в Windows | Pblog | Обсуждение статей | 0 | 03.06.2008 12:30 |
Win Api, работа с мышью | Petrr | Win Api | 2 | 26.04.2008 19:58 |