Страница 9 из 11
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 21:28:13
PB_EXPERT
так прога hidtool.exe работает отлично. а вот с длл еще никак.
Я же скрин на 8-мой странице темы выкладывал, где видно что DLLка работает как надо.
В архиве прога для компа, работающая с этим проектом.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 21:35:21
demson
прога работает
так сейчас еще проверю все размерности.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 21:51:52
urry
PB_EXPERT, Вы большой молодец. Действительно, что главное не инструмент, а умение им работать. Сейчас вклеиваю вашу длл в прогу на Си.
А я уже было, откровенно говоря, плюнул на vusb.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 21:59:30
demson
Присоединяюсь PB_EXPERT работа, проделанная тобой поражает. В скоре все будут пользоваться этой библиотекой, как единственной легкодоступной и работающей.
только меня кто нибудь пиннните в правильное направление.

никак не получается принять с устройства данные. Вот уж точно в 3х строчках заблудился.
прикладываю проект студии.
и код соответственно
Код: Выделить всё
Public Declare Function HID_OpenDevice Lib "HID_Lib_PB.dll" (ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Integer, ByVal Index As Integer) As Long
Public Declare Function HID_GetFeature Lib "HID_Lib_PB.dll" (ByVal Handle As Long, ByRef buffer() As Byte, ByVal LenBuffer As Long) As Long
Public Declare Function HID_SetFeature Lib "HID_Lib_PB.dll" (ByVal Handle As Long, ByRef buffer() As Byte, ByVal LenBuffer As Long) As Long
Public Declare Function HID_CloseDevice Lib "HID_Lib_PB.dll" (ByVal Handle As Long) As Integer
Код: Выделить всё
Dim vid As Integer = 5824
Dim pid As Integer = 1503
Dim ver As Integer = -1
Dim ind As Integer = 0
Dim Handle, res As Long
Handle = HID_OpenDevice(pid, vid, ver, ind)
Dim Buffer(128) As Byte 'от нуля = 129
res = HID_GetFeature(Handle, Buffer, Buffer.Length) ' Buffer.Length=129
res =468339417392611328
длина Buffer становится равной 1
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 22:09:18
PB_EXPERT
главное не инструмент
От инструмента тоже многое зависит.
Просто многие считают что "нормальные" проги можно писать только на Си, или в крайнем случае, на дельфи, но при этом забывают что бейсик, это только название языка, а возможности зависят от компилятора и имеющихся библиотек.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 22:27:15
demson
на всякий случай. HID_GetFeature вернет Long ?
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вс апр 18, 2010 22:42:01
PB_EXPERT
demson писал(а):на всякий случай. HID_GetFeature вернет Long ?
Да.
Все функции возвращают Long (4 байта).
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 14:05:51
PB_EXPERT
demson писал(а):
только меня кто нибудь пиннните в правильное направление.

