Differenze tra le versioni di "Visualizzare il tempo trascorso dall'ultimo avvio del sistema"

Da Gambas-it.org - Wikipedia.
Riga 26: Riga 26:
 
    
 
    
 
   Dim s As String
 
   Dim s As String
  Dim p As Pointer
 
 
   Dim ar As File
 
   Dim ar As File
 
   
 
   
 
  <FONT color=gray>' ''Apriamo nuovamente il file, ma ora per la lettura e la conseguente raccolta dei dati:''</font>
 
  <FONT color=gray>' ''Apriamo nuovamente il file, ma ora per la lettura e la conseguente raccolta dei dati:''</font>
   ar = Open "/proc/uptime" For Read
+
   ar = Open "/proc/uptime" For Input
 
   
 
   
 
  <FONT color=gray>' ''Leggiamo solo i primi 7 byte del flusso:''</font>
 
  <FONT color=gray>' ''Leggiamo solo i primi 7 byte del flusso:''</font>
   Read #ar, s, 7
+
   Input #ar, s
 
   
 
   
<FONT color=gray>' ''Poiché dopo i 7 caratteri vi è un byte di valore zero (Nul), ci serviamo del "Puntatore" per escludere tutto ciò che v'è da quel valore zero in poi:''</font>
 
  p = VarPtr(s)
 
 
 
 
  <FONT color=gray>' ''Viene finalmente mostrato il risultato in console:''</font>
 
  <FONT color=gray>' ''Viene finalmente mostrato il risultato in console:''</font>
   Write #File.Out, String@(p) & "\r"
+
   Write #File.Out, s & "\r"
 
   
 
   
 
  <FONT color=gray>' ''Poniamo ad esempio un ritardo di 5 decimi di secondo, anche al fine di impedire un uso eccessivo della CPU:''</font>
 
  <FONT color=gray>' ''Poniamo ad esempio un ritardo di 5 decimi di secondo, anche al fine di impedire un uso eccessivo della CPU:''</font>
Riga 51: Riga 47:
  
 
===Uso della funzione ''gst_util_get_timestamp()'' di GStreamer===
 
===Uso della funzione ''gst_util_get_timestamp()'' di GStreamer===
Quest'altra modalità prevede il semplice uso della funzoione esterna ''gst_util_get_timestamp()'' del API di GStreamer. Tale funzione esterna restituisce dei marcatori temporali, espressi in nano secondi dall'avvio della corrente sessione del sistema, ed utilizzati solitamente per misurare degli intervalli di tempo.
+
Quest'altra modalità prevede il semplice uso della funzoione esterna ''gst_util_get_timestamp()'' del API di GStreamer. Tale funzione esterna restituisce dei marcatori temporali, espressi in ''nanosecondi'' (miliardesimi di secondo) dall'avvio della corrente sessione del sistema, ed utilizzati solitamente per misurare degli intervalli di tempo.
  
 
Sarà ovviamente necessario richiamare nell'applicazione Gambas la libreria dinamica condivisa: "''libgstreamer-1.0.so.0.204.0''"
 
Sarà ovviamente necessario richiamare nell'applicazione Gambas la libreria dinamica condivisa: "''libgstreamer-1.0.so.0.204.0''"
  
Mostriamo un semplicissimo esempio:
+
Mostriamo un semplicissimo esempio, nel quale verrà raccolto con un ciclo all'infinito il tempo (espresso in ''nanosecondi'') trascorso dall'avvio della sessione di sistema:
 
  Library "libgstreamer-1.0"
 
  Library "libgstreamer-1.0"
 
   
 
   
Riga 67: Riga 63:
 
   Dim l As Long
 
   Dim l As Long
 
    
 
    
   l = gst_util_get_timestamp()
+
   While True
+
    l = gst_util_get_timestamp()
   Print l
+
    Write #File.Out, l & "\r"
 +
   Wend
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 07:51, 11 set 2015

Per visualizzare il tempo trascorso dall'ultimo avvio del proprio sistema, sarà possibile utilizzare almeno un paio di modalità.


Lettura del file /proc/uptime

Con questa modalità si andrà a leggere mediante l'aiuto di un Puntatore il primo dato presente nel file: /proc/uptime. Otterremo qui questo risultato senza l'uso di Shell.

Nella routine principale apriremo il file "/proc/uptime", ponendolo sotto osservazione ai soli fini di far sollevare l'evento di lettura, e così di leggere con una nuova e diversa apertura del medesimo file i dati utili, ogni qual volta vi sono dati appunto da leggere.

Una lettura diretta del file nella routine "File_Read()" mediante la variabile di tipo File, ottenuta con l'istruzione Open della routine principale Sub Main(), non risulta possibile: seppure assenti errori, non vengono restituiti dati.


Mostriamo un esempio pratico:

Private fl As File


Public Sub Main()
 
' Apriamo il file solo per far sollevare l'evento di lettura ogni qual volta v'è qualcosa di nuovo da leggervi:
 fl = Open "/proc/uptime" For Read Watch

End



Public Sub File_Read()
 
 Dim s As String
 Dim ar As File

' Apriamo nuovamente il file, ma ora per la lettura e la conseguente raccolta dei dati:
  ar = Open "/proc/uptime" For Input

' Leggiamo solo i primi 7 byte del flusso:
  Input #ar, s

' Viene finalmente mostrato il risultato in console:
  Write #File.Out, s & "\r"

' Poniamo ad esempio un ritardo di 5 decimi di secondo, anche al fine di impedire un uso eccessivo della CPU:
  Sleep 0.05

  ar.Close
 
End


Uso della funzione gst_util_get_timestamp() di GStreamer

Quest'altra modalità prevede il semplice uso della funzoione esterna gst_util_get_timestamp() del API di GStreamer. Tale funzione esterna restituisce dei marcatori temporali, espressi in nanosecondi (miliardesimi di secondo) dall'avvio della corrente sessione del sistema, ed utilizzati solitamente per misurare degli intervalli di tempo.

Sarà ovviamente necessario richiamare nell'applicazione Gambas la libreria dinamica condivisa: "libgstreamer-1.0.so.0.204.0"

Mostriamo un semplicissimo esempio, nel quale verrà raccolto con un ciclo all'infinito il tempo (espresso in nanosecondi) trascorso dall'avvio della sessione di sistema:

Library "libgstreamer-1.0"

' GstClockTime gst_util_get_timestamp (void)
' Get a timestamp as GstClockTime to be used for interval measurements.
Private Extern gst_util_get_timestamp() As Long


Public Sub Main()

 Dim l As Long
 
  While True
    l = gst_util_get_timestamp()
    Write #File.Out, l & "\r"
  Wend

End