Differenze tra le versioni di "Controllare la temperatura della CPU con le sole funzioni di Gambas"
(7 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 25: | Riga 27: | ||
For Each th In Dir(THERMAL, "thermal_zone*", gb.Directory) | For Each th In Dir(THERMAL, "thermal_zone*", gb.Directory) | ||
If Exist(THERMAL &/ th) Then | If Exist(THERMAL &/ th) Then | ||
− | Print th | + | 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 &/ " | + | 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 | 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