Differenze tra le versioni di "Conoscere il numero delle tracce ed i numeri dei settori logici di un CD con le funzioni del API di libcdio"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La libreria '''''Libcdio''''' consente di gestire i CD ed i relativi driver presenti nel sistema. Per utilizzare le funzioni esterne del API di ''libcdio'' sarà necessario r...")
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
La libreria '''''Libcdio''''' consente di gestire i CD ed i relativi driver presenti nel sistema.
 
La libreria '''''Libcdio''''' consente di gestire i CD ed i relativi driver presenti nel sistema.
  
Per utilizzare le funzioni esterne del API di ''libcdio'' sarà necessario richiamare l'attuale libreria: "''libcdio.so.13.0.0''".
+
Per utilizzare le funzioni esterne del API di ''libcdio'' sarà necessario richiamare l'attuale libreria: "''libcdio.so.19.0.0'' ".
  
  
 
Mostriamo di seguito un semplice codice che consentirà di conoscere il numero delle tracce ed i numeri dei settori logici di un CD.
 
Mostriamo di seguito un semplice codice che consentirà di conoscere il numero delle tracce ed i numeri dei settori logici di un CD.
  Library "libcdio:13.0.0"
+
  Library "libcdio:19.0.0"
 
   
 
   
  Private Enum DRIVER_UNKNOWN = 0, DRIVER_AIX, DRIVER_BSDI, DRIVER_FREEBSD, DRIVER_NETBSD, DRIVER_LINUX, DRIVER_SOLARIS,
+
  Private Enum DRIVER_UNKNOWN = 0, DRIVER_AIX, DRIVER_FREEBSD, DRIVER_NETBSD, DRIVER_LINUX, DRIVER_SOLARIS,
               DRIVER_OS2, DRIVER_OSX, DRIVER_WIN32, DRIVER_CDRDAO, DRIVER_BINCUE, DRIVER_NRG, DRIVER_DEVICE
+
               DRIVER_OSX, DRIVER_WIN32, DRIVER_CDRDAO, DRIVER_BINCUE, DRIVER_NRG, DRIVER_DEVICE
 
  Private Const CDIO_INVALID_LSN As Integer = -45301
 
  Private Const CDIO_INVALID_LSN As Integer = -45301
 
  Private Const CDIO_CDROM_LEADOUT_TRACK As Integer = &AA
 
  Private Const CDIO_CDROM_LEADOUT_TRACK As Integer = &AA
Riga 33: Riga 33:
 
    
 
    
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim p_cdio As Pointer
 
   Dim p_cdio As Pointer
Riga 39: Riga 39:
 
   Dim i, j, lsn As Integer
 
   Dim i, j, lsn As Integer
 
    
 
    
  p_cdio = cdio_open(Null, DRIVER_LINUX)
+
  p_cdio = cdio_open(Null, DRIVER_LINUX)
  If p_cdio = 0 Then Error.Raise("Impossibile trovare il driver per il cd-rom !")
+
  If p_cdio == 0 Then Error.Raise("Impossibile trovare il driver per il cd-rom !")
   
 
  tracce = cdio_get_num_tracks(p_cdio)
 
  i = CInt(cdio_get_first_track_num(p_cdio))
 
  prima_traccia = i
 
  Print "Tracce del CD-ROM ("; prima_traccia; " - "; prima_traccia + tracce - 1; ")"
 
  Print " #:  LSN"
 
  For j = 0 To tracce - 1
 
    lsn = cdio_get_track_lsn(p_cdio, i)
 
    If (CDIO_INVALID_LSN <> lsn) Then Print Format(i, "#0:"), Format(CLong(lsn), "000000")
 
    Inc i
 
  Next
 
  Print Hex(CDIO_CDROM_LEADOUT_TRACK, 2); ": "; CLong(cdio_get_track_lsn(p_cdio, CDIO_CDROM_LEADOUT_TRACK)); " leadout"
 
   
 
 
      
 
      
 +
  tracce = cdio_get_num_tracks(p_cdio)
 +
  i = CInt(cdio_get_first_track_num(p_cdio))
 +
  prima_traccia = i
 +
  Print "Tracce del CD-ROM ("; prima_traccia; " - "; prima_traccia + tracce - 1; ")"
 +
  Print " #:  LSN"
 +
  For j = 0 To tracce - 1
 +
    lsn = cdio_get_track_lsn(p_cdio, i)
 +
    If (CDIO_INVALID_LSN <> lsn) Then Print Format(i, "#0:"), Format(CLong(lsn), "000000")
 +
    Inc i
 +
  Next
 +
  Print Hex(CDIO_CDROM_LEADOUT_TRACK, 2); ": "; CLong(cdio_get_track_lsn(p_cdio, CDIO_CDROM_LEADOUT_TRACK)); " leadout"
 +
 
  <FONT color=gray>' ''Va in chiusura:''</font>
 
  <FONT color=gray>' ''Va in chiusura:''</font>
  cdio_destroy(p_cdio)
