Home

Add

Edit

Without Linenumbers

Code in Textfield

Download

  1. '##################################################################################################################################
    
  2. #INCLUDE Once "fbgfx.bi"                            'Grafik-Bibliothek laden
    
  3. 
    
  4. 
    
  5. 
    
  6. '##################################################################################################################################
    
  7. Open Cons For Output As #1                          'Text-Konsole zur Ausgabe von Text öffnen
    
  8. 
    
  9. 
    
  10. 
    
  11. '##################################################################################################################################
    
  12. 'Funktion ist nur Zum Laden von BMP Bilder.
    
  13. Function BMPLoad(V_FilePathName As String, Byref R_Width As Integer = 0, Byref R_Height As Integer = 0) As Any Ptr
    
  14. Dim TFN As Integer = Freefile
    
  15. If Open(V_FilePathName For Binary Access Read As #TFN) <> 0 Then Return 0
    
  16. Get #TFN, 19, R_Width
    
  17. Get #TFN, 23, R_Height
    
  18. Close #TFN
    
  19. Dim TImg As Any Ptr = Imagecreate(R_Width, Abs(R_Height), , 32)
    
  20. If TImg = 0 Then Return 0
    
  21. If Bload(V_FilePathName, TImg) <> 0 Then Imagedestroy(TImg): Return 0
    
  22. Return TImg
    
  23. End Function
    
  24. 
    
  25. 
    
  26. 
    
  27. 
    
  28. '##################################################################################################################################
    
  29. Sub Main()
    
  30. Dim T_FBType As String = Command()                  'Über die kommandozeile einen Fernbedinungsnamen einlesen
    
  31. If Dir("fernbedienungen/" & T_FBType & ".txt") = "" Then                    'Prüfen, ob eine entsprechende Config-Datei vorhanden ist
    
  32.     Print "Fernbedienung nicht gefunden!"           'wenn nicht, dann fehler ausgeben und
    
  33.     End -1                                          'fehlerhaft beenden.
    
  34. End If
    
  35. Screenres 1, 1, 32, , FB.GFX_Null                   'ansonsten einen unsichtbaren screen zum laden der Fernbedinungsbilder erzeugen. (Sonst flimmerts kurz)
    
  36. Dim T_Img_Width As Integer                          'Variable für die Bildbreite
    
  37. Dim T_Img_Height As Integer                         'Variable für die Bildhöhe
    
  38. Dim T_Img_Bild As Any Ptr = BMPLoad("fernbedienungen/" & T_FBType & "_bild.bmp", T_Img_Width, T_Img_Height)     'Fernbedinungsbild laden, zusätzlich Größer ermitteln
    
  39. If T_Img_Bild = 0 Then                              'Wenn das Bild nicht geladen werden konnte, fehler ausgeben und ende
    
  40.     Print "Konnte Fernbedinungs-Bild nicht laden!"
    
  41.     End -1
    
  42. End If
    
  43. Dim T_Img_Mask As Any Ptr = BMPLoad("fernbedienungen/" & T_FBType & "_mask.bmp")                                'Fernbedinungsmaske laden
    
  44. If T_Img_Bild = 0 Then                              'Wenn das Bild nicht geladen werden konnte, fehler ausgeben und ende
    
  45.     Print "Konnte Fernbedinungs-Maske nicht laden!"
    
  46.     End -1
    
  47. End If
    
  48. If (T_Img_Width <= 0) Or (T_Img_Height <= 0) Then   'Wenn das Bild zu klein ist, dann fehler ausgeben und ende
    
  49.     Print "Bild-Dimensionen ungültig!"
    
  50.     End -1
    
  51. End If
    
  52. 
    
  53. Dim T_TastenMax As Uinteger                         'Variable für Maximale Anzahl an Tasten (für das array)
    
  54. For Y As Integer = 0 To T_Img_Height - 1            'Jede Zeile des Bildes durchgehen
    
  55.     For X As Integer = 0 To T_Img_Width - 1         'Jede Spalte des Bildes durchgehen
    
  56.         If (Point(X, Y, T_Img_Mask) And &H0000FFFF) > T_TastenMax Then          'Wenn die Tastennummer Größer als aktuell ist,
    
  57.             T_TastenMax = (Point(X, Y, T_Img_Mask) And &H0000FFFF)              'Dann neues Maximum setzen
    
  58.         End If
    
  59.     Next
    
  60. Next
    
  61. Dim T_TastenArray_Daten(1 To 8, 1 To T_TastenMax) As String     '8 gruppen Array mit der Größe an Tasten definieren
    
  62. 
    
  63. Dim TFN As Integer = Freefile()                     'Freie Dateinummer erfragen
    
  64. If Open("fernbedienungen/" & T_FBType & ".txt" For Input As #TFN) <> 0 Then     'Konfigurationsdatei öffnen. Wenn ungleich 0, dann fehler ausgeben
    
  65.     Print "Konnte Konfigurationsdatei nicht öffnen!"
    
  66.     End -1
    
  67. End If
    
  68. Dim T As String                                     'emporäre String Variable
    
  69. Dim T1 As String                                    'emporäre String Variable
    
  70. Dim TPos As Integer                                 'Variable für InString-Suche
    
  71. Dim TGruppe As Integer                              'Array-Gruppen Variable (TV, Radio, DVD, usw.) Maximal 8 mögliche gruppen
    
  72. Do Until Eof(TFN)                                   'Alle Zeilen der Datei durchlaufen, bis ende erreicht (EOF = End Of File)
    
  73.     Line Input #TFN, T                              'Nächste Zeile aus der Datei einesen
    
  74.     TPos = Instr(1, T, "=")                         'Suche das erste = in der eingelesenen Zeile
    
  75.     If TPos = 0 Then                                'Wenn keines gefunden wurde,
    
  76.         Continue Do                                 'dann zurück zum anfang der Do, und nächste zeile einlesen
    
  77.     End If
    
  78.     T1 = Left(T, TPos - 1)                          'Text vom Anfang bis zur gefundenen Position ausschneiden und zwischenspeichern
    
  79.     TGruppe = Cint(Ucase(Left(T, 1)) - 64)          'A-Z in Zahlen von 1-... umwandeln
    
  80.     If TGruppe > 8 Then                             'Wenn Gruppennummer größer als 8 ist, dann weiter
    
  81.         Continue Do
    
  82.     End If
    
  83.     If (Cint(T1) <= 0) Or (Cint(T1) > T_TastenMax) Then                         'Wenn die Hinterlegte Tastennummer zu klein, oder zu groß ist,
    
  84.         Continue Do                                 'dann weiter zur nächsten Zeile
    
  85.     End If
    
  86.     T_TastenArray_Daten(TGruppe, Cint(T1)) = Mid(T, TPos + 1)   'Ansonsten den rechten Rest vom Text in das Array an die Position und die gruppe der Tastennummer speichern.
    
  87. Loop
    
  88. Close #TFN
    
  89. 
    
  90. 
    
  91. Screenres T_Img_Width, T_Img_Height, 32             'Da jetzt die Bilddimensionen bekannt sind, einen screen entsprechend der größer erzeugen.
    
  92. Put (0, 0), T_Img_Bild, Pset                        'Und anschliessend das Normale Fernbedienungsbild auf das Fenster Zeichnen.
    
  93. 
    
  94. Dim TMR As Integer                                  'Variable für Maus-Abfrage status
    
  95. Dim TMX As Integer                                  'Variable für Maus-X
    
  96. Dim TMY As Integer                                  'Variable für Maus-Y
    
  97. Dim TMB As Integer                                  'Variable für Maus-Tasten
    
  98. Dim TMBL As Integer                                 'Variable für Maus-Tasten (zuletzt gerückt)
    
  99. Dim TNum As Uinteger                                'Variable für die abgefragte Fernbedinungstasten-Nummer
    
  100. Dim TAktuelleGruppe As Uinteger = 1                 'Variable welche die AKtuelle Gruppe Speichert
    
  101. 
    
  102. Do                                                  'Hauptschleife
    
  103.     If Inkey() = Chr(27) Then Exit Do               'Wenn ESC gedrückt wurde, dann schleife verlassen
    
  104.     TMBL = TMB                                      'Letzter Maustastenwert speichern
    
  105.     TMR = Getmouse(TMX, TMY, , TMB)                 'Aktuelle Mausdaten erfassen
    
  106.     If TMR = 0 Then                                 'Wenn Mausabfrage erfolgreich
    
  107.         If TMB <> TMBL Then                         'Dann prüfen, ob Tasten gedrückt oder losgelassen wurden.
    
  108.             If TMB = 1 Then                         'Wenn Linke-Mausaste gedrückt wurde
    
  109.                 TNum = (Point(TMX, TMY, T_Img_Mask) And &H0000FFFF)                         'Die Tastennummer aus der Bildmaske auslesen
    
  110.                 If TNum > 0 Then                    'Wenn Tastennummer gröser als 0 ist, dann wurde eine Taste unter dem Mauszeiger erkannt.
    
  111.                     Print #1, "Taste:" & TNum       'Dann diese Tastennummer auf der Konsole Ausgeben
    
  112.                     If T_TastenArray_Daten(TAktuelleGruppe, TNum) <> "" Then                'Wenn Daten hinterlegt wurden
    
  113.                         Print #1, "Daten:" & T_TastenArray_Daten(TAktuelleGruppe, TNum)     'dann die dazugehörigen Daten ausgeben
    
  114.                         'Hier kann jetzt die WAVE datei mit den Steuerdaten erzeugt werden.
    
  115.                     Else
    
  116.                         Print #1, "Zu dieser Taste wurden keine Steuerdaten hinterlegt!"    'Ansonsten einen fehlertext ausgeben
    
  117.                     End If
    
  118.                 End If
    
  119.             End If
    
  120.         End If
    
  121.     End If
    
  122.     Sleep 10, 1                                     'Ein bischen warten, um die CPU zu schonen
    
  123. Loop
    
  124. End Sub
    
  125. 
    
  126. 
    
  127. 
    
  128. '##################################################################################################################################
    
  129. Main()                                              'Hauptroutine aufrufen
    
  130. End 0                                               'Programm sauber, und fehlerfrei beenden
    
  131.