никак не получается принять с устройства данные.
Во вложении рабочий проект на VB.NET
Как оказалось,типы переменных в
VB6 и
VB.NET немного отличаются, скажем в VB6, Long это 4 байта, а в VB.NET это 8 байт, вот и глюки! Заменил Long на Integer, а Integer на Short.
Мелкомягкие как всегда перемудрили (Висту вспоминать не будем

)
Далее, почему-то при передаче указателя на массив (ByRef) были глюки, но стоило заменить на ByVal, как всё заработало.
Мистика! Ведь нужен именно указатель на массив!
Что касается этой ошибки.
Не удается загрузить DLL "HID_Lib_PB.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
Причина проста - в папке с исполняемым файлом не было HID_Lib_PB.dll.
Когда скопировал в System32, то естественно что заработало.
DLLка подключена к проекту, но в её свойствах, запрещено её копировать в папку с исполняемым файлом. Это тоже исправил, поэтому DLLку из System32 можно удалить.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 18:48:48
Radan
Пробую переделать пример термометра Баскома -
http://purebasic.mybb.ru/viewtopic.php?id=46.
Dim vid As Short = 43690 ' &HAAAA
Dim pid As Short = 61188 ' &HEF04
При указанных vid и pid и типе Short будет ошибка, т.к. он не больше 32000 (2^16).
Если в декларации функций библиотеки ставлю Integer для vid и pid , он возвращает массив из нулей.
В чём может быть проблема?
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 19:06:23
PB_EXPERT
Radan писал(а):Пробую переделать пример термометра Баскома -
http://purebasic.mybb.ru/viewtopic.php?id=46.
Dim vid As Short = 43690 ' &HAAAA
Dim pid As Short = 61188 ' &HEF04
При указанных vid и pid и типе Short будет ошибка, т.к. он не больше 32000 (2^16).
Если в декларации функций библиотеки ставлю Integer для vid и pid , он возвращает массив из нулей.
В чём может быть проблема?
В место Short можно использовать Char
Char - символьный тип. Для хранения переменной отводиться 2 байта. В качестве значения переменной обычно применяются символы, так как используются теперь 2 байта. Разработчики могут применять символы Unicode.
Тот термометр использует конечную точку
INPUT, поэтому следует использовать функцию
HID_ReadDevice в место
HID_GetFeature.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 19:15:05
urry
Может, все -таки давить в одну точку и пытаться унифицировать класс ???
Я как бы возьму на себя сторону контроллера, PB_EXPERT - сторону приложения ?
И на хид-дата сделать ?
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 19:18:12
PB_EXPERT
Тогда нужно добавить 2 точки - входную и выходную.
А пример для компа напишу без проблем.

Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 22:27:15
Radan
Перекомпилил и залил прошивку с такими же вид и пид как в WindowsApplication_2. Попробовал на другом приложении, термометр работает. Вышеуказаннsй пример вылетает с ошибкой: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Что-то не так...
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 23:05:18
PB_EXPERT
Radan писал(а):Перекомпилил и залил прошивку с такими же вид и пид как в WindowsApplication_2. Попробовал на другом приложении, термометр работает. Вышеуказаннsй пример вылетает с ошибкой: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Что-то не так...
Странно, у меня никакой ошибки нет.
Зачем было использовать PID и VID не такие как в термометре? Ведь работать не будет!
Подправил проект.
PID = $EF04
VID = $AAAA
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вт апр 20, 2010 12:42:24
PB_EXPERT
Кто пробовал запускать проект VB.NET?
Он работает или нет?
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Вт апр 20, 2010 13:37:21
Radan
Я смогу попробовать только завтра, сегодня после работы в гости иду...
PID и VID я и в прошивке термометра менял, и в проекте VB.NET, т.е. ставил одинаковые. На другой библиотеке с новыми и старыми PID и VID пробовал, термометр работал. Как всегда проблема в какой-то мелочи, если никто не победит до выходных, постараюсь плотненько занятся.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Чт апр 22, 2010 19:39:32
Radan
Спешу во первых, поблагодарить Петра за библиотеку, и во вторых, сообщить, что библиотека работает с VBNET!
Кое что добавил и получился вполне работоспособный пример на вышеуказанный термометр.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Сб дек 25, 2010 05:22:16
K_o_T
Приветствую всех!
Возможно не туда (если что перенаправьте) , но я уже просто не знаю что делать и в чем искать причину!
Уже несколько месяцев пользую проект "hid-data" подкоректировав его под свои нужды в связке с Delphi. И все шло норм, Но после очередной поездки на работу с платой этой - врубаю а ЮСБ пишет "Устройство не опознано" Как так? ПереПрозвонил по 20 раз уже все. Обрывов нет, коротких тоже... Ради интереса позаливал разные варианты прошивок и из "hid-custom-rq" и разные модификации "hid-data" - Все равно не опознано! Но прошивается без ошибок (тоесть с кварцом и кондерами я так понял все в норме) и если прописать "DDRB = 0xFF;" между "DBG1(0x00, 0, 0);" и "odDebugInit();" то светятся диоды как и положено. НО ЮСБ "не опознано". Подтолкните плз в какую сторону рыть... уже 3-й день над девайсом этим сижу...
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Сб дек 25, 2010 20:21:53
K_o_T
Пробовал с 3-мя компами (2 ХР и 1 Win7) одно и тоже... Делал на диодах (прозвонил - не пробитые):
И кстати замерял напругу - такое впечатление что ни R1 ни R2 нет... (тоесть между выводом USB1 и PD2 = USB1 и USB3 = 4,93 В) а (между выводом USB4 и PD4 = USB4 и USB2 = 2,97 В) Но при этом резюки исправно показывают 68 Ом. А между PD2 и PD4 так же как и между USB2 и USB3 = 2,95 В.
Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Сб дек 25, 2010 21:04:54
Radan
Прозвоните кабель на обрыв и КЗ, также попробуйте поменять контроллер, может быть проблема с входными пинами.