+
  cdio_destroy(p_cdio)
 
    
 
    
   '''End'''
+
   End
 
 
  
  

Versione attuale delle 08:06, 4 giu 2024

La libreria Libcdio consente di gestire i CD ed i relativi driver presenti nel sistema.

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


Mostriamo di seguito un semplice codice che consentirà di conoscere il numero delle tracce ed i numeri dei settori logici di un CD.

Library "libcdio:19.0.0"

Private Enum DRIVER_UNKNOWN = 0, DRIVER_AIX, DRIVER_FREEBSD, DRIVER_NETBSD, DRIVER_LINUX, DRIVER_SOLARIS,
             DRIVER_OSX, DRIVER_WIN32, DRIVER_CDRDAO, DRIVER_BINCUE, DRIVER_NRG, DRIVER_DEVICE
Private Const CDIO_INVALID_LSN As Integer = -45301
Private Const CDIO_CDROM_LEADOUT_TRACK As Integer = &AA

' CdIo_t * cdio_open (const char *psz_source, driver_id_t driver_id)
' Sets up to read from place specified by psz_source and driver_id.
Private Extern cdio_open(psz_source As String, driver_id As Integer) As Pointer

' track_t cdio_get_num_tracks(const CdIo_t * p_cdio)
' Get the number of tracks on the CD.
Private Extern cdio_get_num_tracks(cdioP As Pointer) As Byte

' track_t cdio_get_first_track_num(const CdIo_t * p_cdio)
' Get the number of the first track.
Private Extern cdio_get_first_track_num(cdioP As Pointer) As Byte

' lsn_t cdio_get_track_lsn(const CdIo_t * p_cdio, track_t u_track)
' Return the starting LSN for track number i_track in p_cdio.
Private Extern cdio_get_track_lsn(cdioP As Pointer, u_track As Integer) As Integer

' void cdio_destroy(CdIo_t * p_cdio)
' Free any resources associated with p_cdio.
Private Extern cdio_destroy(cdioP As Pointer)
 

Public Sub Main()

 Dim p_cdio As Pointer
 Dim tracce, prima_traccia As Byte
 Dim i, j, lsn As Integer
 
 p_cdio = cdio_open(Null, DRIVER_LINUX)
 If p_cdio == 0 Then Error.Raise("Impossibile trovare il driver per il cd-rom !")
   
 tracce = cdio_get_num_tracks(p_cdio)
 i = CInt(cdio_get_first_track_num(p_cdio))
 prima_traccia = i
 Print "Tracce del CD-ROM ("; prima_traccia; " - "; prima_traccia + tracce - 1; ")"
 Print " #:  LSN"
 For j = 0 To tracce - 1
   lsn = cdio_get_track_lsn(p_cdio, i)
   If (CDIO_INVALID_LSN <> lsn) Then Print Format(i, "#0:"), Format(CLong(lsn), "000000")
   Inc i
 Next
 Print Hex(CDIO_CDROM_LEADOUT_TRACK, 2); ": "; CLong(cdio_get_track_lsn(p_cdio, CDIO_CDROM_LEADOUT_TRACK)); " leadout"

' Va in chiusura:
 cdio_destroy(p_cdio)
  
 End


Riferimenti