Differenze tra le versioni di "Controllare la temperatura della CPU con le sole funzioni di Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per controllare la temperatura della o delle CPU con le sole funzioni di Gambas, si devono interrogare i seguenti file: * ''/sys/class/thermal/thermal_zoneX/type'' Stringa che...")
 
 
(8 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per controllare la temperatura della o delle CPU con le sole funzioni di Gambas, si devono interrogare i seguenti file:
+
Per controllare la temperatura della o delle CPU con le sole funzioni di Gambas, si devono interrogare i seguenti file (se sono presenti nel sistema):
 
* ''/sys/class/thermal/thermal_zoneX/type''
 
* ''/sys/class/thermal/thermal_zoneX/type''
 
Stringa che rappresenta il tipo di zona termica.
 
Stringa che rappresenta il tipo di zona termica.
Riga 15: Riga 15:
 
La temperatura al di sopra della quale il punto di intervento viene attivato.
 
La temperatura al di sopra della quale il punto di intervento viene attivato.
 
<BR>Unità: millesimi di grado Celsius.
 
<BR>Unità: millesimi di grado Celsius.
 +
 +
V'è da sottolineare che i suddetti file non sono presenti in tutte le distribuzioni Linux.
  
 
Mostriamo un esempio pratico:
 
Mostriamo un esempio pratico:
Riga 24: Riga 26:
 
   
 
   
 
   For Each th In Dir(THERMAL, "thermal_zone*", gb.Directory)
 
   For Each th In Dir(THERMAL, "thermal_zone*", gb.Directory)
    Print th
+
     If Exist(THERMAL &/ th) Then  
     If Not IsNull(THERMAL & th) Then  
+
      Print "\e[1m"; th; "\e[0m"
 
       If RTrim(File.Load(THERMAL &/ th &/ "type")) = "acpitz" Then Print "ACPI interface"
 
       If RTrim(File.Load(THERMAL &/ th &/ "type")) = "acpitz" Then Print "ACPI interface"
 
       Print "Temperatura: \e[31m"; Val(RTrim(File.Load(THERMAL &/ th &/ "temp"))) / 1000; "°\e[0m";
 
       Print "Temperatura: \e[31m"; Val(RTrim(File.Load(THERMAL &/ th &/ "temp"))) / 1000; "°\e[0m";
       Print "  ("; RTrim(File.Load(THERMAL &/ th &/ "trip_point_0_type"));
+
       For b As Byte = 0 To 63
      Print " = "; Val(RTrim(File.Load(THERMAL &/ th &/ "trip_point_0_temp"))) / 1000; "°)"
+
        If Exist(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_type") Then
       Print
+
          Print "  ("; RTrim(File.Load(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_type"));
 +
          Print " = "; Val(RTrim(File.Load(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_temp"))) / 1000; "°)"
 +
        Endif
 +
       Next
 
     Endif
 
     Endif
 +
    Print
 
   Next
 
   Next
 
   
 
   
 
  End
 
  End
 +
 +
 +
 +
=Riferimenti=
 +
* https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-thermal

Versione attuale delle 08:54, 12 ott 2023

Per controllare la temperatura della o delle CPU con le sole funzioni di Gambas, si devono interrogare i seguenti file (se sono presenti nel sistema):

  • /sys/class/thermal/thermal_zoneX/type

Stringa che rappresenta il tipo di zona termica.
Ad esempio, "acpitz" indica che si tratta di un dispositivo termico ACPI.

  • /sys/class/thermal/thermal_zoneX/temp

Temperatura attuale riportata dalla zona termica (sensore).
Unità: millesimi di grado Celsius.

  • /sys/class/thermal/thermal_zone0/trip_point_X_type

Stringa che indica il tipo di punto di intervento.
Ad esempio, può essere uno dei seguenti: critico, caldo, passivo, 'attivo[0-*]' per la zona termica ACPI.

  • /sys/class/thermal/thermal_zoneX/trip_point_X_temp

La temperatura al di sopra della quale il punto di intervento viene attivato.
Unità: millesimi di grado Celsius.

V'è da sottolineare che i suddetti file non sono presenti in tutte le distribuzioni Linux.

Mostriamo un esempio pratico:

Private Const THERMAL As String = "/sys/class/thermal"

Public Sub Main()

 Dim th As String

 For Each th In Dir(THERMAL, "thermal_zone*", gb.Directory)
   If Exist(THERMAL &/ th) Then 
     Print "\e[1m"; th; "\e[0m"
     If RTrim(File.Load(THERMAL &/ th &/ "type")) = "acpitz" Then Print "ACPI interface"
     Print "Temperatura: \e[31m"; Val(RTrim(File.Load(THERMAL &/ th &/ "temp"))) / 1000; "°\e[0m";
     For b As Byte = 0 To 63
       If Exist(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_type") Then
         Print "  ("; RTrim(File.Load(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_type"));
         Print " = "; Val(RTrim(File.Load(THERMAL &/ th &/ "trip_point_" & CStr(b) & "_temp"))) / 1000; "°)"
       Endif
     Next
   Endif
   Print
 Next

End


Riferimenti