Salut j'essaye de faire un écran de monitoring avec un arduino pour mon pc. J'ai vue pas mal de gens le faire sur YouTube et il y'en a un qui me plait mais le programme en python coté pc marche pas 
Si quelqu'un sais pourquoi ça serait sympa
import serial
import time
import wmi
import math
global w
w = wmi.WMI(namespace="root\OpenHardwareMonitor")
global cpu
global gpu
global ram
def getRamSize():
used = 0
free = 0
hw_infos = w.Sensor()
for sensor in hw_infos:
if sensor.SensorType==u'Data':
if sensor.Name == u'Used Memory':
used = int(math.ceil(sensor.Value))
elif sensor.Name == u'Available Memory':
free = int(math.ceil(sensor.Value))
return used + free
def updateHWData():
global w
global cpu
global gpu
global ram
hw_infos = w.Sensor()
cpu = []
gpu = []
ram = ["RAM total: 16GB "]
for sensor in hw_infos:
#print (sensor.SensorType)
#print(sensor.Name)
#print(sensor.Value)
if sensor.SensorType==u'Temperature':
if sensor.Name == u'CPU Package':
cpu.insert(0, "CPU temp: %dC " % sensor.Value)
elif sensor.Name == u'GPU Core':
gpu.insert(0, "GPU temp: %dC " % sensor.Value)
if sensor.SensorType==u'Clock':
if sensor.Name == u'CPU Core #1':
cpu.insert(1, "CPU clk: %dMHz" % sensor.Value)
elif sensor.Name == u'GPU Core':
gpu.insert(1, "GPU clk: %dMHz " % sensor.Value)
if sensor.SensorType==u'Data':
if sensor.Name == u'Used Memory':
ram.insert(1, "RAM used: %.1fGB " % sensor.Value)
def serial_ports():
ports = ['COM%s' % (i + 1) for i in range(256)]
result = []
for port in ports:
try:
s = serial.Serial(port)
s.close()
result.append(port)
except (OSError, serial.SerialException):
pass
return result
arduino = serial.Serial(serial_ports()[1], 9600, timeout=.7)
time.sleep(2)
arduino.write("Waiting for Open HW Monitor ".encode())
time.sleep(0.5)
while len(w.Sensor()) < 1:
time.sleep(1)
cpu = []
gpu = []
ram = ["RAM total: {:2d}GB ".format(getRamSize())]
while True:
#startTime = int(round(time.time() * 1000))
for i in range(4):
updateHWData()
arduino.write(cpu[0].encode())
time.sleep(0.2)
arduino.write(gpu[0].encode())
time.sleep(2)
updateHWData()
arduino.write(cpu[1].encode())
time.sleep(0.2)
arduino.write(gpu[1].encode())
time.sleep(2)
updateHWData()
arduino.write(ram[0].encode())
time.sleep(0.2)
arduino.write(ram[1].encode())
time.sleep(2)
#print ("estimated time: ", int(round(time.time() * 1000)) - startTime)
Erreur :
Traceback (most recent call last):
File "C:\Users\Ulysse\Desktop\16x2Projekt\main.py", line 91, in <module>
arduino.write(cpu[0].encode())
IndexError: list index out of range
Message édité le 04 janvier 2020 à 11:47:33 par Ulysse21_jvc