Differenze tra le versioni di "Visualizzare il tempo trascorso dall'ultimo avvio del sistema"
Riga 26: | Riga 26: | ||
Dim s As String | Dim s As String | ||
− | |||
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 | + | 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> | ||
− | + | Input #ar, 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, | + | 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 | + | 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() | |
− | + | 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