Например TDA7294

Форум РадиоКот • Просмотр темы - Простейший код HID. Везде только слова, мыши и джойстики...
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт июл 17, 2025 22:41:42

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 209 ]     ... , , , , 11
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вс авг 19, 2012 15:27:35 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 25, 2012 23:27:07
Сообщений: 4
Рейтинг сообщения: 0
Так и делал, далее при тестировании выдавало что-то типа: "невозможно обратиться к 0 адресу" или что-то подобное, но уже не важно, я уже все сделал на тех библиотеках, которые вы мне посоветовали)) :)) Все работает, только пришлось (для универсальности программы) делать целых 3 модуля:

HID_Lib_Plus.vb
СпойлерPublic Function HID_CloseDevice(ByVal Handle As Integer) As Integer

If System.IntPtr.Size = 4 Then
HID_CloseDevice = HID_Lib_Plus_x86.HID_Lib_Plus_CloseDevice(Handle)
Else
HID_CloseDevice = HID_Lib_Plus_x64.HID_Lib_Plus_CloseDevice_x64(Handle)
End If
End Function

HID_Lib_Plus_x64.vb
СпойлерPrivate Declare Function HID_CloseDevice Lib "HID_Lib_Plus_x64.dll" (ByVal Handle As Integer) As Integer

Public Function HID_Lib_Plus_CloseDevice_x64(ByVal Handle As Integer) As Integer
HID_Lib_Plus_CloseDevice_x64 = HID_Lib_Plus_x64.HID_CloseDevice(Handle)
End Function

HID_Lib_Plus_x86.vb
СпойлерPrivate Declare Function HID_CloseDevice Lib "HID_Lib_Plus.dll" (ByVal Handle As Integer) As Integer

Public Function HID_Lib_Plus_CloseDevice(ByVal Handle As Integer) As Integer
HID_Lib_Plus_CloseDevice = HID_Lib_Plus_x86.HID_CloseDevice(Handle)
End Function


И это все потому, что 2 библиотеки (х86 и х64) имеют одинаково названные функции... С другими функциями так-же...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вс авг 19, 2012 15:42:35 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
В VB вроде есть алиасы с помощью которых можно изменить имя импортируемой функции.
Можно так же использовать условную компиляцию чтобы собирать программу под требуемую платформу. В этом случае, одинаковые имена не помеха.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вс авг 19, 2012 15:47:57 
Родился
Аватар пользователя

Зарегистрирован: Ср июл 25, 2012 23:27:07
Сообщений: 4
Рейтинг сообщения: 0
Да, вы правы, есть, но вот давать другие имена я не умею, а с условной компиляцией не пробовал... Буду разбираться))) Спс))

