На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Работа с USB-панелью через HID.DLL , или старания недопрограммистов были тщетны ...
    Даже не знаю где создавать ... проблема железная, софтверная и программисткая одновременно :)

    Дело все в том что я купил себе панель Super-Flower Digi Master:

    user posted image

    ... а эта гадина тупой оказалась :angry:
    • показывает полный размер диска (нет бы свободный!)
    • показывает полный размер памяти (нет бы свободной!)
    • показывает полную скорость ЦП (нет бы текущую!)

    По этим пунктам я смело ставлю НИЗАЧОТ, но дело надо как-то исправлять!

    Инсталяция сделана супер ламерски, я вообще удивляюсь как они осилили такую сложную программу как InstallShield! :blink:
    Согласие с лицензией есть, но вместо самой лицензии стоит информация как ее добавить в инсталятор ... ламеры.

    Программа написана просто такими недопрограммистами, смотреть тошно! Удивляет то что она работает :blink: ... написана
    на Вижул Басике ... тут я еще больше удивился! Как им это удалось его освоить?! Мне вообще кажется что весь продукт
    целиком делали только электроншики, так как след программистов там не заметен.

    Ладно, оставляю эмоции, но скажу еще: железка хорошая и что-то подобного я еще не видел, а вот софт гомно! :angry:
    Надо как-то отследить как она общается с устройством (панелью). Дело в том что программа постоянно висит в памяти и
    шлет ей текущее время постоянно, НО не частоту проца и всего остального, только время и дату меняет.

    У меня нет ни какой информации про HID.DLL и как общаться с устройствами через него ... поиски пока ни чем не помогли :(

    Я немного покопался в ихней программе (кстати, выбрать куда он ставиться нельзя, а она ставится в %SystemRoot% :blink: )
    и смог обнаружить только эти вызовы фонкций HID.DLL
    ExpandedWrap disabled
      HidD_FreePreparsedData
      HidD_GetAttributes
      HidD_GetHidGuid
      HidD_GetPreparsedData
      HidD_GetFeature


    Я так понял что этими функциями ни чего нельзя задать устройству ...
      Цитата Monty @
      Дело все в том что я купил себе панель Super-Flower Digi Master:

      Monty подключение к компу через USB? Никакого пользовательского интерфейса, т.е. подключил ее к USB и она начала давать показания, так?
        Цитата medved_68 @
        подключил ее к USB

        и тут молчок (я не заметил что она что-то просит :blink: ), поставил программу (дровами не пахнет, чисто user-mode софт),
        она начинает показывать данный с ПК. Температуру и обороты она и так показывает (тут ее собственные датчики) ...
          Кстати еще вопрос: После инсталяции появился какой-нибудь порт в диспетчере устройств? Взамен USB?
            Тяжело сказать:
            Прикреплённая картинка
            Прикреплённая картинка
              Народ, лично мне кажется что тема не соответствует разделу )
              Monty, что тебе необходимо в первую очередь выяснить - траблу с драйвером или с устройством? Имхо тема полюбому для Hardware (аппаратные средства) ;)
                Сдается мне что эта супер-дупер программа делает элементарные вызовы WMI, и полученную информацию просто шлет на красивый индикатор, не более.
                  Green Light
                  Трабл только в том что софтвер для устройства писали недопрограммисты по профессии электронщики ...

                  Мне надо узнать как программа может общаться с устройством. Одна подсказка есть - это HID.DLL
                  Так как это какое-то "универсальное/стандартное общение" с устройством. Должна быть инфа ...


                  Цитата AlexJ @
                  просто шлет на красивый индикатор

                  Интересно как просто? Какие есть способы? Она использует библиотеку HID.DLL

                  Если посмотреть экспортируемые функции, то там становится ясно для чего она создана ;)
                  Проблема в том что программа-монитор (а ее модули нет) не использует ни одной функции HID?_Set* :blink:

                  Функции HID.DLL
                  ExpandedWrap disabled
                    // File name: C:\WINDOWS\testvol\hid.dll
                    // Created  : 05.07.2007 19:15
                    // Type     : Exports
                     
                     
                    // HidD_FlushQueue; Index 1;        Information not available
                     
                    // HidD_FreePreparsedData; Index 2; Information not available
                     
                    // HidD_GetAttributes; Index 3;     Information not available
                     
                    // HidD_GetConfiguration; Index 4;  Information not available
                     
                    // HidD_GetFeature; Index 5;        Information not available
                     
                    // HidD_GetHidGuid; Index 6;        Information not available
                     
                    // HidD_GetIndexedString; Index 7;  Information not available
                     
                    // HidD_GetInputReport; Index 8;    Information not available
                     
                    // HidD_GetManufacturerString; Index 9; Information not available
                     
                    // HidD_GetMsGenreDescriptor; Index 10; Information not available
                     
                    // HidD_GetNumInputBuffers; Index 11;   Information not available
                     
                    // HidD_GetPhysicalDescriptor; Index 12;    Information not available
                     
                    // HidD_GetPreparsedData; Index 13; Information not available
                     
                    // HidD_GetProductString; Index 14; Information not available
                     
                    // HidD_GetSerialNumberString; Index 15;    Information not available
                     
                    // HidD_Hello; Index 16;        Information not available
                     
                    // HidD_SetConfiguration; Index 17; Information not available
                     
                    // HidD_SetFeature; Index 18;       Information not available
                     
                    // HidD_SetNumInputBuffers; Index 19;   Information not available
                     
                    // HidD_SetOutputReport; Index 20;  Information not available
                     
                    // HidP_GetButtonCaps; Index 21;    Information not available
                     
                    // HidP_GetCaps; Index 22;      Information not available
                     
                    // HidP_GetData; Index 23;      Information not available
                     
                    // HidP_GetExtendedAttributes; Index 24;    Information not available
                     
                    // HidP_GetLinkCollectionNodes; Index 25;   Information not available
                     
                    // HidP_GetScaledUsageValue; Index 26;  Information not available
                     
                    // HidP_GetSpecificButtonCaps; Index 27;    Information not available
                     
                    // HidP_GetSpecificValueCaps; Index 28; Information not available
                     
                    // HidP_GetUsageValue; Index 29;    Information not available
                     
                    // HidP_GetUsageValueArray; Index 30;   Information not available
                     
                    // HidP_GetUsages; Index 31;        Information not available
                     
                    // HidP_GetUsagesEx; Index 32;      Information not available
                     
                    // HidP_GetValueCaps; Index 33;     Information not available
                     
                    // HidP_InitializeReportForID; Index 34;    Information not available
                     
                    // HidP_MaxDataListLength; Index 35;    Information not available
                     
                    // HidP_MaxUsageListLength; Index 36;   Information not available
                     
                    // HidP_SetData; Index 37;      Information not available
                     
                    // HidP_SetScaledUsageValue; Index 38;  Information not available
                     
                    // HidP_SetUsageValue; Index 39;    Information not available
                     
                    // HidP_SetUsageValueArray; Index 40;   Information not available
                     
                    // HidP_SetUsages; Index 41;        Information not available
                     
                    // HidP_TranslateUsagesToI8042ScanCodes; Index 42;  Information not available
                     
                    // HidP_UnsetUsages; Index 43;      Information not available
                     
                    // HidP_UsageListDifference; Index 44;  Information not available
                     
                    // HidservInstaller; Index 45;      Information not available
                    Цитата Monty @
                    Интересно как просто? Какие есть способы? Она использует библиотеку HID.DLL

                    HID.dll скорее всего вызывается библиотеками ВБ для связи через ЮСБ (сама библа рашифровывается как хюман интерфейс девайсес и используется для связи по ЮСБ с HID), не более , сама же информация выдергивается через WMI, качните здесь Давайте создадим новый раздел (сообщение #1448130)
                    програмку, я как то скидывал как пример о возможностях WMI, перебирая запросы получите ту же самую инфу что и на индикаторе и даже больше.
                    Сообщение отредактировано: AlexJ -
                      Блин ...

                      Про WMI я сам знаю, давно и чисто случайно её откопал в висте ... и стал баловаться, но мне вот эти данные надо на панель передавать.

                      Добавлено
                      Вот и получается вопрос: как она их передает устройству. HID я указывал не зря, так как судя по названию и по тому что дейвас
                      не требует драйверов (может и требует, но подошли стандартные ... хотя в этом я сомневаюсь, так как не было такого диалога).

                      Если смотреть на HID, то там достаточно функций чтобы изменять (давать) данные устройству, продолжает звучать все тоже самое: КАК?
                      Я ни чего не нашел, что мне могло дать представление о том как работать с usb-устройством ... ни каких статей и ни каких демок ...
                        Сама программа (обрезал картинки и пару ненужных модулей) если интересно, HID.dll взять стандартный от майкрософта ...
                        Прикреплённый файлПрикреплённый файлIndicatorSystem...this.is.7z.wtf_.zip (170.72 Кбайт, скачиваний: 560)
                          Цитата Monty @
                          Про WMI я сам знаю, давно и чисто случайно её откопал в висте

                          WMI идет в стандартной поставке винды начиная с 98-й

                          Цитата

                          Вот и получается вопрос: как она их передает устройству. HID я указывал не зря, так как судя по названию и по тому что дейвас не требует драйверов (может и требует, но подошли стандартные ... хотя в этом я сомневаюсь, так как не было такого диалога).

                          В железяке стоит контролер с ЮСБ и какой-то приватный протокол обмена. Из программы они энумеруют подключенные ХИД девайсы USB(используя готовые функции из hid.dll), находят ИД своей желязяки и общаются с железякой как с коммуникационным файлом

                          Цитата

                          Если смотреть на HID, то там достаточно функций чтобы изменять (давать) данные устройству, продолжает звучать все тоже самое: КАК?


                          Типичная процедура общения с custom USB device из юзер-моды
                          ---------------------------------------------------
                          АПИ                             DLL          Смысл 
                          ---------------------------------------------------
                          HidD_GetHidGuid                 hid.dll      Получить GUID для HID класса
                          SetupDiGetClassDevs             setupapi.dll Получить информацию о классе устройства
                          SetupDiEnumDeviceInterfaces     setupapi.dll Получить информацию об устройстве
                          SetupDiGetDeviceInterfaceDetail setupapi.dll Получить путь к устройству
                          SetupDiDestroyDeviceInfoList    setupapi.dll Освободить ресурсы используемые SetupDiGetClassDevs
                          CreateFile                      kernel32.dll Открываем коммуникационный файл
                          HidD_GetAttributes              hid.dll      Получаем Vendor ID, Product ID, Version Number.
                          HidD_GetPreparsedData           hid.dll      Получаем хэндл к буферу с инфой о возможностях устройства
                          HidP_GetCaps                    hid.dll      Получаем структуру объясняющую возможности устройства
                          HidD_FreePreparsedData          hid.dll      Освобождаем ресурсы используемые HidD_GetPreparsedData	
                          WriteFile                       kernel32.dll Пишем выходной репорт в девайс 
                          ReadFile                        kernel32.dll Читаем входной репорт из девайса
                          HidD_SetFeature                 hid.dll      Передаем фичи-репорт в девайс
                          HidD_GetFeature                 hid.dll      Читаем фичи-репорт из девайса
                          CloseHandle                     kernel32.dll Освобождаем хэндл 
                          ---------------------------------------------------------------
                          



                          HID.DLL стандартная библиотека для работы с ЮСБшными девайсами, такая же как коммон контролс и прочие.
                          Им нафиг не нужен драйвер, используя стандартную библиотеку ХИДа и зная ИД девайса, открывают девайс как файл и просто гонят на него данные полученные от WMI(cкорее всего)
                          Другое дело формат протокола обмена чтобы гнать данные в железяку - это знают только разработчики.

                          ЗЫ
                          Программку не решился запускать, сорри если хлопцы даже картинки не смогли запихать в файл, но при этом используют АПИ обращения к реестру, то ну их на фиг.

                          ЗЫЫ
                          Классный способ пристежки 7z к сообщению :D
                          Сообщение отредактировано: AlexJ -
                            Цитата AlexJ @
                            находят ИД своей желязяки и общаются с железякой как с коммуникационным файлом

                            AlexJ в таком случае должен был один из USB портов исчезнуть из диспетчера, а появится виртуальный СОМ или LPT порт. Причем инфу желательно смотреть при работающем приборе. Некоторые программы (если нормально сделаны) зачищают за собой "хвосты" при отключении железяки от компа.
                            Цитата AlexJ @
                            В железяке стоит контролер с ЮСБ и какой-то приватный протокол обмена.

                            Или микросхема FTXXX. :)
                              AlexJ, спасибо за листинг функции ... протокол постараюсь либо подобрать либо перехватить и изучить.

                              Так, благодаря вашим наводкам вдруг решил поглядеть туда куда я еще не глядел! :(
                              Я еще не смотрел что у меня за HUMAN девайсы есть ... отключая постепенно я вычислил панел! Ура! :)

                              Это уже ПЕРВЫЙ ШАГ! Теперь ясно что оно нормальное HID устройство и "параметры" можно в диспечере поглядеть :)
                              Кстати, насчет параметров ... везде у меня в поле "Location" стоят понятные значение, а вот у этого девайся
                              стоит: "Location 0 (ADS-043)" :blink: ... к примеру, у других: "Location 0 (USB Keyboard)" или "Location 0 (USB Device)"

                              ps. входе этого иследования я обнаружил странности :blink: :blink: :blink: , ДВЕ клавиатуры когда у меня ТОЛЬКо одно :wacko:
                              потом отключаю одно из HUMAN девайс и проподает другое (отключенное остается отключенным) ... во блин,
                              я еще не все знаю как оказывается ;)

                              зы. внизу скрин моих HID устройств, сейчас приведу другие скриншоты с пояснением ...
                              Прикреплённая картинка
                              Прикреплённая картинка
                                Вот что выяснил (см прикрепленное изображение)

                                ps. если выключать вырхние, то ни чего не происодит ... хотя может быть уже офтоплю? :huh:

                                Добавлено
                                Цитата AlexJ @
                                Классный способ пристежки 7z к сообщению

                                C этим еще предстоит разбираться администрации :)
                                Прикреплённая картинка
                                Прикреплённая картинка
                                  ИМХО пора переезжать частично в Windows и частично в WinAPI, потому как вопросы больше по программированию пошли.
                                  и обязательно найти книжку Jan Alexson USB Complete. Everything You Need to Develop Custom USB Peripherals
                                    Ну лан, поехали. Тут и так понятно, что с электроникой тема не связана. Видно даже по названию
                                      M
                                      Тема перенесена из Электроника и схемотехника
                                        Я не пишу на C++ :tong: :tong: :tong: ... в том-то и проблема что теме специфичная, я могу выбрать любой язык, а вопрос остается тем же ... тогда поедем в WinApi? :rolleyes:
                                          Автор, позвольте скромно поинтересоваться - до чего-нибудь допрограммировались? :rolleyes:
                                            Гы, эта тема на первой странице яндекса по нескольким запросам ;)

                                            я счас в сходную траблу влез, так что вот...

                                            Цитата medved_68 @
                                            AlexJ в таком случае должен был один из USB портов исчезнуть из диспетчера, а появится виртуальный СОМ или LPT порт.

                                            категорически НЕ ТАК. софту нет нужды делать виртуальный порт для себя, зная VID и PID девайса, софт может с ним работать напрямую через HID... виртуальные порты создают только в том случае, когда необходимо предоставить доступ к железке сторонним программам...
                                            например, блютус создаёт виртуальный ком-порт к телефону... но он это делает не для своей работы, а для того, чтобы с телефоном могли работать другие программы, "заточенные" под работу с телефоном через ком-порт.
                                            реальное подтверждение — мой ИБП APC525 опознаётся компом как HID Device, а родной APC PowerShute дёргает из него текущие свойства (напряжение сети, измеренная мошность нагрузки, статистика) и пинает его настройки (бибикать/не бибикать, ещё что-то), не выполняя никаких манипуляций со списком оборудования.

                                            могу посоветовать посмотреть для начала тут: http://www.jais.ru/write10.html — "вводная" статейка о HID.

                                            ы, кто-нить, подкиньте плз инфы... я конечно знаю, что на http://www.usb.org/developers/hidpage всё что нужно есть, но что-то моего инглиша не хватает, чтоб толком "въехать" в тему...

                                            на данный момент я только нашёл, как получить список HID-девайсов... а как с ними работать?...

                                            ы. кому тема интересно — отпишитесь, я если чего найду дельного, поделюсь...

                                            да, кстати, протокол ИМХО не приватный, наверняка использован стандартные форматы... вот тут http://www.cqham.ru/usbtherm1.html описывается "выносной термодатчик", он подключается через HID и передаёт данные в стандартном формате HID Report... пока не нашёл, но наверняка в спецификации и стандартный универсальный формат вывода описан...
                                              Цитата Змей @
                                              могу посоветовать посмотреть для начала тут: http://www.jais.ru/write10.html — "вводная" статейка о HID.
                                              ы, кто-нить, подкиньте плз инфы...
                                              на данный момент я только нашёл, как получить список HID-девайсов... а как с ними работать?...

                                              Эта вводная статья из этой книги.
                                              Сообщение отредактировано: ЫукпШ -
                                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                              0 пользователей:


                                              Рейтинг@Mail.ru
                                              [ Script execution time: 0,0931 ]   [ 16 queries used ]   [ Generated: 21.05.24, 08:31 GMT ]