die nächste Erweiterung ist erreicht:
2x digitale Eingänge (Taster)
8x Port Erweiterung als Ausgang
1x LDR mit AD Wandlung von 10 bit
1x MIC mit AD Wandlung von 10 bit
1 x Motorsteuerung mit zwei Motoren
Auf dem Buggy habe ich eine Webcam montiert. Derzeit verwende ich zwei USB Kabel. Sinnvoll ist hierbei aber eine leichtes USB Kabel selberlöten (benötigt nur 4 Adern) ein kleiner USB Hub noch auf den Buggy montiert und den Buggy und die Webcam daran anschließen. Wer es möchte kann es auch mit einem Funk USB Hub betreiben. Dann ist man "wirklich" unabhängig.
Jetzt beschäftige ich mich erst einmal mit der Übertragung von Daten per Internet inclusive WebCam streaming. Hilfe nehme ich gerne entgegen...
Habt Spaß
Michael
Funk USB Hub:
http://www.chip.de/news/c1_news_28160633.html
Bild Buggy:

Bild Programmoberfläche:

Code: Alles auswählen
; "MPZ Buggy Faehrt und sieht.pb"
; 
; PowerBasic Example um ein Formel Flowcode Buggy von www.matrixmultimedia.com als 
; Fahrzeug mit Webcam untesrstützung anzusteuern. Das Gerät wird auch von Elektor vertrieben 
; Der PIC 18F4455 besitzt unter anderem 35x I/O´s und 13x 10bit AD´s
; Dieses Programm wird erweitert und erlaubt derzeit:
;                                         2x digitale Eingänge (Taster)
;                                         8x digitalen Ausgängen  
;                                         1x LDR mit AD Wandlung von 10 bit
;                                         1x MIC mit AD Wandlung von 10 bit
;                                         2x Steuerung der beiden Motoren 
;
; PowerBasic Example to use a PIC Formel Flowcode Buggy from www.matrixmultimedia.com as 
; car with Webcam. 
; The PIC 18F4455 has 35x I/O´s and 13x 10bit AD´s
; This Program will updated and has now:
;                          2x digital Inputs 
;                          8x digital Outputs  
;                          1x LDR input with 10 bit resulution
;                          1x MIC input with 10 bit resulution
;                          2x Control of Motorspeed
;  
; Version 1.00 by MPZ Okt.2007
; for PB 4.10 beta3
; 
; benötigt wird die mcHID.dll von der Firma Mecanique. Die mcHID Library ist 
; Bestandteil der EasyHID Software:
; You need the mcHID.dll from the company Mecanique. The mcHID Library is included
; in the EasyHID Software:
; http://www.mecanique.co.uk/software/EasyHID.zip 
;
; Ein direkter Download der DLL ist über den folgenden Link möglich
; Direct download link 
; http://www.docpro.com.br/arquivos/mcHID.zip
;
; Definierte Übergabeparameter
;
;
; Wert Übergabeparameter Funktion 
;  Wert
;  1  2  3  4  5  6  7  8
;  a  b  c  d  e  f  g  h
;  Daten PIC -> PC
;  a = 1    Daten PIC -> PC
;  b,c      AD8(x*256+y) ; MIC - AD Wandlung (10 bit, ADC 8)
;  d,e      AD9(x*256+y) ; LDR - AD Wandlung (10 bit, ADC 9)
;  f        Taster 1 (Bit 1 of f) / Taster 2 (Bit 2 of f)
;  in Vorbereitung
;  g,h      I2C Bus (a,b); Empfangen von I2C Bus Daten
;  Daten PC -> PIC
;  a = 13   PC -> PIC
;  b        8 fach Output 
;  e        Motor links (x) ; Geschwindigkeit in -100% bis +100% = Wert 0 - 255
;  f        Motor rechts (x) ; Geschwindigkeit in -100% bis +100% = Wert 0 - 255
;  in Vorbereitung
;  c        Servo 1 out(x) ; Einstellwert eines Servos in 0-100%
;  d        Servo 2 out(x) ; Einstellwert eines Servos in 0-100%
;  g,h      I2C Bus (a,b); Senden von I2C Bus Daten
; Wer eine Steuerung über Funk mag: 
; http://www.chip.de/news/c1_news_28160633.html -> Funk USB
 
Enumeration
  #Window_0
  #Text_Status
  #Text_DIGI_IN
  #Listview_INPUT
  #Text_LDR
  #Analog_LDR
  #Text_MIC
  #Analog_MIC
  #Text_OUT
  #Button_OUT1
  #Button_OUT2
  #Button_OUT3
  #Button_OUT4
  #Button_OUT5
  #Button_OUT6
  #Button_OUT7
  #Button_OUT8
  #Speed_Text
  #Speed_Left
  #Speed_Right
  #Speed_Vor
  #Speed_Links
  #Speed_Rechts
  #Speed_Zurueck
  #Speed_Tasten  
