Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.65.247] |
|
Сообщ.
#1
,
|
|
|
Даже не знаю где создавать ... проблема железная, софтверная и программисткая одновременно
Дело все в том что я купил себе панель Super-Flower Digi Master: ... а эта гадина тупой оказалась По этим пунктам я смело ставлю НИЗАЧОТ, но дело надо как-то исправлять! Инсталяция сделана супер ламерски, я вообще удивляюсь как они осилили такую сложную программу как InstallShield! Согласие с лицензией есть, но вместо самой лицензии стоит информация как ее добавить в инсталятор ... ламеры. Программа написана просто такими недопрограммистами, смотреть тошно! Удивляет то что она работает ... написана на Вижул Басике ... тут я еще больше удивился! Как им это удалось его освоить?! Мне вообще кажется что весь продукт целиком делали только электроншики, так как след программистов там не заметен. Ладно, оставляю эмоции, но скажу еще: железка хорошая и что-то подобного я еще не видел, а вот софт гомно! Надо как-то отследить как она общается с устройством (панелью). Дело в том что программа постоянно висит в памяти и шлет ей текущее время постоянно, НО не частоту проца и всего остального, только время и дату меняет. У меня нет ни какой информации про HID.DLL и как общаться с устройствами через него ... поиски пока ни чем не помогли Я немного покопался в ихней программе (кстати, выбрать куда он ставиться нельзя, а она ставится в %SystemRoot% ) и смог обнаружить только эти вызовы фонкций HID.DLL HidD_FreePreparsedData HidD_GetAttributes HidD_GetHidGuid HidD_GetPreparsedData HidD_GetFeature Я так понял что этими функциями ни чего нельзя задать устройству ... |
Сообщ.
#2
,
|
|
|
Цитата Monty @ Дело все в том что я купил себе панель Super-Flower Digi Master: Monty подключение к компу через USB? Никакого пользовательского интерфейса, т.е. подключил ее к USB и она начала давать показания, так? |
Сообщ.
#3
,
|
|
|
Цитата medved_68 @ подключил ее к USB и тут молчок (я не заметил что она что-то просит ), поставил программу (дровами не пахнет, чисто user-mode софт), она начинает показывать данный с ПК. Температуру и обороты она и так показывает (тут ее собственные датчики) ... |
Сообщ.
#4
,
|
|
|
Кстати еще вопрос: После инсталяции появился какой-нибудь порт в диспетчере устройств? Взамен USB?
|
Сообщ.
#5
,
|
|
|
Сообщ.
#6
,
|
|
|
Народ, лично мне кажется что тема не соответствует разделу )
Monty, что тебе необходимо в первую очередь выяснить - траблу с драйвером или с устройством? Имхо тема полюбому для Hardware (аппаратные средства) |
Сообщ.
#7
,
|
|
|
Сдается мне что эта супер-дупер программа делает элементарные вызовы WMI, и полученную информацию просто шлет на красивый индикатор, не более.
|
Сообщ.
#8
,
|
|
|
Green Light
Трабл только в том что софтвер для устройства писали недопрограммисты по профессии электронщики ... Мне надо узнать как программа может общаться с устройством. Одна подсказка есть - это HID.DLL Так как это какое-то "универсальное/стандартное общение" с устройством. Должна быть инфа ... Цитата AlexJ @ просто шлет на красивый индикатор Интересно как просто? Какие есть способы? Она использует библиотеку HID.DLL Если посмотреть экспортируемые функции, то там становится ясно для чего она создана Проблема в том что программа-монитор (а ее модули нет) не использует ни одной функции HID?_Set* Функции HID.DLL // 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 |
Сообщ.
#9
,
|
|
|
Цитата Monty @ Интересно как просто? Какие есть способы? Она использует библиотеку HID.DLL HID.dll скорее всего вызывается библиотеками ВБ для связи через ЮСБ (сама библа рашифровывается как хюман интерфейс девайсес и используется для связи по ЮСБ с HID), не более , сама же информация выдергивается через WMI, качните здесь Давайте создадим новый раздел (сообщение #1448130) програмку, я как то скидывал как пример о возможностях WMI, перебирая запросы получите ту же самую инфу что и на индикаторе и даже больше. |
Сообщ.
#10
,
|
|
|
Блин ...
Про WMI я сам знаю, давно и чисто случайно её откопал в висте ... и стал баловаться, но мне вот эти данные надо на панель передавать. Добавлено Вот и получается вопрос: как она их передает устройству. HID я указывал не зря, так как судя по названию и по тому что дейвас не требует драйверов (может и требует, но подошли стандартные ... хотя в этом я сомневаюсь, так как не было такого диалога). Если смотреть на HID, то там достаточно функций чтобы изменять (давать) данные устройству, продолжает звучать все тоже самое: КАК? Я ни чего не нашел, что мне могло дать представление о том как работать с usb-устройством ... ни каких статей и ни каких демок ... |
Сообщ.
#11
,
|
|
|
Сама программа (обрезал картинки и пару ненужных модулей) если интересно, HID.dll взять стандартный от майкрософта ...
Прикреплённый файлIndicatorSystem...this.is.7z.wtf_.zip (170.72 Кбайт, скачиваний: 560) |
Сообщ.
#12
,
|
|
|
Цитата 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 к сообщению |
Сообщ.
#13
,
|
|
|
Цитата AlexJ @ находят ИД своей желязяки и общаются с железякой как с коммуникационным файлом AlexJ в таком случае должен был один из USB портов исчезнуть из диспетчера, а появится виртуальный СОМ или LPT порт. Причем инфу желательно смотреть при работающем приборе. Некоторые программы (если нормально сделаны) зачищают за собой "хвосты" при отключении железяки от компа. Цитата AlexJ @ В железяке стоит контролер с ЮСБ и какой-то приватный протокол обмена. Или микросхема FTXXX. |
Сообщ.
#14
,
|
|
|
AlexJ, спасибо за листинг функции ... протокол постараюсь либо подобрать либо перехватить и изучить.
Так, благодаря вашим наводкам вдруг решил поглядеть туда куда я еще не глядел! Я еще не смотрел что у меня за HUMAN девайсы есть ... отключая постепенно я вычислил панел! Ура! Это уже ПЕРВЫЙ ШАГ! Теперь ясно что оно нормальное HID устройство и "параметры" можно в диспечере поглядеть Кстати, насчет параметров ... везде у меня в поле "Location" стоят понятные значение, а вот у этого девайся стоит: "Location 0 (ADS-043)" ... к примеру, у других: "Location 0 (USB Keyboard)" или "Location 0 (USB Device)" ps. входе этого иследования я обнаружил странности , ДВЕ клавиатуры когда у меня ТОЛЬКо одно потом отключаю одно из HUMAN девайс и проподает другое (отключенное остается отключенным) ... во блин, я еще не все знаю как оказывается зы. внизу скрин моих HID устройств, сейчас приведу другие скриншоты с пояснением ... Прикреплённая картинка
|
Сообщ.
#15
,
|
|
|
Сообщ.
#16
,
|
|
|
ИМХО пора переезжать частично в Windows и частично в WinAPI, потому как вопросы больше по программированию пошли.
и обязательно найти книжку Jan Alexson USB Complete. Everything You Need to Develop Custom USB Peripherals |
Сообщ.
#17
,
|
|
|
Ну лан, поехали. Тут и так понятно, что с электроникой тема не связана. Видно даже по названию
|
Сообщ.
#18
,
|
|
|
M Тема перенесена из Электроника и схемотехника |
Сообщ.
#19
,
|
|
|
Я не пишу на C++ ... в том-то и проблема что теме специфичная, я могу выбрать любой язык, а вопрос остается тем же ... тогда поедем в WinApi?
|
Сообщ.
#20
,
|
|
|
Автор, позвольте скромно поинтересоваться - до чего-нибудь допрограммировались?
|
Сообщ.
#21
,
|
|
|
Гы, эта тема на первой странице яндекса по нескольким запросам
я счас в сходную траблу влез, так что вот... Цитата 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... пока не нашёл, но наверняка в спецификации и стандартный универсальный формат вывода описан... |
Сообщ.
#22
,
|
|
|
Цитата Змей @ могу посоветовать посмотреть для начала тут: http://www.jais.ru/write10.html — "вводная" статейка о HID. ы, кто-нить, подкиньте плз инфы... на данный момент я только нашёл, как получить список HID-девайсов... а как с ними работать?... Эта вводная статья из этой книги. |