Приветствую Вас, Гость! Регистрация RSS

Вторник, 22.08.2017
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Форум » Форум mega-avr.ucoz.ru » Языки программирования » PureBasic. Библиотека HID_Lib (Обсуждение библиотеки для работы с USB портом)
PureBasic. Библиотека HID_Lib
АвторДата: Вторник, 08.02.2011, 22:54 | Сообщение # 1
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Библиотека HID Lib предназначена для работы с USB HID устройствами.
Она созданна в среде PureBasic 4.41.

Список функций:


  • HID_Lib_CloseDevice
  • HID_Lib_DeviceInfo
  • HID_Lib_DeviceTest
  • HID_Lib_GetCaps
  • HID_Lib_GetFeature
  • HID_Lib_GetInputReport
  • HID_Lib_GetManufacturerString
  • HID_Lib_GetNumInputBuffers
  • HID_Lib_GetProductString
  • HID_Lib_GetSerialNumberString
  • HID_Lib_OpenDevice
  • HID_Lib_ReadDevice
  • HID_Lib_SetFeature
  • HID_Lib_SetInputReport
  • HID_Lib_WriteDevice



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
DenisДата: Вторник, 08.02.2011, 22:54 | Сообщение # 2
Любопытный
Сообщений: 116
Репутация: 1
Город: Москва
Статус: Отсутствует
skiff,
Привет!
Отличные новости!
Ты пробовал писать что-то для USB?
 
АвторДата: Вторник, 08.02.2011, 22:54 | Сообщение # 3
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Привет Denis. Пока ещё не пробовал, собираюсь! Хочу на PureBasic'e поразрабатывать приложения для работы с COM, и далее с USB и сделать статейки!


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:55 | Сообщение # 4
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (Denis)
skiff, Привет! Отличные новости! Ты пробовал писать что-то для USB?
Пробовал - работает библиотека. Там в папке с примерами, есть парочка проектов на PIC и AVR контроллерах.
Схема из третьего поста, похоже как раз из папки с примерами.

Вот еще проекты с использованием USB библиотеки.
http://pure-basic.narod.ru/article/pickit2.html
http://purebasic.mybb.ru/viewtopic.php?id=46
http://radiokot.ru/konkurs/059/ продолжение http://bascom.at.ua/publ/koshechkin_glaz/1-1-0-45
http://bascom.at.ua/publ/usb_termoperekljuchatel_thermopower/1-1-0-41

 
АвторДата: Вторник, 08.02.2011, 22:55 | Сообщение # 5
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Levin, спасибо за ссылки!
Сами чего-нибудь с USB и микроконтроллером делали?



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:55 | Сообщение # 6
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Делал...
В принципе работа с библиотекой не очень сложная, главное чтобы число отправляемых/принимаемых байт было равно размеру дескриптора конечной точки USB HID устройства.
Программа для контроллера (на BASCOM) оказалась тоже не очень сложной для понимания.
 
АвторДата: Вторник, 08.02.2011, 22:55 | Сообщение # 7
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Замечательно...
Я сегодня юзал HID Lib библиотеку и разбирался с функцией

Code

//В структуру будут помещены данные о всех HID устройствах
HID_Lib_DeviceInfo( *Struct.HID_Lib_DeviceInfo )

