Differenze tra le versioni di "Ottenere informazioni generali sulla CPU con le sole risorse di Gambas"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | E' possibile ottenere con le sole risorse di Gambas alcune informazioni generali sulla CPU analizzando i file contenuti nella cartella di sistema | + | E' possibile ottenere con le sole risorse di Gambas alcune informazioni generali sulla CPU analizzando i file contenuti nella cartella di sistema ''/sys/devices/system/cpu'' e nelle sue sub-cartelle. |
Ne mostriamo un possibile codice: | Ne mostriamo un possibile codice: |
Versione delle 16:39, 16 giu 2015
E' possibile ottenere con le sole risorse di Gambas alcune informazioni generali sulla CPU analizzando i file contenuti nella cartella di sistema /sys/devices/system/cpu e nelle sue sub-cartelle.
Ne mostriamo un possibile codice:
Public Sub Main() Dim s, v, cpu, sys As String sys = "/sys/devices/system/cpu" If Not Exist(sys) Then Error.Raise("Impossibile trovare il percorso contenente le cartelle delle CPU !") For Each cpu In Dir(sys, "cpu*", gb.Directory) If IsDigit(Right(cpu, 1)) Then Print "== Analisi "; cpu; " ==" Print "Driver: "; Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_driver"), "\n", Null) Print "Latenza massima di transizione: "; Durata(Replace(File.Load(sys &/ cpu &/ "cpufreq/cpuinfo_transition_latency"), "\n", Null)) s = Velocitas(Replace(File.Load(sys &/ cpu &/ "cpufreq/cpuinfo_max_freq"), "\n", Null)) & " " & Velocitas(Replace(File.Load(sys &/ cpu &/ "cpufreq/cpuinfo_min_freq"), "\n", Null)) Print "Limiti hardware: "; s s = Null For Each v In Split(Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_available_frequencies"), "\n", Null), " ") If IsDigit(v) Then s &= Velocitas(v) & " " Next Print "Salti di frequenze disponibili: "; s Print "Regolatori di frequenza della CPU disponibili: "; Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_available_governors"), "\n", Null) s = Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_governor"), "\n", Null) & "' può impostare la frequenza fra " s &= Velocitas(Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_max_freq"), "\n", Null)) & " e " & Velocitas(Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_min_freq"), "\n", Null)) Print "Il regolatore '"; s Print "L'attuale frequenza della CPU è: "; Velocitas(Replace(File.Load(sys &/ cpu &/ "cpufreq/scaling_cur_freq"), "\n", Null)) Print Endif Next End Private Function Durata(d As String) As String Dim tmp, dur As Long dur = Val(d) If dur > 1000000 Then tmp = dur Mod 10000 If tmp >= 5000 Then dur += 10000 Return CStr(dur / 1000000) & "," & CStr((dur Mod 1000000) / 10000) & " ms" Else If dur > 100000 Then tmp = dur Mod 1000 If tmp >= 500 Then dur += 1000 Return CStr(dur / 1000) & " us" Else If dur > 1000 Then tmp = dur Mod 100 If tmp >= 50 Then dur += 100 Return CStr(dur / 1000) & "," & CStr((dur Mod 1000) / 100) & " us" Else Return CStr(dur) & " ns" Endif End Private Function Velocitas(v As String) As String Dim tmp, vel As Long vel = Val(v) If vel > 1000000 Then tmp = vel Mod 10000 If (tmp >= 5000) Then vel += 10000 Return CStr(vel \ 1000000) & "," & CStr((vel Mod 1000000) / 10000) & " GHz" Else If vel > 100000 Then tmp = vel Mod 1000 If tmp >= 500 Then vel += 1000 Return CStr(vel / 1000) & " MHz" Else If vel > 1000 tmp = vel Mod 100 If tmp >= 50 Then vel += 100 Return CStr(vel / 1000) & "," & CStr((vel Mod 1000) / 100) Else Return CStr(vel) & " KHz" Endif End