Все, разобрался, использую Alias))
Теперь только 1 модуль:
HID_Lib_Plus
СпойлерModule HID_Lib_Plus
' x86
Private Declare Function HID_OpenDevice_x86 Lib "HID_Lib_Plus.dll" Alias "HID_OpenDevice" (ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer
Private Declare Function HID_CloseDevice_x86 Lib "HID_Lib_Plus.dll" Alias "HID_CloseDevice" (ByVal Handle As Integer) As Integer
Private Declare Function HID_ReadDevice_x86 Lib "HID_Lib_Plus.dll" Alias "HID_ReadDevice" (ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
Private Declare Function HID_WriteDevice_x86 Lib "HID_Lib_Plus.dll" Alias "HID_WriteDevice" (ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
Private Declare Function HID_DeviceTest_x86 Lib "HID_Lib_Plus.dll" Alias "HID_DeviceTest" (ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer
' x64
Private Declare Function HID_OpenDevice_x64 Lib "HID_Lib_Plus_x64.dll" Alias "HID_OpenDevice" (ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer
Private Declare Function HID_CloseDevice_x64 Lib "HID_Lib_Plus_x64.dll" Alias "HID_CloseDevice" (ByVal Handle As Integer) As Integer
Private Declare Function HID_ReadDevice_x64 Lib "HID_Lib_Plus_x64.dll" Alias "HID_ReadDevice" (ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
Private Declare Function HID_WriteDevice_x64 Lib "HID_Lib_Plus_x64.dll" Alias "HID_WriteDevice" (ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
Private Declare Function HID_DeviceTest_x64 Lib "HID_Lib_Plus_x64.dll" Alias "HID_DeviceTest" (ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer

Public Function HID_OpenDevice(ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer
If System.IntPtr.Size = 4 Then
HID_OpenDevice = HID_OpenDevice_x86(PID, VID, VersionNumber, Index)
Else
HID_OpenDevice = HID_OpenDevice_x64(PID, VID, VersionNumber, Index)
End If
End Function

Public Function HID_CloseDevice(ByVal Handle As Integer) As Integer
If System.IntPtr.Size = 4 Then
HID_CloseDevice = HID_CloseDevice_x86(Handle)
Else
HID_CloseDevice = HID_CloseDevice_x64(Handle)
End If
End Function

Public Function HID_ReadDevice(ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
If System.IntPtr.Size = 4 Then
HID_ReadDevice = HID_ReadDevice_x86(Handle, buffer, Len)
Else
HID_ReadDevice = HID_ReadDevice_x64(Handle, buffer, Len)
End If
End Function

Public Function HID_WriteDevice(ByVal Handle As Integer, ByVal buffer() As Byte, ByVal Len As Integer) As Integer
If System.IntPtr.Size = 4 Then
HID_WriteDevice = HID_WriteDevice_x86(Handle, buffer, Len)
Else
HID_WriteDevice = HID_WriteDevice_x64(Handle, buffer, Len)
End If
End Function

Public Function HID_DeviceTest(ByVal PID As Integer, ByVal VID As Integer, ByVal VersionNumber As Short, ByVal Index As Short) As Integer
If System.IntPtr.Size = 4 Then
HID_DeviceTest = HID_DeviceTest_x86(PID, VID, VersionNumber, Index)
Else
HID_DeviceTest = HID_DeviceTest_x64(PID, VID, VersionNumber, Index)
End If
End Function
End Module


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Пн авг 20, 2012 21:27:15 
Родился

Зарегистрирован: Пт ноя 04, 2011 11:10:18
Сообщений: 5
Рейтинг сообщения: 0
У меня возникла проблема с VB6.0 - в переменную "VersionNumber" надо затолкать число, большее, чем 32'767, т.е. там что-то в районе 42'000. Совершенно не представляю, как мне объявить переменную из двух байт, может как два аргумента, типа
"Ver1 as byte, Ver0 as Byte"
Какие будут советы?

Ни на одну из пар VID-PID (найденных в диспечтере устройств) не реагирует библиотека, видимо из-за того, что подключение к устройствам уже установлено из среды WinXP. Плату с ATmega8A скоро изготовлю, надеюсь не впустую...
:solder:


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вт авг 21, 2012 09:50:13 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
VOG-NevaDA писал(а):
Совершенно не представляю, как мне объявить переменную из двух байт
Переменная не должна состоять из двух байт, точнее издвух переменных, а должна занимать в памяти два байта.
Если верить этому, то тип переменной должен быть Integer.
"VersionNumber" это не обяхательный параметр. В мето него можо указать -1 и тогда будет производится поиск только по PID и VID.

Для примера, вот кусок кода на VB6. http://www.radiokot.ru/forum/viewtopic. ... 74#p446274
Код:
        Dim vid As Integer = 5824
        Dim pid As Integer = 1503


        Dim ver As Integer = -1
        Dim ind As Integer = 0
        Dim Handle As Integer
        Dim res
        Dim CountInputBuffers
        Handle = HID_OpenDevice(pid, vid, ver, ind)


VOG-NevaDA писал(а):
Ни на одну из пар VID-PID (найденных в диспечтере устройств) не реагирует библиотека
Скорее всего не правильно указываете эти идентификаторы.
Что покажет эта программа? http://www.radiokot.ru/forum/viewtopic. ... 86#p446286


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Ср авг 22, 2012 23:05:07 
Родился

Зарегистрирован: Пт ноя 04, 2011 11:10:18
Сообщений: 5
Рейтинг сообщения: 0
Всё, собрал плату, определяется как HID, но функция HID_DeviceTest возвращает 0 при всех вариантах входных параметров...


Вложения:
3.GIF [14.6 KiB]
Скачиваний: 671
Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Чт авг 23, 2012 09:07:14 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
VOG-NevaDA писал(а):
но функция HID_DeviceTest возвращает 0 при всех вариантах входных параметров
На скриншоте данные указаны в шестнадцатеричной системе счисления.
Это учтено в коде?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вс авг 26, 2012 05:25:00 
Родился

Зарегистрирован: Пт ноя 04, 2011 11:10:18
Сообщений: 5
Рейтинг сообщения: 0
Простите, что долго не отвечал. Само собой учтено, пишется как &H2010 и т.д., это я знаю, ошибок в программе вроде не допускал, может только я зря 2-х байтовый аргумет обозвал Integer'ом...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Простейший код HID. Везде только слова, мыши и джойстики
СообщениеДобавлено: Вс авг 26, 2012 07:16:04 
Родился

Зарегистрирован: Пт ноя 04, 2011 11:10:18
Сообщений: 5
Рейтинг сообщения: 0
Я ставил алгоритм, перебирающий все возможные варианты индексов - бесполезно. Версию пробовал -1 и 0 - тот же эффект...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 209 ]     ... , , , , 11

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: konstz50 и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y