Но вот не могу сообразить как её использовать! Levin, юзал эту функцию?



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:55 | Сообщение # 8
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (skiff)
Но вот не могу сообразить как её использовать! Levin, юзал эту функцию?
Пример использования есть в папке с примерами (Examples) библиотеки. Это файл DeviceInfo.pb
Этот же пример, продублирован в справке, описывающий функции.
Code
Procedure HID_DeviceInfo()
ClearGadgetItems(0)
Info.HID_Lib_DeviceInfo
If HID_Lib_DeviceInfo(@Info)
   If Info\CountDevice>0
     For i=0 To Info\CountDevice-1
       AddGadgetItem(0,i,Info\DeviceInfo[i]\Manufacturer)
       SetGadgetItemText(0,i,Info\DeviceInfo[i]\Product,1)
       SetGadgetItemText(0,i,Hex(Info\DeviceInfo[i]\ProductID,#PB_Word)+"H",2)
       SetGadgetItemText(0,i,Hex(Info\DeviceInfo[i]\VendorID,#PB_Word)+"H",3)
       SetGadgetItemText(0,i,Hex(Info\DeviceInfo[i]\VersionNumber,#PB_Word)+"H",4)
       SetGadgetItemText(0,i,Info\DeviceInfo[i]\SerialNumber,5)
       SetGadgetItemText(0,i,Str(Info\DeviceInfo[i]\NumInputBuffers),6)
       SetGadgetItemText(0,i,Str(Info\DeviceInfo[i]\InputReportByteLength),7)
       SetGadgetItemText(0,i,Str(Info\DeviceInfo[i]\OutputReportByteLength),8)
       SetGadgetItemText(0,i,Str(Info\DeviceInfo[i]\FeatureReportByteLength),9)
     Next i
   EndIf
EndIf
EndProcedure

OpenWindow(0,0,0,930,294,"Иформация о USB HID устройствах     —     HID_Lib  Demo",#PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered)
  ListIconGadget(0,2,2,924,290,"Изготовитель",100,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    AddGadgetColumn(0,1,"Продукт",100)
    AddGadgetColumn(0,2,"PID",48)
    AddGadgetColumn(0,3,"VID",48)
    AddGadgetColumn(0,4,"Номер версии",90)
    AddGadgetColumn(0,5,"Серийный номер",104)
    AddGadgetColumn(0,6,"Число вх. буферов",110)
    AddGadgetColumn(0,7,"Размер вх. репорта",120)
    AddGadgetColumn(0,8,"Размер вых. репорта",124)
    AddGadgetColumn(0,9,"FEATURE",70)
HID_DeviceInfo()
HideWindow(0,0)

AddWindowTimer(0, 1, 400)

Repeat
    Event=WaitWindowEvent()
    If Event=#PB_Event_Timer
      If  EventTimer()=1
        HID_DeviceInfo()
      EndIf
    EndIf
Until Event = #PB_Event_CloseWindow

Функция поместит в структуру HID_Lib_DeviceInfo информацию обо всех обнаруженных USB HID устройствах.
Code
Structure HID_Lib_Sub_DeviceInfo
   VendorID.w
   ProductID.w
   VersionNumber.w
   NumInputBuffers.w
   InputReportByteLength.w
   OutputReportByteLength.w
   FeatureReportByteLength.w
   Manufacturer.s
   Product.s
   SerialNumber.s
EndStructure

Structure HID_Lib_DeviceInfo
  CountDevice.w              ; Число обнаруженных HID устройств
  DeviceInfo.HID_Lib_Sub_DeviceInfo[258]
EndStructure
 
АвторДата: Вторник, 08.02.2011, 22:55 | Сообщение # 9
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Это понятно, а я хотел смысл выяснить этой функции. Как она в структуру помещает данные и как их оттуда извлекать. В примере совершенно не понятно...я сегодня его уже разбирал...


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:56 | Сообщение # 10
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (skiff)
Как она в структуру помещает данные
Программа передает функции указатель на структуру HID_Lib_DeviceInfo и она ее заполняет.
Вот упрощенный пример, скопированный отсюда.
Code
Structure Proba
   x.l
   y.l
   Text.s
EndStructure

test.Proba ; Объявление структуры

Procedure Test(*var.Proba)
  *var\x=1
  *var\y=2
  *var\Text="Текст"
EndProcedure

Test(@test) ; Вызываем процедуру и передаём ей указатель на структуру
; Отображаем в отладочном окне данные из структуры
Debug test\x
Debug test\y
Debug test\Text

Когда вызывается процедура Test, ей передается указатель на структуру. В процедуре она заполняется.

Функция HID_Lib_DeviceInfo выполняет примерно тоже самое.
Структура HID_Lib_DeviceInfo содержит статический массив структур HID_Lib_Sub_DeviceInfo и в каждый элемент этого статического массива (структуры HID_Lib_Sub_DeviceInfo), заносятся данные об отдельном устройстве.
В программе, в цикле производится перебор всех элементов статического массива и отображение данных в таблице.

 
DenisДата: Вторник, 08.02.2011, 22:56 | Сообщение # 11
Любопытный
Сообщений: 116
Репутация: 1
Город: Москва
Статус: Отсутствует
Мне вот интересно как написать программу для МК на языке С, а то все примеры и статьи либо на асемблере, либо на баскоме.
Может кто поделится опотом?
 
DenisДата: Вторник, 08.02.2011, 22:56 | Сообщение # 12
Любопытный
Сообщений: 116
Репутация: 1
Город: Москва
Статус: Отсутствует
skiff,
Ты пробовал в библиотеку HID_Lib_PB.dll?
Ниже есть описание и сама dll.

P.S. Отзывы народа положительные! (Сам не пробовал.)

Файл: _HID_Lib_PB.dll.rtf(54Kb) · HID_Lib_PB.dll(10Kb)
 
LevinДата: Вторник, 08.02.2011, 22:56 | Сообщение # 13
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (Denis)
Мне вот интересно как написать программу для МК на языке С, а то все примеры и статьи либо на асемблере, либо на баскоме.
Посмотри здесь http://www.obdev.at/products/vusb/index.html

Quote (Denis)
пробовал в библиотеку HID_Lib_PB.dll
Она основана на рассматриваемой библиотеке HID_Lib для PureBasic.
Использовать ее имеет смысл при работе в другой среде программирования, скажем, дельфи, а в PureBasic использовать особого смысла нет, т. к. это клон HID_Lib, только в виде DLL. Зачем за прогой тащить дополнительную DLL, если можно обойтись без этого?


Сообщение отредактировал Levin - Понедельник, 07.02.2011, 22:58
 
DenisДата: Вторник, 08.02.2011, 22:56 | Сообщение # 14
Любопытный
Сообщений: 116
Репутация: 1
Город: Москва
Статус: Отсутствует
Levin,
я не знал что HID_Lib_PB.dll это клон.

На том сайте всё по не русски написанно, а я плохо понимаю(((

 
LevinДата: Вторник, 08.02.2011, 22:56 | Сообщение # 15
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Ее обсуждение на коте
 
АвторДата: Вторник, 08.02.2011, 22:57 | Сообщение # 16
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Сделал такую запись кода, но чего-то не то

Code

;devices.HID_Lib_Sub_DeviceInfo
info.HID_Lib_DeviceInfo

HID_Lib_DeviceInfo( @info )
for i=0 To info\CountDevice

    Debug "--- Число обнаруженных HID устройств ---"
    Debug info\CountDevice
    Debug "-----------------------------------------------------------------------"
    Debug info\DeviceInfo[i]\FeatureReportByteLength
    Debug info\DeviceInfo[i]\InputReportByteLength
    Debug info\DeviceInfo[i]\Manufacturer
    Debug info\DeviceInfo[i]\NumInputBuffers
    Debug info\DeviceInfo[i]\OutputReportByteLength
    Debug info\DeviceInfo[i]\Product
    Debug info\DeviceInfo[i]\ProductID
    Debug info\DeviceInfo[i]\VendorID
    Debug info\DeviceInfo[i]\VersionNumber
    Debug info\DeviceInfo[i]\SerialNumber
      
    ;If info\CountDevice>0
    ;Else
      ;End
    ;EndIf
next

Дебагер вывод нули!!! Есть у кого соображения!?




_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:57 | Сообщение # 17
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (skiff)
Есть у кого соображения!?
Похоже что к компу не подключено ни одного USB HID устройства.
У меня вот какие результаты

 
АвторДата: Вторник, 08.02.2011, 22:57 | Сообщение # 18
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
На системнике два USB порта, к одному была подключена флэшка, а к другому usb-модем! По идее должен был выдать инфу о подключённых устройствах.


_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
LevinДата: Вторник, 08.02.2011, 22:57 | Сообщение # 19
Заглянувший
Сообщений: 10
Репутация: 0
Город: Softu
Статус: Отсутствует
Quote (skiff)
На системнике два USB порта, к одному была подключена флэшка, а к другому usb-модем!

Это не USB HID устройства.
Другое дело, если бы была подключена USB мышка или клавиатура.
 
АвторДата: Вторник, 08.02.2011, 22:57 | Сообщение # 20
Автор сайта
Сообщений: 200
Репутация: 3
Город: Омск
Статус: Отсутствует
Кстати, запустил программку на домашнем компутере, результат таков:

Levin, а у тебя что к USB подкючено, ведь по определению 4 устройства найдено?



_____________________________________________________________
Радиоэлектроника и Программирование занимательная штука...
 
Форум » Форум mega-avr.ucoz.ru » Языки программирования » PureBasic. Библиотека HID_Lib (Обсуждение библиотеки для работы с USB портом)
Страница 1 из 212»
Поиск: