SDL: Cdrom
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; }