I only have translated messages into English.
I hope, it will help you.
Device_IO.pb
Code: Select all
#USB_PID=1
#USB_VID=$1234
Global W_DeviceHandle=0, R_DeviceHandle=0
Procedure FindDevice_Timer()
Static Old_Test
Test=HID_Lib_DeviceTest(#USB_PID, #USB_VID)
If Test<>Old_Test
Old_Test=Test
If Test
HID_Lib_CloseDevice(W_DeviceHandle)
HID_Lib_CloseDevice(R_DeviceHandle)
W_DeviceHandle=HID_Lib_OpenDevice(#USB_PID, #USB_VID)
R_DeviceHandle=HID_Lib_OpenDevice(#USB_PID, #USB_VID)
SetGadgetText(1,"HID device is connected")
Else
HID_Lib_CloseDevice(W_DeviceHandle)
HID_Lib_CloseDevice(R_DeviceHandle)
W_DeviceHandle=0 : R_DeviceHandle=0
SetGadgetText(1,"Device not found ( PID — "+Hex(#USB_PID)+"H; VID — "+Hex(#USB_VID)+"H) ")
SetGadgetText(5,"No")
EndIf
EndIf
EndProcedure
Procedure SendDevice(Command.w)
If W_DeviceHandle
HID_Lib_WriteDevice(W_DeviceHandle, @Command,2)
Else
MessageRequester("", "There is no communication with the device!", #MB_OK|#MB_ICONWARNING)
EndIf
EndProcedure
Procedure Thread(*xx)
Dim InBuffer.b(2)
Repeat
If R_DeviceHandle
HID_Lib_ReadDevice(R_DeviceHandle, @InBuffer(), 2)
If InBuffer(1)=20
SetGadgetText(5,"Да")
ElseIf InBuffer(1)=40
SetGadgetText(5,"Нет")
EndIf
EndIf
Delay(10)
ForEver
EndProcedure
OpenWindow(0,0,0,320,100,"HID example",#PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered)
TextGadget(1,10,10,300,16,"The device isn't found ( PID — "+Hex(#USB_PID)+"H; VID — "+Hex(#USB_VID)+"H )",#PB_Text_Center)
ButtonGadget(2,40,70,120,24,"Turn LED On")
ButtonGadget(3,170,70,120,24,"Turn LED Off")
TextGadget(4,50,40,98,16,"Is button pressed?")
StringGadget(5,140,36,40,20,"No",1|#PB_String_ReadOnly)
FindDevice_Timer()
HideWindow(0,0)
SetTimer_(WindowID(0),1,200,@FindDevice_Timer())
CreateThread(@Thread(),0)
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Gadget
Select EventGadget()
Case 2
SendDevice($AA00)
Case 3
SendDevice($5500)
EndSelect
EndIf
Until Event=#PB_Event_CloseWindow
DeviceInfo.pb
Code: Select all
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 devices info — HID_Lib Demo",#PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
SmartWindowRefresh(0, 1)
ListIconGadget(0,2,2,924,290,"Manufacturer",100,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
AddGadgetColumn(0,1,"Product",100)
AddGadgetColumn(0,2,"PID",48)
AddGadgetColumn(0,3,"VID",48)
AddGadgetColumn(0,4,"Version #",90)
AddGadgetColumn(0,5,"Serial #",104)
AddGadgetColumn(0,6,"Input buffers number",110)
AddGadgetColumn(0,7,"Input report size",120)
AddGadgetColumn(0,8,"Output report size",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
ElseIf Event=#PB_Event_SizeWindow
ResizeGadget(0, #PB_Ignore, #PB_Ignore, WindowWidth(0)-4, WindowHeight(0)-4)
EndIf
Until Event = #PB_Event_CloseWindow
DeviceTest.pb
Code: Select all
#USB_PID=1
#USB_VID=$1234
Procedure Timer1()
If HID_Lib_DeviceTest(#USB_PID, #USB_VID)=1
SetGadgetText(1,"Device is conected")
SetGadgetColor(1,#PB_Gadget_FrontColor,$92616D)
Else
SetGadgetText(1,"Device not found")
SetGadgetColor(1,#PB_Gadget_FrontColor,$0000FF)
EndIf
EndProcedure
OpenWindow(0,0,0,280,100,"HID_Lib_DeviceTest",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
TextGadget(0,40,10,200,16,"PID - "+Hex(#USB_PID)+"H; VID - "+Hex(#USB_VID)+"H",#PB_Text_Center )
TextGadget(1,80,40,200,16,"")
Timer1()
AddWindowTimer(0, 1, 500)
Repeat
Event=WaitWindowEvent()
If Event=#PB_Event_Timer
If EventTimer()=1
Timer1()
EndIf
EndIf
Until Event = #PB_Event_CloseWindow