Estrarre i dati presenti in un CD-Audio con le risorse di linux/cdrom.h
Da Gambas-it.org - Wikipedia.
Con alcune risorse dichiarate nel file header "linux/cdrom.h" è possibile estrarre i dati memorizzati in un CD-Audio.
Il punto iniziale, dal quale leggere i dati, sarà individuato in base ai minuti, secondi e frame.
Mostriamo un possibile esempio:
Library "libc:6" Private Const CDROMREADRAW As Long = &5314 Private Const CD_FRAMES As Integer = 75 Private Const CD_FRAMESIZE_RAW As Integer = 2352 ' int ioctl (int __fd, unsigned long int __request, ...) ' Perform the I/O control operation specified by REQUEST on FD. Private Extern ioctl(__fd As Integer, __request As Long, par As Pointer) As Integer Public Sub Main() Dim fl As File Dim arg As Pointer Dim st As Stream Dim frame, i As Integer fl = Open "/dev/sr0" For Read ' Legge per 75 frame: For frame = 0 To (CD_FRAMES - 1) arg = Alloc(SizeOf(gb.Byte), CD_FRAMESIZE_RAW) st = Memory arg For Write ' Legge i dati presenti - ad esempio - partendo da 4' 0" 0frame: Write #st, 4 As Byte ' Minuti Write #st, 0 As Byte ' Secondi Write #st, frame As Byte ' Frame i = ioctl(fl.Handle, CDROMREADRAW, arg) If i < 0 Then Error.Raise("ERRORE !") Print "Frame: "; frame Wait 0.5 For i = 0 To (CD_FRAMESIZE_RAW - 1) Print i, Hex(Byte@(arg + i), 2) Next Print "------------" st.Close Free(arg) Next Print "=== Termine lettura dati ===" fl.Close End