Differenze tra le versioni di "Verificare la frequenza delle CPU con le sole risorse di Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'E' possibile verificare con le sole risorse di Gambas la corrente frequenza di ciascuna CPU leggendo costantemente il file di sistema ''/proc/cpuinfo'' . Mostriamo un possibi...')
 
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 7: Riga 7:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   Dim ss As New String[]
 
   Dim ss As New String[]
   Dim j As Byte
+
   Dim b As Byte
 
   Dim tb As TextBox
 
   Dim tb As TextBox
 
    
 
    
  ss = Split(File.Load("/proc/cpuinfo"), "\n")
+
  ss = Split(File.Load("/proc/cpuinfo"), "\n")
 
 
  For j = 0 To ss.Max
 
    If ss[j] Begins "processor" Then
 
      With tb = New TextBox(Me)
 
        .W = 80
 
        .H = 30
 
        .X = 10
 
        .Y = 2 * (j + 1)
 
        .Alignment = Align.Right
 
      End With
 
      tt.Push(tb)
 
    Endif
 
  Next
 
 
   
 
   
  Me.H = tt[tt.Max].Y + 100
+
  For b = 0 To ss.Max
 +
    If ss[b] Begins "processor" Then
 +
      With tb = New TextBox(Me)
 +
        .W = 80
 +
        .H = 30
 +
        .X = 10
 +
        .Y = 2 * (b + 1)
 +
        .Alignment = Align.Right
 +
      End With
 +
      tt.Push(tb)
 +
    Endif
 +
  Next
 
   
 
   
  For j = 0 To ss.Max
+
  Me.H = tt[tt.Max].Y + 100
    If ss[j] Begins "cpu MHz" Then cc.Push(j)
 
  Next
 
 
 
  With Timer1 = New Timer As "Tempus"
 
    .Delay = 60
 
    .Start
 
  End With
 
     
 
'''End'''
 
 
   
 
   
 +
  For b = 0 To ss.Max
 +
    If ss[b] Begins "cpu MHz" Then cc.Push(b)
 +
  Next
 +
 
 +
  With Timer1 = New Timer As "Tempus"
 +
    .Delay = 60
 +
    .Start
 +
  End With
 +
   
 +
End
 
   
 
   
  '''Public''' Sub Tempus_Timer()
+
  Public Sub Tempus_Timer()
 
   
 
   
 
   Dim ss As New String[]
 
   Dim ss As New String[]
   Dim j As Byte
+
   Dim b As Byte
 +
 
 +
  ss = Split(File.Load("/proc/cpuinfo"), "\n")
 +
 
 +
  For b = 0 To cc.Max
 +
    tt[b].Text = Scan(ss[cc[b]], "*:*")[1]
 +
  Next
 +
 +
End
 +
e un possibile semplice codice in applicazione "a riga di comando":
 +
Private Timer1 As Timer
 +
 +
 +
Public Sub Main()
 +
 
 +
  With Timer1 = New Timer As "Timer1"
 +
    .Delay = 60
 +
    .Start
 +
  End With
 
    
 
    
  ss = Split(File.Load("/proc/cpuinfo"), "\n")
+
End
 
 
  For j = 0 To cc.Max
 
    tt[j].Text = Scan(ss[cc[j]], "*:*")[1]
 
  Next
 
 
   
 
   
  '''End'''
+
   
 +
Public Sub Timer1_Timer()
 +
 
 +
  Dim b As Byte
 +
  Dim s As String
 +
 
 +
  s = "*MHz*: *\n*"
 +
 
 +
  Write "\r \e[31mCPU 1\e[0m " & Scan(File.Load("/proc/cpuinfo"), s)[2]
 +
  For b = 2 To System.Cores
 +
    s &= "MHz\x09\x09: *\n*"
 +
    Write " ║ \e[31mCPU " & b & "\e[0m " & Scan(File.Load("/proc/cpuinfo"), s)[b * 2]
 +
  Next
 +
  Flush
 +
 
 +
End

Versione attuale delle 14:42, 23 set 2023

E' possibile verificare con le sole risorse di Gambas la corrente frequenza di ciascuna CPU leggendo costantemente il file di sistema /proc/cpuinfo .

Mostriamo un possibile semplice codice in ambiente grafico:

Private Timer1 As Timer
Private tt As New TextBox[]
Private cc As New Short[]


Public Sub Form_Open()

 Dim ss As New String[]
 Dim b As Byte
 Dim tb As TextBox
 
 ss = Split(File.Load("/proc/cpuinfo"), "\n")

 For b = 0 To ss.Max
   If ss[b] Begins "processor" Then
     With tb = New TextBox(Me)
       .W = 80
       .H = 30
       .X = 10
       .Y = 2 * (b + 1)
       .Alignment = Align.Right
     End With
     tt.Push(tb)
   Endif
 Next

 Me.H = tt[tt.Max].Y + 100

 For b = 0 To ss.Max
   If ss[b] Begins "cpu MHz" Then cc.Push(b)
 Next
 
 With Timer1 = New Timer As "Tempus"
   .Delay = 60
   .Start
 End With
    
End

Public Sub Tempus_Timer()

 Dim ss As New String[]
 Dim b As Byte
 
 ss = Split(File.Load("/proc/cpuinfo"), "\n")
 
 For b = 0 To cc.Max
   tt[b].Text = Scan(ss[cc[b]], "*:*")[1]
 Next

End

e un possibile semplice codice in applicazione "a riga di comando":

Private Timer1 As Timer


Public Sub Main()
 
 With Timer1 = New Timer As "Timer1"
   .Delay = 60
   .Start
 End With
 
End 


Public Sub Timer1_Timer()
 
 Dim b As Byte
 Dim s As String
 
 s = "*MHz*: *\n*"
 
 Write "\r \e[31mCPU 1\e[0m " & Scan(File.Load("/proc/cpuinfo"), s)[2]
 For b = 2 To System.Cores
    s &= "MHz\x09\x09: *\n*"
    Write " ║ \e[31mCPU " & b & "\e[0m " & Scan(File.Load("/proc/cpuinfo"), s)[b * 2]
 Next 
 Flush 
 
End