Permalänk
Medlem

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?

Visa signatur

Windows användare sedan 1991. Numera MacBook Pro M1 Pro.

Permalänk
Medlem

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.

Visa signatur

[Moderkort: Asus TUF X570-Plus Gaming] [Nätagg: Corsair AX 750W]
[Minne: G.Skill Trident Z Neo DDR4 3600MHz 2x16GB] [Grafikkort: ASUS RTX 2070S]
[Processor: AMD Ryzen 7 3700X] [Hårddisk: Corsair Force Series MP510 960GB + SSDs + lagringsdiskar]

Permalänk
Medlem

@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?

Visa signatur

Windows användare sedan 1991. Numera MacBook Pro M1 Pro.

Permalänk
Medlem
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.

Visa signatur

[Moderkort: Asus TUF X570-Plus Gaming] [Nätagg: Corsair AX 750W]
[Minne: G.Skill Trident Z Neo DDR4 3600MHz 2x16GB] [Grafikkort: ASUS RTX 2070S]
[Processor: AMD Ryzen 7 3700X] [Hårddisk: Corsair Force Series MP510 960GB + SSDs + lagringsdiskar]

Permalänk
Medlem

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

Visa signatur

Windows användare sedan 1991. Numera MacBook Pro M1 Pro.