PureBasik és Bascom AVR Példa

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Dor
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2015. január 14. szerda, 19:29

PureBasik és Bascom AVR Példa

Hozzászólás Szerző: Dor »

PureBasik és Bascom AVR Példa
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
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Válasz küldése