Differenze tra le versioni di "Eseguire un CDROM mediante le funzioni del API di SDL"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La libreria '''SDL''' ci permette di eseguire il contenuto audio di un CDROM. Le funzioni, utili per gestire il CDROM, nella versione obsoleta, ma ancora funzionante, "''libS...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 28: Riga 28:
 
  ' ''SDL_CDPlayTracks plays the given CD starting at track start_track, for ntracks tracks.''</font>
 
  ' ''SDL_CDPlayTracks plays the given CD starting at track start_track, for ntracks tracks.''</font>
 
  Private Extern SDL_CDPlayTracks(cdrom As Pointer, start_track As Integer, start_frame As Integer, ntracks As Integer, nframes As Integer) As Integer
 
  Private Extern SDL_CDPlayTracks(cdrom As Pointer, start_track As Integer, start_frame As Integer, ntracks As Integer, nframes As Integer) As Integer
 +
 +
  <FONT Color=gray>' ''void SDL_Delay(Uint32 ms)''
 +
' ''Wait a specified number of milliseconds before returning.''</font>
 +
Private Extern SDL_Delay(ms As Integer)
 
   
 
   
 
  <FONT Color=gray>' ''void SDL_CDClose(SDL_CD *cdrom)''
 
  <FONT Color=gray>' ''void SDL_CDClose(SDL_CD *cdrom)''
Riga 54: Riga 58:
 
     Chiusura()
 
     Chiusura()
 
   Endif
 
   Endif
 
+
  If SDL_CDStatus(cd) == 1 Then
 
 
  <FONT Color=gray>' ''Esegue l'intero CDRom.''
 
  <FONT Color=gray>' ''Esegue l'intero CDRom.''
 
  ' ''(Se si vuole eseguire una traccia determinata, si porrà il numero della sua posizione nel 4° argomento della seguente funzione).''</font>
 
  ' ''(Se si vuole eseguire una traccia determinata, si porrà il numero della sua posizione nel 4° argomento della seguente funzione).''</font>
    SDL_CDPlayTracks(cd, 0, 0, 0, 0)
+
  If SDL_CDStatus(cd) == CD_STOPPED Then SDL_CDPlayTracks(cd, 0, 0, 0, 0)
   Endif
+
 +
  While SDL_CDStatus(cd) == CD_PLAYING
 +
    SDL_Delay(10)
 +
   Wend
 
   
 
   
 
   SDL_CDClose(cd)
 
   SDL_CDClose(cd)
Riga 74: Riga 80:
 
    
 
    
 
  End
 
  End
 +
 +
 +
 +
=Riferimenti=
 +
* https://www.libsdl.org/release/SDL-1.2.15/docs/html/

Versione attuale delle 11:29, 28 lug 2024

La libreria SDL ci permette di eseguire il contenuto audio di un CDROM.

Le funzioni, utili per gestire il CDROM, nella versione obsoleta, ma ancora funzionante, "libSDL-1.2:1.2.68 ".

Mostriamo un semplice esempio pratico:

Library "libSDL-1.2:1.2.68"

Private Const SDL_INIT_CDROM As Integer = &h100
Private Enum CD_TRAYEMPTY, CD_STOPPED, CD_PLAYING, CD_PAUSED, CD_ERROR = -1

' int SDL_Init(Uint32 flags)
' Initialize the SDL library.
Private Extern SDL_Init(flags As Integer) As Integer

' int SDL_CDNumDrives(void)
' Returns the number of CD-ROM drives on the system.
Private Extern SDL_CDNumDrives() As Integer

' SDL_CD *SDL_CDOpen(int drive)
' Opens a CD-ROM drive for access.
Private Extern SDL_CDOpen(drive As Integer) As Pointer

' CDstatus SDL_CDStatus(SDL_CD *cdrom)
' Returns the current status of the given drive.
Private Extern SDL_CDStatus(cdrom As Pointer) As Integer

' int SDL_CDPlayTracks(SDL_CD *cdrom, int start_track, int start_frame, int ntracks, int nframes))
' SDL_CDPlayTracks plays the given CD starting at track start_track, for ntracks tracks.
Private Extern SDL_CDPlayTracks(cdrom As Pointer, start_track As Integer, start_frame As Integer, ntracks As Integer, nframes As Integer) As Integer

 ' void SDL_Delay(Uint32 ms)
' Wait a specified number of milliseconds before returning.
Private Extern SDL_Delay(ms As Integer)

' void SDL_CDClose(SDL_CD *cdrom)
' Closes the given cdrom handle.
Private Extern SDL_CDClose(cdrom As Pointer)

' void SDL_Quit(void)
' Shuts down all SDL subsystems and frees the resources allocated to them.
Private Extern SDL_Quit()


Public Sub Main()

 Dim cd As Pointer
 
 SDL_Init(SDL_INIT_CDROM)
 
 If SDL_CDNumDrives() == 0 Then 
   Print "Nessun Driver CDRom connesso !"
   Chiusura()
 Endif
 
 cd = SDL_CDOpen(0)
 If cd == 0 Then 
   Print "Impossibile aprire il CD-Rom !"
   Chiusura()
 Endif

' Esegue l'intero CDRom.
' (Se si vuole eseguire una traccia determinata, si porrà il numero della sua posizione nel 4° argomento della seguente funzione).
 If SDL_CDStatus(cd) == CD_STOPPED Then SDL_CDPlayTracks(cd, 0, 0, 0, 0)

 While SDL_CDStatus(cd) == CD_PLAYING
   SDL_Delay(10)
 Wend

 SDL_CDClose(cd)

 Chiusura()

End


Private Procedure Chiusura()
 
 SDL_Quit()
 Quit
 
End


Riferimenti