Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 181
Из них просматривают:
Аналоги: 77. Галерея: 1. Даташиты: 34. Инструкции: 3. Новости: 16. Обзор: 1. Остальное: 4. Программы: 1. Производители: 2. Профиль пользователя: 5. Теги: 3. Форум: 34.
Участников: 2
Гостей: 179

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
Это значит у них Integer - это 4 байта... Писец... Но когда ставлю Integer вместо Short у меня вылазит ошибка, что неверный размер входных данных...

Странно как-то всё

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
Private Declare Function HID_OpenDevice_x86 Lib "HID_Lib_Plus.dll" Alias "HID_OpenDevice" _
(ByVal PID As Long, _
ByVal VID As Long, _
ByVal VersionNumber As Integer, _
ByVal Index As Integer) As Integer

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 Byte, _
ByVal Index As Byte) As Integer

Вот два объявления, которые правильно работают, даже не знаю как, но и при одном, и при другом реакция одинаковая - возвращается ПРАВИЛЬНЫЙ хэндл для обращения к устройству, посылки передаются и принимаются на отлично!

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
И ответ можно в Integer, а можно и в Long запрашивать... И то и то работает... Наверное сделаю всё с максимальным объёмом переменных, чтобы случайно Overflow не вылезал...

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Старший сотрудник
Зарегистрирован:
07.01.2010 15:24
Сообщений: 124
Не в сети
В архиве с библиотекой есть описание функций и там указано сколько байт занимает каждый аргумент. Цитата:
Снитаксис

Handle = HID_OpenDevice(PID, VID, VersionNumber, Index)

Описание

PID – (2 байта) Vendor ID устройства.
VID - (2 байта) Product ID устройства.
VersionNumber - (2 байта) номер версии устройства. Если он не известен, то указываем -1 или 65535
Index - (2 байта) индекс устройства если подключены несколько с одинаковыми идентификаторами. По умолчанию, индекс равен нулю.

Получение доступа к USB HID устройству.
В случае успеха, функция вернёт хендл (идентификатор устройства) - число не равное нулю,
для последующей работы с ним.
При возникновении ошибки, скажем, если устройство не найдено, функция вернёт ноль.
Для разрыва связи с HID устройством, следует использовать функцию HID_Lib_CloseDevice



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
proger:
Эта библиотека всегда ноль выдаёт по всем функциям... Я другую поставил - вроде всё ОК, только передать больше 1 байта не получается (за одну посылку), поэтому пришлось 2 старших бита занять на управление (если 00 - управление портом B, если 01 - АЦП...)

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
Вот что получилось у меня, это на меге8 через HID...

Сори за дизайн, пока только функциональность важна...

Прикреплённый файл:



gif  NE555_Cap.GIF (22.30 KB)
5253_503fbeca5d5de.gif 1005X397 px

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Старший сотрудник
Зарегистрирован:
07.01.2010 15:24
Сообщений: 124
Не в сети
Цитата:

78L05 пишет:
только передать больше 1 байта не получается (за одну посылку)
При программной эмуляции (низкоскоростной девайс) можно передавать до 8 байт в посылке, каждые 10 миллисекунд.
Почему передается только один байт за раз, сложно сказать не видя кода, но могу предположить что это прописано в HID дескрипторе и изменив последний, можно увеличить размер посылки до 8 байт.



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
Вот часть, отвечающая за USB. Где что заменить, и на какое значение?

Прикреплённый файл:


zip HID.zip Размер: 8.70 KB; Просмотры: 529

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Главный Технолог
Зарегистрирован:
10.01.2011 7:39
Из: Москва
Сообщений: 473
Не в сети
Возможно надо как-то изменить
Цитата:

Data &H75 , &H08 ' Report_size(8)

Я пробовал ставить 16 (&H10) вместо 8, но ни один из размеров посылки нормально не проходил...

За отправку сообщения отвечает следующий код:
Цитата:

BufferV(1) = Value
HID_WriteDevice Handle, BufferV(0), 2

Указание на схемах номиналов элементов, не принадлежащих никакому ряду без особого технического обоснования, считается неграмотностью.



Re: Создание гаджета собственными руками
Старший сотрудник
Зарегистрирован:
07.01.2010 15:24
Сообщений: 124
Не в сети
Вот HID дескриптор (файл USB_Descriptor.bas).
' Дескриптор сообщения (репорта), описывающий тип HID устройства и его характеристики
_usb_hid_reportdescriptor:
Data Size_hid_reportdescriptor                              
Тип устройстваВ данном случаеэто нестандартное HID устройство
Data 
&H06 , &H00 , &HFF                                     ' Usage_page(vendor Defined Page 1)
Data &H09 , &H01                                            ' 
Usage(vendor Usage 1)
Data &HA1 , &H02                                            ' Collection(logical)
Описание конечной точкитипа Input
Data 
&H09 , &H01                                            ' Usage(pointer)
Data &H15 , &H00                                            ' 
Logical_minimum(0)
Data &H25 , &HFF                                            ' Logical_maximum(255)
Data &H75 , &H08                                            ' 
Report_size(8)
Data &H95 , &H01                                            ' Report_count(1)
Data &H81 , &H02                                            ' 
Input(data , Var , Abs)
' Описание конечной точки, типа Output
Data &H09 , &H01                                            ' 
Usage(pointer)
Data &H15 , &H00                                            ' Logical_minimum(0)
Data &H26 , &HFF , 0                                        ' 
Logical_maximum(255)
Data &H75 , &H08                                            ' Report_size(8)
Data &H95 , &H01                                            ' 
Report_count(1)
Data &H91 , &H02                                            ' Output(data , Var , Abs)

Data &HC0                                                   ' 
End_collection

При текущей конфигурации, можно отправить компу 1 байт за посылку и принять от него тоже один байт за посылку.
Data &H95 , &H01                                            ' Report_count(1)
Чтобы принимать по 8 байт, нужно изменить &H01 на &H08.

Конечная точка "Input" отвечает за прием данных от компа, а Output, за передачу данных в комп.

Библиотеку "swusb.LBX" нужно обновить до версии 1.6 (прикрепил ее к посту).

Прикреплённый файл:


zip swusb.zip Размер: 3.17 KB; Просмотры: 513


Отредактировано пользователем proger 31.08.2012 12:35:17
Отредактировано пользователем proger 31.08.2012 12:35:51


Поиск по форуму


Расширенный поиск

Разное

Интересно

Вместо высоковольтного провода можно использовать обычный, пропустив его через трубку от капельницы.