Differenze tra le versioni di "Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
La libreria '''''Libcdaudio''''' consente il controllo dei CD audio.
 
La libreria '''''Libcdaudio''''' consente il controllo dei CD audio.
  
Per utilizzare le funzioni esterne del API di ''libcdaudio'' sarà necessario richiamare l'attuale libreria: "''libcdaudio.so.1.0.0''"
+
Per utilizzare le funzioni esterne del API di ''libcdaudio'' sarà necessario richiamare l'attuale libreria condivisa: "''libcdaudio.so.1.0.0''"
  
  
Riga 9: Riga 9:
 
* numero delle tracce audio presenti;
 
* numero delle tracce audio presenti;
 
* durata di ciascuna traccia audio.
 
* durata di ciascuna traccia audio.
 +
Library "libcdaudio:1.0.0"
 +
 
  Public Struct track_info  
 
  Public Struct track_info  
 
   track_length_minutes As Integer
 
   track_length_minutes As Integer
Riga 19: Riga 21:
 
   track_type As Integer
 
   track_type As Integer
 
  End Struct
 
  End Struct
 
 
   
 
   
 
  Public Struct disco_info
 
  Public Struct disco_info
Riga 38: Riga 39:
 
   disc_track[100] As Struct Track_info
 
   disc_track[100] As Struct Track_info
 
  End Struct
 
  End Struct
 
 
Library "libcdaudio:1.0.0"
 
 
   
 
   
 
  <FONT Color=gray>' ''int cd_init_device(char *device_name)''
 
  <FONT Color=gray>' ''int cd_init_device(char *device_name)''
Riga 55: Riga 53:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
  Dim d As Integer
 
  Dim disco As New Disco_info
 
  Dim t As Byte
 
 
   
 
   
 +
  Dim i As Integer
 +
  Dim disco As New Disco_info
 +
  Dim b As Byte
 
   
 
   
   d = cd_init_device("/dev/cdrom")
+
   i = cd_init_device("/dev/cdrom")
   If d < 0 Then Error.Raise("File-device del Drive CD non trovato !")  
+
   If i < 0 Then Error.Raise("File-device del Drive CD non trovato !")  
 
    
 
    
   cd_stat(d, disco)
+
   cd_stat(i, disco)
 
   
 
   
 
   If disco.disc_present = 1 Then
 
   If disco.disc_present = 1 Then
Riga 71: Riga 68:
 
     Print "Durata del disco: "; disco.disc_length_minutes; "' "; disco.disc_length_seconds; "\""
 
     Print "Durata del disco: "; disco.disc_length_minutes; "' "; disco.disc_length_seconds; "\""
 
     Print "Numero tracce presenti: "; disco.disc_total_tracks
 
     Print "Numero tracce presenti: "; disco.disc_total_tracks
     For t = 1 To disco.disc_total_tracks
+
     For b = 1 To disco.disc_total_tracks
       Print "Durata della traccia n. "; t; " =  "; disco.disc_track[t - 1].track_length_minutes & "' " & disco.disc_track[t - 1].track_length_seconds & "\""
+
       Print "Durata della traccia n. "; b; " =  "; disco.disc_track[b - 1].track_length_minutes & "' " & disco.disc_track[b - 1].track_length_seconds & "\""
 
     Next
 
     Next
 
   Else
 
   Else
Riga 78: Riga 75:
 
   Endif
 
   Endif
 
   
 
   
   cd_close(d)
+
   cd_close(i)
 
   
 
   
  '''End'''
+
  End
 
 
  
  

Versione attuale delle 16:52, 4 lug 2024

La libreria Libcdaudio consente il controllo dei CD audio.

Per utilizzare le funzioni esterne del API di libcdaudio sarà necessario richiamare l'attuale libreria condivisa: "libcdaudio.so.1.0.0"


Mostriamo un semplice codice che consentirà di conoscere le seguenti informazioni:

  • presenza di un CD audio nel lettore CD;
  • durata del CD audio;
  • numero delle tracce audio presenti;
  • durata di ciascuna traccia audio.
Library "libcdaudio:1.0.0"

Public Struct track_info 
  track_length_minutes As Integer
  track_length_seconds As Integer
  track_length_frames As Integer
  track_pos_minutes As Integer
  track_pos_seconds As Integer
  track_pos_frames As Integer
  track_lba As Integer
  track_type As Integer
End Struct

Public Struct disco_info
  disc_present As Integer
  disc_mode As Integer
  disc_track_time_minutes As Integer
  disc_track_time_seconds As Integer
  disc_track_time_frames As Integer
  disc_time_minutes As Integer
  disc_time_seconds As Integer
  disc_time_frames As Integer
  disc_length_minutes As Integer
  disc_length_seconds As Integer
  disc_length_frames As Integer
  disc_current_track As Integer
  disc_first_track As Integer
  disc_total_tracks As Integer
  disc_track[100] As Struct Track_info
End Struct

' int cd_init_device(char *device_name)
' Inizializza la libreria 'libcdaudio'.
Private Extern cd_init_device(device_name As String) As Integer

' int cd_stat(int cd_desc, struct disc_info *disc)
' Ottiene informazioni generali sul CD inserito.
Private Extern cd_stat(cd_desc As Integer, disc_Str As Disco_info) As Integer

' int cd_close(int cd_desc)
' Chiude la libreria.
Private Extern cd_close(cd_desc As Integer) As Integer


Public Sub Main()

  Dim i As Integer
  Dim disco As New Disco_info
  Dim b As Byte

  i = cd_init_device("/dev/cdrom")
  If i < 0 Then Error.Raise("File-device del Drive CD non trovato !") 
  
  cd_stat(i, disco)

  If disco.disc_present = 1 Then
    Print "Il lettore CD contiene un disco audio.\n"
    Print "Durata del disco: "; disco.disc_length_minutes; "' "; disco.disc_length_seconds; "\""
    Print "Numero tracce presenti: "; disco.disc_total_tracks
    For b = 1 To disco.disc_total_tracks
      Print "Durata della traccia n. "; b; " =  "; disco.disc_track[b - 1].track_length_minutes & "' " & disco.disc_track[b - 1].track_length_seconds & "\""
    Next
  Else
    Print "Disco non presente nel lettore CD, oppure, se presente, NON è un CD audio !"
  Endif

  cd_close(i)

End


Riferimenti