EndEnumeration
; Global
;{/ Globale Variablen
Global pVendorID.l, pProductID.l, DeviceHandle.l, ProductName.s
Global USB_HID.l,DIGITAL_OUT.b, Button_1.b, Button_2.b
Global Dim BufferIn.b( 8 ),Dim BufferOut.b( 8 )
#WM_APP = 32768
#WM_HID_EVENT = #WM_APP + 200
#NOTIFY_PLUGGED = 1
#NOTIFY_UNPLUGGED = 2
#NOTIFY_CHANGED = 3
#NOTIFY_READ = 4
#VendorID = 6017    ; Vendor ID "MPZ USB BUGGY"
#ProductID = 2001   ; ProductID "MPZ USB BUGGY"
ProductName.s = Space(256) 
#WM_CAP_START = #WM_USER 
#WM_CAP_SET_CALLBACK_ERROR = #WM_CAP_START + 2 
#WM_CAP_SET_CALLBACK_STATUS = #WM_CAP_START + 3 
#WM_CAP_SET_CALLBACK_YIELD = #WM_CAP_START + 4 
#WM_CAP_SET_CALLBACK_FRAME = #WM_CAP_START + 5 
#WM_CAP_SET_CALLBACK_VIDEOSTREAM = #WM_CAP_START + 6 
#WM_CAP_SET_CALLBACK_WAVESTREAM = #WM_CAP_START + 7 
#WM_CAP_DRIVER_CONNECT = #WM_USER + 10 
#WM_CAP_DRIVER_DISCONNECT = #WM_USER + 11 
#WM_CAP_DRIVER_GET_CAPS = #WM_CAP_START + 14 
#WM_CAP_DLG_VIDEOFORMAT = #WM_CAP_START + 41 
#WM_CAP_DLG_VIDEOSOURCE = #WM_CAP_START + 42 
#WM_CAP_DLG_VIDEODISPLAY = #WM_CAP_START + 43 
#WM_CAP_SET_PREVIEW = #WM_CAP_START + 50 
#WM_CAP_SET_PREVIEWRATE = #WM_CAP_START + 52 
#WM_CAP_GET_STATUS = #WM_CAP_START + 54 
#WM_CAP_FILE_SAVEDIB = #WM_USER + 25 
#WM_CAP_SET_SCALE = #WM_USER + 53 
#WM_CAP_SET_CALLBACK_CAPCONTROL = #WM_CAP_START + 85 
#TrackBar_Resolution = 12
;}
Procedure Open_Window_0()
  hWnd = OpenWindow(#Window_0, 310, 185, 391, 472, "MPZ USB BUGGY Interface mit Webcam",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
  If hWnd
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_Status, 135, 10, 120, 20, "No Device", #PB_Text_Center | #PB_Text_Border)
      TextGadget(#Text_DIGI_IN, 30, 40, 330, 12, "DIGITAL IN 1 - IN 2 / TIME", #PB_Text_Center)
      ListViewGadget(#Listview_INPUT, 30, 56, 330, 50)
      TextGadget(#Text_LDR, 30, 110, 330, 12, "LDR INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_LDR, 30, 130, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_MIC, 30, 153, 330, 12, "MIC INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_MIC, 30, 170, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_OUT, 20, 200, 350, 20, "DIGITAL OUT 1 - OUT8", #PB_Text_Center)
      ButtonGadget(#Button_OUT1, 20, 220, 40, 30, "OUT 1", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT2, 65, 220, 40, 30, "OUT 2", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT3, 110, 220, 40, 30, "OUT 3", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT4, 155, 220, 40, 30, "OUT 4", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT5, 200, 220, 40, 30, "OUT 5", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT6, 245, 220, 40, 30, "OUT 6", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT7, 290, 220, 40, 30, "OUT 7", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT8, 335, 220, 40, 30, "OUT 8", #PB_Button_Default | #PB_Button_Toggle)
      TextGadget    (#Speed_Text, 15, 260, 250, 30, "Motor Speed"+Chr(13)+"Left      Right", 0)
      TrackBarGadget(#Speed_Left, 15, 290, 20, 170, 0, #TrackBar_Resolution, #PB_TrackBar_Vertical|#PB_TrackBar_Ticks)
      SetGadgetState(#Speed_Left, #TrackBar_Resolution / 2)
      TrackBarGadget(#Speed_Right, 55, 290, 20, 170, 0, #TrackBar_Resolution, #PB_TrackBar_Vertical|#PB_TrackBar_Ticks)
      SetGadgetState(#Speed_Right, #TrackBar_Resolution / 2)
      TextGadget    (#Speed_Tasten, 305, 260, 250, 80, "Tastenbelegung"+Chr(13)+Chr(13)+"Vorwärts:    W"+Chr(13)+"Rückwärts: S"+Chr(13)+"Links:          A"+Chr(13)+"Rechts:       D", 0)
  
      
     EndIf
     If OpenLibrary(0, "AVICAP32.DLL") 
          hWebcam = CallFunction(0, "capCreateCaptureWindowA", "", #WS_VISIBLE + #WS_CHILD, 95, 260, 200, 200, hwnd, 0) 
          SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT , 0 , 0) 
          SendMessage_(hWebcam, #WM_CAP_SET_SCALE , 1 , 0) 
          SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE , 1 , 0) 
          SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 1 , 0) 
          SendMessage_(hwebcam, #WM_CAP_FILE_SAVEDIB , 1 , 0) 
     EndIf     
     ProcedureReturn 1
  EndIf
EndProcedure
;{/ DLL LIB
Prototype  hidConnect (pHostWin.l); As Boolean
Prototype  hidDisconnect (); As Boolean
Prototype  hidRead (pHandle.l, pData.b); As Boolean
Prototype  hidWrite (pHandle.l, pData.b); As Boolean
Prototype  hidReadEx (pVendorID.l, pProductID.l, pData.b); As Boolean
Prototype  hidWriteEx (pVendorID.l, pProductID.l, ByRef.b); As Boolean
Prototype  hidGetVendorName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetProductName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetSerialNumber (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetVendorID (pHandle.l); As Long
Prototype  hidGetProductID (pHandle.l); As Long
Prototype  hidGetVersion (pHandle.l); As Long
Prototype  hidGetInputReportLength (pHandle.l); As Long
Prototype  hidGetOutputReportLength (pHandle.l); As Long
Prototype  hidGetHandle (pVendoID.l, pProductID.l); As Long
Prototype  hidGetItem (pIndex.l); As Long
Prototype  hidGetItemCount (); As Long
Prototype  hidSetReadNotify (pHandle.l, pValue.b);
Prototype  hidIsReadNotifyEnabled (pHandle.l); As Boolean
Prototype  hidIsAvailable (pVendorID.l, pProductID.l);  As Boolean
Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll") 
If mcHID_DLL 
    Global hidConnect.hidConnect = GetFunction(mcHID_dll,"Connect") ; (ByVal pHostWin As Long) As Boolean
    Global hidDisconnect.hidDisconnect = GetFunction(mcHID_dll,"Disconnect");  () As Boolean
    Global hidRead.hidRead = GetFunction(mcHID_dll,"Read");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidWrite.hidWrite = GetFunction(mcHID_dll,"Write");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidReadEx.hidReadEx = GetFunction(mcHID_dll,"ReadEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidWriteEx.hidWriteEx = GetFunction(mcHID_dll,"WriteEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidGetVendorName.hidGetVendorName = GetFunction(mcHID_dll,"GetVendorName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetProductName.hidGetProductName = GetFunction(mcHID_dll,"GetProductName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetSerialNumber.hidGetSerialNumber = GetFunction(mcHID_dll,"GetSerialNumber");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetVendorID.hidGetVendorID = GetFunction(mcHID_dll,"GetVendorID");  (ByVal pHandle As Long) As Long
    Global hidGetProductid.hidGetProductid = GetFunction(mcHID_dll,"GetProductID");  (ByVal pHandle As Long) As Long
    Global hidGetVersion.hidGetVersion = GetFunction(mcHID_dll,"GetVersion"); (ByVal pHandle As Long) As Long
    Global hidGetInputReportLength.hidGetInputReportLength = GetFunction(mcHID_dll,"GetInputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetOutputReportLength.hidGetOutputReportLength = GetFunction(mcHID_dll,"GetOutputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetHandle.hidGetHandle = GetFunction(mcHID_dll,"GetHandle");  (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
    Global hidGetItem.hidGetItem = GetFunction(mcHID_dll,"GetItem");  (ByVal pIndex As Long) As Long
    Global hidGetItemCount.hidGetItemCount = GetFunction(mcHID_dll,"GetItemCount");  (ByVal pIndex As Long) As Long
    Global hidSetReadNotify.hidSetReadNotify = GetFunction(mcHID_dll,"SetReadNotify"); ByVal pHandle As Long, ByVal pValue As Boolean)
    Global hidIsReadNotifyEnabled.hidIsReadNotifyEnabled = GetFunction(mcHID_dll,"IsReadNotifyEnabled");  (ByVal pHandle As Long) As Boolean
    Global hidIsAvailable.hidIsAvailable = GetFunction(mcHID_dll,"IsAvailable"); (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
Else
    MessageRequester("Fehlermeldung", "Das Programm konnte die mcHID.dll Datei nicht öffnen", #PB_MessageRequester_Ok)
    End
EndIf 
;}
ProcedureDLL mcHID_Free(); DLL FREE
  If mcHID_DLL
    CloseLibrary(#PB_Any)
  EndIf
  XLTable_DLL = 0
EndProcedure
;- Window Callback 
Procedure WinProc(hWnd,Msg,wParam,lParam) 
 result = #PB_ProcessPureBasicEvents 
 
 If Msg = #WM_HID_EVENT 
       
       Select wParam
           ; HID device has been plugged message...
        Case #NOTIFY_PLUGGED
           ;HID device has been plugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If DeviceHandle
              hidGetProductName (DeviceHandle.l,ProductName,256) 
              SetGadgetText(#Text_Status, ProductName)   
              ; Reset für PIC eingefügt
              BufferOut(0) = 0
              BufferOut(1) = 1
              hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
            
           EndIf
        Case #NOTIFY_UNPLUGGED
           ;HID device has unplugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If Not DeviceHandle
              SetGadgetText(#Text_Status, "No Device")
           EndIf
        Case #NOTIFY_CHANGED
           ;HID device has been changed
           If DeviceHandle 
              hidSetReadNotify (DeviceHandle, #True) ;read event...
           EndIf
          ;DeviceHandle = hidGetHandle(#VendorID, #ProductID)
          ;hidSetReadNotify (DeviceHandle, #True) ! IMPORTANT ! Read works only With this flag
        Case #NOTIFY_READ
           ; READ works only if the hidSetReadNotify flag is set 
           If hidRead(DeviceHandle, @BufferIn(0))
              ;AddGadgetItem(#Listview_INPUT,0, "Read: "+Str(BufferIn(0)) +"/"+ Str(BufferIn(1))+"/"+Str(BufferIn(2))+"/"+Str(BufferIn(3))+"/"+Str(BufferIn(4))+"/"+Str(BufferIn(5))+"/"+Str(BufferIn(6))+"/"+Str(BufferIn(7))+"/"+Str(BufferIn(8)))
              If BufferIn(1) = 1 ; Taster 1
                 If BufferIn(6) & %01 = 1   
                    If Button_1 = 0 
                        AddGadgetItem(#Listview_INPUT,0, "Button 1 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_1 = 1
                    EndIf
                 Else
                    Button_1 = 0     
                 EndIf                    
                 If BufferIn(6) & %10 = 2 ; Taster 2
                    If Button_2 = 0 
                       AddGadgetItem(#Listview_INPUT,0, "Button 2 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_2 = 1
                    EndIf
                 Else
                    Button_2 = 0     
                 EndIf
                  
                 AD_Wert = BufferIn(2)*256 ; LDR IN
                 If BufferIn(3) > 0 
                    AD_Wert = AD_Wert + BufferIn(3)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(3)
                 EndIf
                 SetGadgetState   (#Analog_LDR,1024-AD_Wert)
                 AD_Wert = BufferIn(4)*256 ; MIC IN
                 If BufferIn(5) > 0 
                    AD_Wert = AD_Wert + BufferIn(5)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(5)
                 EndIf
                 SetGadgetState   (#Analog_MIC,AD_Wert)
              EndIf  
           Else 
              AddGadgetItem(#Listview_INPUT,0, "Read Error!")
           EndIf
        EndSelect
   
   EndIf
  
  ProcedureReturn result 
EndProcedure 
;{ Mainunit
If Open_Window_0()
hidconnect (WindowID(#Window_0))
SetWindowCallback(@WinProc())
  BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
  BufferOut(2) = 0
  BufferOut(5) = 127 
  BufferOut(6
  ) = 127 
  hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_W, #Speed_Vor)
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_A, #Speed_Links)
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_D, #Speed_Rechts)
  AddKeyboardShortcut(#Window_0, #PB_Shortcut_S, #Speed_Zurueck)
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
  
    Case #PB_Event_Gadget ; Or #PB_Event_Menu 
     
      Select EventGadget() ;Or EventMenu()
          
      Case #Button_OUT1 ; Erweiterungsport Bit 1
          If GetGadgetState(#Button_OUT1)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000001
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111110
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
      Case #Button_OUT2 ; Erweiterungsport Bit 2
          If GetGadgetState(#Button_OUT2)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000010
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111101
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT3 ; Erweiterungsport Bit 3
          If GetGadgetState(#Button_OUT3)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000100
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111011
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT4 ; Erweiterungsport Bit 4
          If GetGadgetState(#Button_OUT4)
             DIGITAL_OUTD = DIGITAL_OUTD | %00001000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11110111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out
      Case #Button_OUT5 ; Erweiterungsport Bit 5
          If GetGadgetState(#Button_OUT5)
             DIGITAL_OUTD = DIGITAL_OUTD | %00010000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11101111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT6 ; Erweiterungsport Bit 6
          If GetGadgetState(#Button_OUT6)
             DIGITAL_OUTD = DIGITAL_OUTD | %00100000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11011111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT7 ; Erweiterungsport Bit 7
          If GetGadgetState(#Button_OUT7)
             DIGITAL_OUTD = DIGITAL_OUTD | %01000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %10111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT8 ; Erweiterungsport Bit 8
          If GetGadgetState(#Button_OUT8)
             DIGITAL_OUTD = DIGITAL_OUTD | %10000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %01111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Speed_Left
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(6) = 127 * (#TrackBar_Resolution - GetGadgetState(#Speed_Left)) / #TrackBar_Resolution / 2
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Speed_Right
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 127 * (#TrackBar_Resolution - GetGadgetState(#Speed_Right)) / #TrackBar_Resolution / 2
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
    EndSelect
    
    Case #PB_Event_Menu 
      Select EventMenu()
      Case #Speed_Vor
          SetGadgetState(#Speed_Left, #TrackBar_Resolution)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 0
          BufferOut(6) = 0
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
          Delay (100)
          SetGadgetState(#Speed_Left, #TrackBar_Resolution / 2)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution / 2)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 127
          BufferOut(6) = 127
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Speed_Links
          SetGadgetState(#Speed_Left, 0)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 0
          BufferOut(6) = 255
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
          Delay (100)
          SetGadgetState(#Speed_Left, #TrackBar_Resolution / 2)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution / 2)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 127
          BufferOut(6) = 127
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Speed_Rechts
          SetGadgetState(#Speed_Left, #TrackBar_Resolution)
          SetGadgetState(#Speed_Right, 0)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 255
          BufferOut(6) = 0
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
          Delay (100)
          SetGadgetState(#Speed_Left, #TrackBar_Resolution / 2)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution / 2)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 127
          BufferOut(6) = 127
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Speed_Zurueck
          SetGadgetState(#Speed_Left, 0)
          SetGadgetState(#Speed_Right, 0)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 255
          BufferOut(6) = 255
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät            
          Delay (100)
          SetGadgetState(#Speed_Left, #TrackBar_Resolution / 2)
          SetGadgetState(#Speed_Right, #TrackBar_Resolution / 2)
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          BufferOut(5) = 127
          BufferOut(6) = 127
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
    EndSelect
  EndSelect
  
Until EventID = #PB_Event_CloseWindow
  SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 0, 0) 
  SendMessage_(hWebcam, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
  CloseWindow(0) 
  CloseLibrary(0) 
  hidDisconnect ()
  mcHID_Free()
EndIf
End
;}
;
Code: Alles auswählen
;Buggy_Fahren.HEX File wird erstellt
;-----------------------------
If CreateFile(1, "Buggy_Fahren.HEX" )
    Restore StringData
    Repeat
    Read Daten.s
        If Daten.s = "End" : Break : EndIf
        WriteStringN(1,Daten.s)
    ForEver
    CloseFile (1)
EndIf
DataSection
  StringData:
  Data.s ":020000040000FA"
  Data.s ":10080000E9EF0AF0FFFFFFFFFFFFFFFFFFFFFFFF2A"
  Data.s ":10081000E9CF01F0EACF02F0E1CF03F0E2CF04F03C"
  Data.s ":10082000D9CF05F0DACF06F0D4EC08F001C0E9FF2B"
  Data.s ":1008300002C0EAFF03C0E1FF04C0E2FF05C0D9FF28"
  Data.s ":1008400006C0DAFF110004010401376B1E0E716E41"
  Data.s ":100850000401400E096F5B0E0A6F040E0B6F880EC9"
  Data.s ":10086000086F9B0E0E6F040E0F6F0D6B400E0C6F1A"
  Data.s ":100870001200040104012A6B14EE9BF024EE18F020"
  Data.s ":10088000080E2A5D04E2E6CFDEFF2A2BF9D7080E18"
  Data.s ":100890003E6F3F6B1200040104012A6B14EE20F03E"
  Data.s ":1008A00024EE18F0020E2A5D04E2E6CFDEFF2A2BCA"
  Data.s ":1008B000F9D7020E3E6F3F6B12000401800E040157"
  Data.s ":1008C00010634FD0135103082FE0135102080EE0BC"
  Data.s ":1008D0001351010801E044D0010E396F960E3A6FB2"
  Data.s ":1008E000170E3B6F120E3E6F3F6B3AD0010E396F01"
  Data.s ":1008F000450EE16E040EE26E1245E126000EE22284"
  Data.s ":10090000E6CF3AF4E7CF3BF4F86AF76A040E3A25EB"
  Data.s ":10091000F66E3B51F7220900F5CF3EF409000A00BC"
  Data.s ":10092000F5CF3FF40A001CD0010E396F020E12659C"
  Data.s ":1009300002D0030E126F490EE16E040EE26E1245F4"
  Data.s ":10094000E126000EE222E6CF3AF4E7CF3BF43AC4C8"
  Data.s ":10095000F6FF3BC4F7FF0800F5503E6F3F6B00D039"
  Data.s ":10096000348312000401010E0401396F716A726A46"
  Data.s ":10097000736A746A756A766A776A786A796A7A6A73"
  Data.s ":100980007B6A7C6A7D6A7E6A7F6A326B336B12C4D3"
  Data.s ":1009900031F4125103E1050E306F04D0060E306FB2"
  Data.s ":1009A00023EC04F0120004010401186B196B1051C0"
  Data.s ":1009B0001F0B020814E010511F0B01080CE010512E"
  Data.s ":1009C0001F0B000801E02CD0010E0401396F34A187"
  Data.s ":1009D00001D0188325D0010E0401396F21D0010EFA"
  Data.s ":1009E0000401396F14510F0B0800F350296B000FED"
  Data.s ":1009F000286F040E29231451800B01E0010E04001E"
  Data.s ":100A0000F35028253C6F000E29213D6F3CC4E1FFC7"
  Data.s ":100A10003DC4E2FFE750040B02E0010E186F00D066"
  Data.s ":100A2000010E0401396309E1180E3A6F040E3B6FA1"
  Data.s ":100A30003493020E3E6F3F6B00D012000401010E92"
  Data.s ":100A40000401125D0CE110511F0B000808E1010EBA"
  Data.s ":100A5000396F030E115D02E1348101D03491000E33"
  Data.s ":100A60000401125D37E110511F0B020833E11451EC"
  Data.s ":100A70000F0B00082FE0010E396F14510F0B080007"
  Data.s ":100A8000F350296B000F286F040E29231451800B9B"
  Data.s ":100A900001E0010E0400F35028253C6F000E2921CF"
  Data.s ":100AA0003D6F030E115D07E1840E3CC4E1FF3DC4C0"
  Data.s ":100AB000E2FFE76E0FD014AF07D0000E3CC4E1FF99"
  Data.s ":100AC0003DC4E2FFE76E06D0880E3CC4E1FF3DC4A2"
  Data.s ":100AD000E2FFE76E12000401010E0401135D04E061"
  Data.s ":100AE000030E135D10E01AD0000E0401125D04E045"
  Data.s ":100AF000010E125D07E012D0020E0401396F39ECCD"
  Data.s ":100B000004F00CD00BD0000E0401125D01E006D001"
  Data.s ":100B1000020E0401396F4BEC04F000D0180E0401F2"
  Data.s ":100B20003A6F040E3B6F349312000401020E04016D"
  Data.s ":100B3000135D04E0030E135D0EE01AD0000E0401F5"
  Data.s ":100B4000125D01E015D0020E0401396F5B0E3C6F9F"
  Data.s ":100B5000040E3D6F0DD0000E0401125D01E008D0BF"
  Data.s ":100B6000020E0401396F200E3C6F040E3D6F00D061"
  Data.s ":100B700012000401080E04013E5D000E3F5905E21B"
  Data.s ":100B80003EC440F43FC441F404D0080E406F000E50"
  Data.s ":100B9000416F049304914151030B041340C405F4C5"
  Data.s ":100BA00040513E5F41513F5B180E3C6F040E3D6F5C"
  Data.s ":100BB00034A31AD03AC4F6FF3BC4F7FFF86A3CC42A"
  Data.s ":100BC000E1FF3DC4E2FF04014051411105E1F6CFD0"
  Data.s ":100BD0003AF4F7CF3BF41FD00900F5CFE6FF090048"
  Data.s ":100BE000400701E24107EFD73AC4E1FF3BC4E2FF0F"
  Data.s ":100BF0003CC4D9FF3DC4DAFF04014051411105E175"
  Data.s ":100C0000E1CF3AF4E2CF3BF406D0E6CFDEFF400777"
  Data.s ":100C100001E24107F1D71200040104011051600BF9"
  Data.s ":100C2000E842E842E842E842E84200085CE111514B"
  Data.s ":100C30000C0858E01151070855E011510B0846E027"
  Data.s ":100C400011510A0834E0115103082EE01151010836"
  Data.s ":100C50002BE01151000825E01151080816E0115150"
  Data.s ":100C6000090810E0115106080AE01151050801E0D9"
  Data.s ":100C70003AD0010E0401396F040E306F34D05DECB0"
  Data.s ":100C800004F031D0B2EC04F02ED0010E0401396F23"
  Data.s ":100C9000310E3A6F040E3A6F3493010E3E6F3F6B84"
  Data.s ":100CA00022D0D3EC04F01FD01EEC05F01CD0010EB6"
  Data.s ":100CB0000401396F14513A6F3B6B320E3A27040E20"
  Data.s ":100CC0003B233493010E3E6F3F6B0DD0010E0401A8"
  Data.s ":100CD000396FE26A320E1425E16E040EE22212C46C"
  Data.s ":100CE000E7FF01D000D004011200040104011051FB"
  Data.s ":100CF0001F0B010878E11451000875E11151060835"
  Data.s ":100D000001E02AD01351210807E01351220812E014"
  Data.s ":100D1000135123081DE01DD0020E0401396F010E8E"
  Data.s ":100D2000316304D0DE0E3A6F170E3B6F090E3E6F33"
  Data.s ":100D30003F6B0FD0020E0401396F010E316307D0F3"
  Data.s ":100D40000C0E3A6F180E3B6F2F0E3E6F3F6B01D0AB"
  Data.s ":100D500000D00401348300D004011051600BE8423C"
  Data.s ":100D6000E842E842E842E84201083DE111510B083F"
  Data.s ":100D700034E01151030825E011510A081CE011511B"
  Data.s ":100D800002080DE01151090807E01151010801E0C6"
  Data.s ":100D90002AD06BEC05F027D095EC05F024D0020E9C"
  Data.s ":100DA0000401396F350E3A6F040E3B6F3493010E18"
  Data.s ":100DB0003E6F3F6B18D0020E0401396F1351356F2F"
  Data.s ":100DC00012D0020E0401396F360E3A6F040E3B6FDB"
  Data.s ":100DD0003493010E3E6F3F6B06D0020E0401396F53"
  Data.s ":100DE0001251366F00D0040112000401000E0401FC"
  Data.s ":100DF00039630AD0080E016F100E026F040E036FE4"
  Data.s ":100E0000840E006F046F30D0040110AF1ED00401B7"
  Data.s ":100E10003E51165D3F51175904E216C43EF417C403"
  Data.s ":100E20003FF4B9EC05F0010E0401386F080E016FB4"
  Data.s ":100E3000100E026F040E036F800E006F180E066F07"
  Data.s ":100E4000040E076FC80E046F0FD0020E0401386F36"
  Data.s ":100E5000056BC80E046F080E016F180E026F040EAA"
  Data.s ":100E6000036FC80E006F00D06D9800D0120004010F"
  Data.s ":100E7000030E04010015436F01C442F442513E27A2"
  Data.s ":100E800043513F23180E3A6F040E3B6F3AC4E1FF03"
  Data.s ":100E90003BC4E2FF3CC4D9FF3DC4DAFF0401425128"
  Data.s ":100EA000431105E1E1CF3AF4E2CF3BF406D0E6CFBF"
  Data.s ":100EB000DEFF420701E24307F1D712000401020EF0"
  Data.s ":100EC0000401135D04E0030E135D17E020D0000E53"
  Data.s ":100ED0000401125D01E01BD004012A6B14EE5BF0EB"
  Data.s ":100EE00024EE9BF0080E2A5D04E2E6CFDEFF2A2BFB"
  Data.s ":100EF000F9D7080E3E6F3F6B0AD0000E0401125D59"
  Data.s ":100F000001E005D0020E04013E6F3F6B00D01200DD"
  Data.s ":100F10000401000E0401386F080E016F100E026FFD"
  Data.s ":100F2000040E036F880E006F000E046F12000401A0"
  Data.s ":100F3000000E0401386F000E396F3E6B3F6B0CECF6"
  Data.s ":100F400006F0000E0401396302D075EC06F0F5ECF2"
  Data.s ":100F500006F012000401020E0401386311D037ECD0"
  Data.s ":100F600007F0020E0401396302D05EEC07F00401C1"
  Data.s ":100F700000BD03D0C80E006F02D0880E006F03D0F2"
  Data.s ":100F800088EC07F000D012000401040E0401306365"
  Data.s ":100F900009D012C46EFF6E5003E0050E306F02D010"
  Data.s ":100FA000030E306F010E040138630BD0B9EC05F06D"
  Data.s ":100FB000040104BD03D0C80E046F02D0880E046F74"
  Data.s ":100FC00003D088EC07F000D0120004010401376B55"
  Data.s ":100FD00008BF1BD009512C6502D009C42CF4376B13"
  Data.s ":100FE00014EE5BF02DC4D9FF2EC4DAFF2C51375D0F"
  Data.s ":100FF00004E2E6CFDEFF372BF9D7400E096F400E33"
  Data.s ":101000000817087D880E081300D00401375112001C"
  Data.s ":1010100004016D9269946894120004016A6A686A16"
  Data.s ":101020009F0E6B6E3B0E696E6E6A716A726A736AAE"
  Data.s ":10103000746A756A766A776A786A796A7A6A7B6AA4"
  Data.s ":101040007C6A7D6A7E6A7F6A160E706E68A602D020"
  Data.s ":101050006896FCD76D9888EC07F004013491316BE9"
  Data.s ":10106000030E306F12000401698468986D821200CB"
  Data.s ":101070000401689C1200040170A003D088EC07F002"
  Data.s ":101080007090689A120004016892120004017C0EAC"
  Data.s ":101090006C1404012F6F000E2F6301D005D0040ED5"
  Data.s ":1010A0002F6301D00ED010D0040100513C0BE84258"
  Data.s ":1010B000E8420D0803E197EC07F002D0AAEC07F034"
  Data.s ":1010C00003D0C4EC07F000D0120004017C0E6C14B5"
  Data.s ":1010D00004012F6F080E2F6301D005D00C0E2F6373"
  Data.s ":1010E00001D00DD00DD057C42DF458C42EF4080EE5"
  Data.s ":1010F00004012C6FE5EC07F00401446F01D000D02F"
  Data.s ":101100001200E9CF51F4EACF52F4E1CF53F4E2CF29"
  Data.s ":1011100054F4D9CF55F4DACF56F40401000E04018B"
  Data.s ":10112000306301D034D069A404D068A402D008ECA4"
  Data.s ":1011300008F06DB22CD069A004D068A002D00DECEC"
  Data.s ":1011400008F069A804D068A802D033EC08F069ACB4"
  Data.s ":1011500004D068AC02D038EC08F069AA04D068AAC0"
  Data.s ":1011600002D03BEC08F069A204D068A202D043ECA4"
  Data.s ":1011700008F0030E0401306101D009D069A607D040"
  Data.s ":1011800068A605D046EC08F065EC08F0689656C4F1"
  Data.s ":10119000DAFF55C4D9FF54C4E2FF53C4E1FF52C47F"
  Data.s ":1011A000EAFF51C4E9FF1200A0AA05D0A1AA03D00A"
  Data.s ":1011B00081EC08F0A19A12003F0E566EFF0E556E9C"
  Data.s ":1011C000562E01D003D0552EFED7FAD72B0E556ED2"
  Data.s ":1011D000552EFED70000000012002B0E556E552E26"
  Data.s ":1011E000FED70000000012001F0E576EFF0E566E55"
  Data.s ":1011F000FF0E556E572E01D007D0562E01D003D0CA"
  Data.s ":10120000552EFED7FAD7F6D7980E566EFF0E556EAE"
  Data.s ":10121000562E01D003D0552EFED7FAD79D0E556E0F"
  Data.s ":10122000552EFED700000000120004016DB612001A"
  Data.s ":10123000140E6F6E000E0401306F346B316B6D6AEB"
  Data.s ":10124000696A6D86010E306FDCEC08F06DBA06D06D"
  Data.s ":10125000686A696A69806988020E0401306F120049"
  Data.s ":101260001200C26A070EC012C08E26C04BF04B3669"
  Data.s ":101270004B904B364B904B50C212C280EDEC08F0B5"
  Data.s ":10128000C2824D6AC2B24D2A4D50010A02E10000ED"
  Data.s ":10129000F8D7C4CF4DF0000E4E6E4DC04EF04D6AE3"
  Data.s ":1012A0004DC027F04EC028F0C3504D10276E4EC0E1"
  Data.s ":1012B00028F0000E2812C29027C04BF028C04CF036"
  Data.s ":1012C0001200040104010CBFFED7400E2C6502D0B1"
  Data.s ":1012D000400E2C6F2A6B2DC4E1FF2EC4E2FF24EEDA"
  Data.s ":1012E0009BF02C512A5D04E2E6CFDEFF2A2BF9D7D2"
  Data.s ":1012F00004012CC40DF4400E0C170C7D880E0C1349"
  Data.s ":1013000012000001566A556A546A4B504F02F4CFDE"
  Data.s ":1013100054F0F3CF53F04C505002F4CF56F0F3CFCB"
  Data.s ":1013200055F04B505002F3505426F4505522E86AC1"
  Data.s ":1013300056224C504F02F3505426F4505522E86A7E"
  Data.s ":10134000562253C04BF054C04CF055C04DF056C01F"
  Data.s ":101350004EF0120004016DA612006D6A696A000E5B"
  Data.s ":101360000401306F1200F26AF50EF16EC00EF06EDD"
  Data.s ":10137000D09E9D6AA06A9E6AA16A0F0EC112FF0EDE"
  Data.s ":10138000926EFF0E936EFF0E946E956A070E966E28"
  Data.s ":10139000896A8A6A8B6A8C6A8D6A120004EE00F090"
  Data.s ":1013A000050EEE6AEA62FDD7F4EC08F00401BA0E0D"
  Data.s ":1013B0000401456F170E466FBA0E476F170E486F40"
  Data.s ":1013C0006A0E496F180E4A6F720E4B6F180E4C6FF3"
  Data.s ":1013D000960E4D6F180E4E6FCE0E4F6F180E506F4B"
  Data.s ":1013E00022C057F423C058F424C059F425C05AF43D"
  Data.s ":1013F00015EC09F0A19AA08AF28CF28E1200949456"
  Data.s ":10140000CA840C0EBD1212009492CA840C0EBA1239"
  Data.s ":1014100012009386090E266E31EC09F04BC022F0C3"
  Data.s ":101420004CC023F022C04BF023C04CF01200938438"
  Data.s ":10143000080E266E31EC09F04BC022F04CC023F0B0"
  Data.s ":1014400022C04BF023C04CF012004C6A04010CBFC8"
  Data.s ":101450004C2A4C50000A02E0256A0CD0A09A22C007"
  Data.s ":101460002DF423C02EF424C02CF461EC09F0A08AE2"
  Data.s ":10147000010E256E25C04BF01200226AA09A0401CD"
  Data.s ":10148000060E0401306101D008D06DB206D044537D"
  Data.s ":1014900004E044C44BF0446B04D04B6A0401446B39"
  Data.s ":1014A00000D0A08A120022C04BF01200CBCF4BF02C"
  Data.s ":1014B000000E4C6E010E4B244F6E000E4C20506EF1"
  Data.s ":1014C00022C04BF0000E4C6E81EC09F0060E4D6E02"
  Data.s ":1014D0004BC053F04CC054F04D5005E054325332E1"
  Data.s ":1014E000549EFF0FFAD753C04BF054C04CF04B360C"
  Data.s ":1014F0004B904C364B364B904C364B364B904C36D3"
  Data.s ":101500004B364B904C36300E4B14516E4CC052F053"
  Data.s ":10151000000E521653C04BF054C04CF04C324B32BC"
  Data.s ":101520004C9E4C324B324C9E4BC0BEFF0F0EBD1634"
  Data.s ":101530005150BD121200CBCF4BF0000E4C6E010E7D"
  Data.s ":101540004B244F6E000E4C20506E22C04BF0000E0C"
  Data.s ":101550004C6E81EC09F0060E4D6E4BC053F04CC042"
  Data.s ":1015600054F04D5005E054325332549EFF0FFAD7D9"
  Data.s ":1015700053C04BF054C04CF04B364B904C364B366E"
  Data.s ":101580004B904C364B364B904C364B364B904C3642"
  Data.s ":10159000300E4B14516E4CC052F0000E521653C018"
  Data.s ":1015A0004BF054C04CF04C324B324C9E4C324B32D0"
  Data.s ":1015B0004C9E4BC0BBFF0F0EBA165150BA12120010"
  Data.s ":1015C000AAEC09F0A19AA09A1200BE6ABD98BD9A31"
  Data.s ":1015D0001200B3EC09F0070E226E000E236E0F0E00"
  Data.s ":1015E000246E000E256ECEEC09F0CA80CA824A0E27"
  Data.s ":1015F000CB6EE5EC0AF0FFEC09F004EC0AF0010E0A"
  Data.s ":101600000F6E09EC0AF04BC017F04CC018F04CC03C"
  Data.s ":101610004FF0506A4FC010F04BC011F017EC0AF0B9"
  Data.s ":101620004BC019F04CC01AF04CC04FF0506A4FC07C"
  Data.s ":1016300012F04BC013F04F6A81B84F2A4F50010A85"
  Data.s ":1016400002E1148002D0020E14164F6A81BA4F2AAA"
  Data.s ":101650004F50010A02E1148202D0010E14160F0E3F"
  Data.s ":10166000226E000E236E080E246E25EC0AF03DEC6F"
  Data.s ":101670000AF04BC000F01B6A00501B5CD8B089D048"
  Data.s ":1016800007C01CF008C01DF00BC01EF00CC01FF0FE"
  Data.s ":1016900007500D0AD8A47BD0010E1D144B6E4B527F"
  Data.s ":1016A00003E0838055EF0BF08390020E1D144F6E04"
  Data.s ":1016B0004F50020A03E183825FEF0BF08392040E26"
  Data.s ":1016C0001D144F6E4F50040A03E1838469EF0BF041"
  Data.s ":1016D0008394080E1D144F6E4F50080A03E1838651"
  Data.s ":1016E00073EF0BF08396100E1D144F6E4F50100ABF"
  Data.s ":1016F00003E183887DEF0BF08398200E1D144F6E5D"
  Data.s ":101700004F50200A03E1838A87EF0BF0839A400E43"
  Data.s ":101710001D144F6E4F50400A03E1838C91EF0BF084"
  Data.s ":10172000839C800E1D144F6E4F50800A03E1838E00"
  Data.s ":101730009BEF0BF0839EFC0E9616800E1E144F6ED0"
  Data.s ":101740004F50800A08E184921EC022F02236229077"
  Data.s ":1017500056EC0AF007D084821EC022F02236229076"
  Data.s ":1017600056EC0AF0800E1F144F6E4F50800A08E1AD"
  Data.s ":1017700084901FC022F0223622909BEC0AF007D002"
  Data.s ":1017800084801FC022F0223622909BEC0AF01B2A94"
  Data.s ":1017900073D735D7FFD71200010000000200000008"
  Data.s ":1017A00000000000080081001700D10007000100C0"
  Data.s ":1017B00000000100020000000100090002002900F1"
  Data.s ":1017C0000000010001000000A00032000900040038"
  Data.s ":1017D00000000000020003000000000000000900FB"
  Data.s ":1017E0002100010001000000010022002F00000084"
  Data.s ":1017F00007000500810003004000000014000700FE"
  Data.s ":101800000500010003004000000014000600A000D5"
  Data.s ":10181000FF0009000100A1000100090003001500FC"
  Data.s ":10182000000026000000FF00750008009500080079"
  Data.s ":1018300081000200090004001500000026000000DD"
  Data.s ":10184000FF007500080095000800910002000900E3"
  Data.s ":1018500005001500000026000000FF0075000800CC"
  Data.s ":1018600095000200B1000200C0000400030009005E"
  Data.s ":101870000400120003004D000000500000005A0058"
  Data.s ":10188000000020000000460000004100000043006E"
  Data.s ":101890000000540000001C0003004D000000500038"
  Data.s ":1018A00000005A0000002000000055000000530016"
  Data.s ":1018B000000042000000200000004200000055002F"
  Data.s ":1018C000000047000000470000005900000002002F"
  Data.s ":1018D0000300FFFFFFFFFFFFFFFFFFFFFFFFFFFF13"
  Data.s ":020000040030CA"
  Data.s ":0E000000E03EFFFEFFF99BFFFFFFFFBFFFFF8B"
  Data.s ":00000001FF"
  Data.s "End"