PB_EXPERT, Вы большой молодец. Действительно, что главное не инструмент, а умение им работать. Сейчас вклеиваю вашу длл в прогу на Си. А я уже было, откровенно говоря, плюнул на vusb.
Присоединяюсь 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
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
Цитата:
главное не инструмент
От инструмента тоже многое зависит. Просто многие считают что "нормальные" проги можно писать только на Си, или в крайнем случае, на дельфи, но при этом забывают что бейсик, это только название языка, а возможности зависят от компилятора и имеющихся библиотек.
Последний раз редактировалось PB_EXPERT Пн апр 19, 2010 15:06:59, всего редактировалось 1 раз.
Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 14:05:51
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
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 можно удалить.
Dim vid As Short = 43690 ' &HAAAA Dim pid As Short = 61188 ' &HEF04
При указанных vid и pid и типе Short будет ошибка, т.к. он не больше 32000 (2^16). Если в декларации функций библиотеки ставлю Integer для vid и pid , он возвращает массив из нулей.
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.
Может, все -таки давить в одну точку и пытаться унифицировать класс ??? Я как бы возьму на себя сторону контроллера, PB_EXPERT - сторону приложения ? И на хид-дата сделать ?
Перекомпилил и залил прошивку с такими же вид и пид как в WindowsApplication_2. Попробовал на другом приложении, термометр работает. Вышеуказаннsй пример вылетает с ошибкой: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Что-то не так...
Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
Добавлено: Пн апр 19, 2010 23:05:18
Потрогал лапой паяльник
Зарегистрирован: Вс мар 30, 2008 14:31:51 Сообщений: 331
Рейтинг сообщения:0
Radan писал(а):
Перекомпилил и залил прошивку с такими же вид и пид как в WindowsApplication_2. Попробовал на другом приложении, термометр работает. Вышеуказаннsй пример вылетает с ошибкой: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена." Что-то не так...
Странно, у меня никакой ошибки нет. Зачем было использовать PID и VID не такие как в термометре? Ведь работать не будет! Подправил проект. PID = $EF04 VID = $AAAA
Я смогу попробовать только завтра, сегодня после работы в гости иду... PID и VID я и в прошивке термометра менял, и в проекте VB.NET, т.е. ставил одинаковые. На другой библиотеке с новыми и старыми PID и VID пробовал, термометр работал. Как всегда проблема в какой-то мелочи, если никто не победит до выходных, постараюсь плотненько занятся.
Спешу во первых, поблагодарить Петра за библиотеку, и во вторых, сообщить, что библиотека работает с VBNET! Кое что добавил и получился вполне работоспособный пример на вышеуказанный термометр.
Приветствую всех! Возможно не туда (если что перенаправьте) , но я уже просто не знаю что делать и в чем искать причину! Уже несколько месяцев пользую проект "hid-data" подкоректировав его под свои нужды в связке с Delphi. И все шло норм, Но после очередной поездки на работу с платой этой - врубаю а ЮСБ пишет "Устройство не опознано" Как так? ПереПрозвонил по 20 раз уже все. Обрывов нет, коротких тоже... Ради интереса позаливал разные варианты прошивок и из "hid-custom-rq" и разные модификации "hid-data" - Все равно не опознано! Но прошивается без ошибок (тоесть с кварцом и кондерами я так понял все в норме) и если прописать "DDRB = 0xFF;" между "DBG1(0x00, 0, 0);" и "odDebugInit();" то светятся диоды как и положено. НО ЮСБ "не опознано". Подтолкните плз в какую сторону рыть... уже 3-й день над девайсом этим сижу...
Пробовал с 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 В.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения