Egzsyerü USB HID készülék
Kód: Egész kijelölése
CompilerIf Defined(HID_Lib_DeviceInfo, #PB_Function) = 0
CompilerError
CompilerEndIf
#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 Keszulek scatlakoztatva")
Else
HID_Lib_CloseDevice(W_DeviceHandle)
HID_Lib_CloseDevice(R_DeviceHandle)
W_DeviceHandle=0 : R_DeviceHandle=0
SetGadgetText(1,"Keszulek nem talalhato ( PID — "+Hex(#USB_PID)+"H; VID — "+Hex(#USB_VID)+"H) ")
SetGadgetText(5,"Nem")
EndIf
EndIf
EndProcedure
Procedure SendDevice(Command.w)
If W_DeviceHandle
HID_Lib_WriteDevice(W_DeviceHandle, @Command,2)
Else
MessageRequester("", "Keszulekel nincs kapcsolat!", #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,"Igen")
ElseIf InBuffer(1)=40
SetGadgetText(5,"Nem")
EndIf
EndIf
Delay(10)
ForEver
EndProcedure
OpenWindow(0,0,0,320,100,"Pelda HID ",#PB_Window_MinimizeGadget|#PB_Window_Invisible|#PB_Window_ScreenCentered)
TextGadget(1,10,10,300,16," Keszulek nem talalhato ( PID — "+Hex(#USB_PID)+"H; VID — "+Hex(#USB_VID)+"H )",#PB_Text_Center)
ButtonGadget(2,40,70,120,24,"Led bekapcs")
ButtonGadget(3,170,70,120,24,"Led kikapcs")
TextGadget(4,50,40,98,16,"Gomb lenymva?")
StringGadget(5,140,36,40,20,"Nem",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