Trädvy Permalänk
Medlem
Plats
Timrå
Registrerad
Okt 2004

Behöver hjälp med Python

Tjo! Håller på att leker lite med en Pi & Sense HAT. Så här ser koden ut än så länge: http://pastebin.com/eV96ZMgj

Den andvänder sensorerna, samt skriver ner värdena i en fil. Dock att få värdena i en fil varje gång loopen körs känns lite overkill, någon som har tips på något smiditgt sätt man skulle kunna göra så att den bara skriver till filen en gång i timmen t.ex?

Z270 Gaming Pro Carbon | Intel Core i5-7600k | Cooler Master Hyper 212 EVO | MSI 1070 FTW Gaming | 2x8GB Corsair Vengeance

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Apr 2006

En enkel lösning är väl att lägga in någon form av tidsräknare i while-loopen. T.ex. en variabel t0 som initialiseras först utanför loopen som lagrar starttid (sätt den till nuvarande klockslag eller dylikt). Sätt en if-sats runt writfile-funktionsanropet som är true omm nuvarande tid och t0 skiljer sig med mer än en timme. I kroppen av if-satsen kan du sedan sätta ursprungstiden till nuvarande tid och anropa writfile.

[Moderkort: MSI Z68A-GD55 G3 B3] [Nätagg: Corsair AX 750W]
[Minne: 8GB Corsair Vengeance 1600Mhz] [Grafikkort: ASUS GTX 970]
[Processor: i5 2500k @ 4.5GHz (1.2850V) med H100-kylning] [Hårddisk: Samsung 840 Basic 250GB + lagringsdiskar]

Trädvy Permalänk
Medlem
Plats
Timrå
Registrerad
Okt 2004

@EagiZ: Kanske missförstår dig, men jag vill ändå att den printar ut till konsolen. Bara "writefile" funktionen jag vill köra då och då. Göra som du säger skulle väl delaya hela loopen?

Z270 Gaming Pro Carbon | Intel Core i5-7600k | Cooler Master Hyper 212 EVO | MSI 1070 FTW Gaming | 2x8GB Corsair Vengeance

Trädvy Permalänk
Medlem
Plats
Uppsala
Registrerad
Apr 2006
Skrivet av Tott3:

@EagiZ: Kanske missförstår dig, men jag vill ändå att den printar ut till konsolen. Bara "writefile" funktionen jag vill köra då och då. Göra som du säger skulle väl delaya hela loopen?

Ja, då missförstår du. Sätt enbart if-satsen runt writfile-anropet så att den enbart körs när tiden mellan föregående filskrivning och nuvarande tid är mer än en timme. Allt annat körs som vanligt.

Pseudo-kod:

t0 = time.now() # Ingen aning om detta finns inbyggt i Python btw (googla) while True: # Variabler och annan kod consoleprint() # See function if (time.now() - t0 > 1h): # Skiljer sig tiden med mer än 1h? t0 = time.now() # "Resetta" t0 writfile() # See function matrixprint() # See function

Du får ersätta time.now() etc med något som finns i Python, finns garanterat.

[Moderkort: MSI Z68A-GD55 G3 B3] [Nätagg: Corsair AX 750W]
[Minne: 8GB Corsair Vengeance 1600Mhz] [Grafikkort: ASUS GTX 970]
[Processor: i5 2500k @ 4.5GHz (1.2850V) med H100-kylning] [Hårddisk: Samsung 840 Basic 250GB + lagringsdiskar]

Trädvy Permalänk
Medlem
Plats
Timrå
Registrerad
Okt 2004

@EagiZ: Då är jag med! Tack så mycket, ska ta och testa imorgon så får vi se hur det slutar

Z270 Gaming Pro Carbon | Intel Core i5-7600k | Cooler Master Hyper 212 EVO | MSI 1070 FTW Gaming | 2x8GB Corsair Vengeance