SDL: Cdrom

Aus Wikibooks

CD-Rom[Bearbeiten]

Die CD-Rom-API beschäftigt sich mit Funktionen rund um CDs. Die Funktionen geben Informationen über die Anzahl der CD-Rom-Laufwerke im Computer, öffnen und schließen das CD-Fach und können sogar einzelne Tracks abspielen. Um die CD-Rom-API benutzen zu können, muss SDL_Init mit SDL_INIT_CDROM aufgerufen werden.

CD-Rom-API[Bearbeiten]

  • Anzahl der CD-Rom-Laufwerke im Computer:
int SDL_CDNumDrives (void);
  • Laufwerksbuchstaben oder Gerätenamen ermitteln:
 const char *SDL_CDName (int geraete_nummer);

Typische Ausgaben sind /dev/cdrom0 oder E:. geraete_nummer ist dabei eine Zahl zwischen 0 und SDL_CDNumDrives () - 1.

  • "Öffnet" das CD-Rom. Hierbei wird nicht die Lade ausgefahren, sondern ein (exklusiver) Zugriff auf das Gerät gewährt.
 SDL_CD *SDL_CDOpen (int geräte_nummer);
  • Status eines bestimmten Gerätes ermitteln:
CDstatus SDL_CDStatus (SDL_CD *cdrom);

cdrom muss dabei mit SDL_CDOpen geöffnet worden sein. SDL_CDStatus liefert die Konstanten:

    • CD_TRAYEMPTY - keine CD eingelegt
    • CD_STOPPED - Gerät wurde angehalten
    • CD_PLAYING - Es wird etwas abgespielt
    • CD_PAUSED - Abspielen pausiert
    • CD_ERROR - Ein Fehler ist aufgetreten
  • Spielt eine CD ab:
int SDL_CDPlay (SDL_CD *cdrom, int start, int anz);

Spielt anz Frames von der CD ab start. Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • Spielt ausgewählte Stücke von der CD:
int SDL_CDPlayTracks (SDL_CD *cdrom, int erster_track, int erster_frame, 
 int anz_tracks, int anz_frames);

Spielt die CD von erster_track, erster_frame. Es werden anz_tracks bzw anz_frames gespielt. Um 20 Sekunden zu spielen schreibt man bspw: CD_FPS*20. Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • Abspielen pausieren:
 int SDL_CDPause (SDL_CD *cdrom);

Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • Weiterspielen nach SDL_CDPause:
 int SDL_CDResume (SDL_CD *cdrom);

Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • Abspielen anhalten:
int SDL_CDStop (SDL_CD *cdrom);

Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • CD-Rom auswerfen:
 int SDL_CDEject (SDL_CD *cdrom);

Diese Funktion übergibt 0 bei Erfolg und -1 bei einem Fehler.

  • CD-Rom "schliessen":
 void SDL_CDClose (SDL_CD *cdrom);

"Schliesst" den mit SDL_CDOpen "geöffneten" Zeiger auf eine SDL_CD-Struktur.


Halter für Kaffeetassen[Bearbeiten]

Wer kennt das nicht: Man sitzt vor dem Computer, der gesamte Schreibtisch ist voll mit Zetteln. Man wünscht sich einen Platz, wo man seine Kaffeetasse abstellen kann. Hier ist er: Das folgende Programm demonstriert die Funktionsweise eines "ComputerUnterstützten KaffeetassenHalters" (CUKH).

Programmcode[Bearbeiten]

#include <stdlib.h>
#include <SDL.h>

int main (void)
{
  int nCds;
  SDL_CD *cdrom;

  if (SDL_Init (SDL_INIT_CDROM) == -1)
    exit (0);

  nCds = SDL_CDNumDrives ();
  if (nCds > 0)
    {
      printf ("Wir haben %d CD-Rom Laufwerke\n", nCds);
      printf ("Erstes CD-Rom: %s\n", SDL_CDName (0));
      cdrom = SDL_CDOpen (0);
      printf ("Versuche, das Gerät einmal zu öffnen\n");
      SDL_CDEject (cdrom);
      SDL_CDClose (cdrom);
    }
  else
    printf ("Leider keine CD-Rom Laufwerke angeschlossen\n");
  return 0;
}