Differenze tra le versioni di "Rilevare se la scheda audio sta processando dati audio"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
 +
  Dim c As Byte
 
   Dim ss As New String[]
 
   Dim ss As New String[]
   Dim b, c, j As Byte
+
   Dim aso, ca, pc, su As String
   Dim s, u As String
+
 
 +
   aso = "/proc/asound"
 
    
 
    
 
  <FONT color=gray>' ''Verifica innanzitutto quante schede audio sono rilevate dal sistema:''</font>
 
  <FONT color=gray>' ''Verifica innanzitutto quante schede audio sono rilevate dal sistema:''</font>
   c = Dir("/proc/asound", "card*", gb.Directory).Count
+
   c = Dir(aso, "card*", gb.Directory).Count
 
   Print "Il sistema ha rilevato num. " & c & " Schede audio:"
 
   Print "Il sistema ha rilevato num. " & c & " Schede audio:"
 
    
 
    
   ss = Split(File.Load("/proc/asound/cards"), Chr(10))
+
   ss = Split(File.Load(aso &/ "cards"), gb.NewLine)
 
    
 
    
  <FONT color=gray>' ''Quindi verifica il dispositivo della scheda audio che sta eventualmente processando segnali audio:''</font>
+
  <FONT color=gray>' ''Individua il dispositivo della scheda audio che sta eventualmente processando segnali audio:''</font>
   Repeat
+
   For c = 0 To ss.Max
     If InStr(ss[b], "]:") > 0 Then  
+
     If InStr(ss[c], "]:") == 0 Then Continue
      Print "\n\n"; ss[b]
+
    Print "\n\n"; ss[c]
      For Each s In Dir("/proc/asound/card" & CStr(j), "pcm*p", gb.Directory)
+
    For Each ca In Dir(aso, "card*", gb.Directory)
         Print "  [Dispositivo    ]: /card"; j; "/\e[1m"; s
+
      For Each pc In Dir(aso &/ ca, "pcm*p", gb.Directory)
         For Each u In Dir("/proc/asound/card" & CStr(j) &/ s, "sub*", gb.Directory)
+
         Print "  [Dispositivo    ]: " &/ ca &/ "\e[1m"; pc
           If InStr(File.Load("/proc/asound/card" & CStr(j) &/ s &/ u &/ "status"), "RUNNING") > 0 Then
+
         For Each su In Dir(aso &/ ca &/ pc, "sub*", gb.Directory)
 +
           If InStr(File.Load(aso &/ ca &/ pc &/ su &/ "status"), "RUNNING") > 0 Then
 
             Print "\e[32mQuesto dispositivo della scheda audio sta processando segnali audio !\e[0m"
 
             Print "\e[32mQuesto dispositivo della scheda audio sta processando segnali audio !\e[0m"
 
           Else
 
           Else
Riga 26: Riga 29:
 
         Next
 
         Next
 
       Next
 
       Next
      Inc j
+
     Next
    Endif
+
   Next
     Inc b
 
   Until b > c
 
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 02:39, 19 ago 2020

Per rilevare se una o più schede audio, e quali loro dispositivi, stanno eventualmente processando dati audio, è possibile utilizzare questo codice:

Public Sub Main()
 
 Dim c As Byte
 Dim ss As New String[]
 Dim aso, ca, pc, su As String
 
 aso = "/proc/asound"
 
' Verifica innanzitutto quante schede audio sono rilevate dal sistema:
 c = Dir(aso, "card*", gb.Directory).Count
 Print "Il sistema ha rilevato num. " & c & " Schede audio:"
 
 ss = Split(File.Load(aso &/ "cards"), gb.NewLine)
 
' Individua il dispositivo della scheda audio che sta eventualmente processando segnali audio:
 For c = 0 To ss.Max
   If InStr(ss[c], "]:") == 0 Then Continue 
   Print "\n\n"; ss[c]
   For Each ca In Dir(aso, "card*", gb.Directory)
     For Each pc In Dir(aso &/ ca, "pcm*p", gb.Directory)
       Print "   [Dispositivo    ]: " &/ ca &/ "\e[1m"; pc
       For Each su In Dir(aso &/ ca &/ pc, "sub*", gb.Directory)
         If InStr(File.Load(aso &/ ca &/ pc &/ su &/ "status"), "RUNNING") > 0 Then
           Print "\e[32mQuesto dispositivo della scheda audio sta processando segnali audio !\e[0m"
         Else
           Print "\e[0m\e[31mQuesto dispositivo della scheda audio non sta processando alcun segnale audio.\e[0m"
         Endif
       Next
     Next
   Next
 Next
 
End