Differenze tra le versioni di "Ottenere alcune informazioni di un CD con le funzioni del API di libcdaudio"
Da Gambas-it.org - Wikipedia.
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 5: | Riga 5: | ||
Mostriamo un semplice codice che consentirà di conoscere le seguenti informazioni: | 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. | ||
+ | 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 | Public Struct disco_info | ||
disc_present As Integer | disc_present As Integer | ||
disc_mode 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_minutes As Integer | ||
disc_time_seconds As Integer | disc_time_seconds As Integer | ||
Riga 23: | Riga 36: | ||
disc_first_track As Integer | disc_first_track As Integer | ||
disc_total_tracks As Integer | disc_total_tracks As Integer | ||
− | + | disc_track[100] As Struct Track_info | |
End Struct | End Struct | ||
Riga 46: | Riga 59: | ||
Dim d As Integer | Dim d As Integer | ||
Dim disco As New Disco_info | Dim disco As New Disco_info | ||
+ | Dim t As Byte | ||
d = cd_init_device("/dev/cdrom") | d = cd_init_device("/dev/cdrom") | ||
If d < 0 Then Error.Raise("File-device del Drive CD non trovato !") | If d < 0 Then Error.Raise("File-device del Drive CD non trovato !") | ||
+ | |||
cd_stat(d, disco) | cd_stat(d, disco) | ||
If disco.disc_present = 1 Then | If disco.disc_present = 1 Then | ||
Print "Il lettore CD contiene un disco audio.\n" | Print "Il lettore CD contiene un disco audio.\n" | ||
− | 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 | ||
+ | Print "Durata della traccia n. "; t; " = "; disco.disc_track[t - 1].track_length_minutes & "' " & disco.disc_track[t - 1].track_length_seconds & "\"" | ||
+ | Next | ||
Else | Else | ||
Print "Disco non presente nel lettore CD, oppure, se presente, NON è un CD audio !" | Print "Disco non presente nel lettore CD, oppure, se presente, NON è un CD audio !" |
Versione attuale delle 18:28, 4 set 2014
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"
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.
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 Library "libcdaudio:1.0.0" ' 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 d As Integer Dim disco As New Disco_info Dim t As Byte d = cd_init_device("/dev/cdrom") If d < 0 Then Error.Raise("File-device del Drive CD non trovato !") cd_stat(d, 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 t = 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 & "\"" Next Else Print "Disco non presente nel lettore CD, oppure, se presente, NON è un CD audio !" Endif cd_close(d) End