Bara gammalt skräp...
Organisera kod/program -python
Visa signatur
Jag kan i princip inget om Python, men det bör väl finnas någon typ av "Collections" som du kan använda för att organisera alla dessa variabler och sedan bara skicka denna "Collection" till funktionerna.
Jag gjorde en snabb sökning på Google och det finns ju t.ex namedtuple som du kanske kan använda.
(I t.ex C/C++ hade jag kanske använt en struct i ditt fall).
Jag skulle råda till att tänka mer objektorienterat och designa om programmet för att minska antalet globala variabler.
Citera flera
Citera
Ja nu när du säger det så skulle jag säkert kunna minska de globala variablarna drastiskt.
Här är min settings-fil:
---General options---
serial activated = False
detailed info = True
serial adress = /dev/ttyACM0
Force calibration = False
Calibration offset = 2.0
---Pin layout---
X step pin = 1
X dir pin = 2
X enable pin = 3
Y step pin = 4
Y dir pin = 5
Y enable pin = 6
Z step pin = 7
Z dir pin = 8
Z enable pin = 9
X sensor pin = 10
Y sensor pin = 11
Z sensor pin = 12
---Axis options---
X pitch = 5
X micro step = 4
X steps per revolution = 200
X direction = 1
Y pitch = 5
Y micro step = 4
Y steps per revolution = 200
Y direction = -1
Z pitch = 5
Z micro step = 4
Z steps per revolution = 200
Z direction = -1
X length = 200
Y length = 300
Z length = 100
---Speed options---
Max speed = 1000
Acceleration = 200
Deacceleration = 200
Dold text
Alla dessa värden lägger jag i globala variabler i dagsläget i min huvudfil. Vissa av värdena använder jag endast en gång så det är väl lite onödigt när man tänker efter. Sen så skulle jag ju faktiskt kunna hämta värdena igen inne i funktioner(de jag behöver) för att slippa skicka med dessa vid funktions-anrop. De ligger ju som "globala" variablar i filen egentligen om man tänker efter...
Men om jag har låt oss säga n filer, main.py, serial_handling.py, n+1.py, n+2.py, n..py
Om jag då i main.py anropar en funktion i serial_handling.py som skapar ett objekt(i detta fall en seriell connection till min Arduino).
Kan jag då senare i main.py anropa en funktion i serial_handling som skickar data över seriellt gränssnitt. Ligger objektet kvar i "minnet" då.
och vidare anropa samma funktion i filen n.py
Exempel med lite pseudokod hur jag skulle vilja ha det:
main.py:
import serial_handling as sh
import n
sh.setupConnection()
sh.writeMessage("Hej")
n.sendMessage("Hej från n.py")
serial_handling.py:
def setupConnection():
#Detta vill jag endast göra en gång under hela tiden som programmet körs.
#Gör vi detta mer än en gång så startar Arduinon om vilket är dåligt...
import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
def writeMessage(sendThis):
ser.write(sendThis)
n.py:
import serial_handling as sh
def sendMessage(message):
sh.writeMessage(message)
Det har säkert blivit något fel här men vad jag skulle vilja lösa är ovanstående case. Om jag får en lösning på detta skulle jag bli glad då jag misstänker att detta inte skulle fungera i dagsläget då den skulle klaga på att "ser" inte existerar eller något sådant...
Visa signatur
Bara gammalt skräp...
Citera flera
Citera
Det kanske är dags att gå över till objektorienterat för att lätta upp trycket lite vid underhåll/påbyggnad.
Visa signatur
Mh-hm!
Citera flera
Citera
Hårdvara
Mjukvara
- 19 / 5 Ghost of Tsushima kan använda DLSS och FSR 3 samtidigt 11
- 17 / 5 27 år senare – Winamp får öppen källkod 45
- 17 / 5 Grafikprestanda i Ghost of Tsushima – en välpolerad PC-version 28
- 17 / 5 Microsoft: Byt till Bing om du vill reparera din dator 39
- 17 / 5 Grand Theft Auto VI släpps hösten 2025 44
Datorkomponenter
Ljud, bild och kommunikation
- Delning av skadlig kod via PDF-filer ökar21
- Surface-tangentbord med AI-knapp kostar 5 000 kronor12
- Priskoll på dator med 1080ti och i7/7700K0
- BSOD när spelen kräver prestanda.1
- Samlingstråd LG OLED 2023 (A3/B3/C3/G3/Z3)763
- Ubiquiti Unifi2795
- Telia 5G med Nokia Fastmile 5G antenn rakt in i Ubuquiti USG10
- Detta gäller när HBO Max blir Max73
- Hjälp med RGB-hubb "pccooler C3 T500"13
- Microsoft event med Qualcomm Snapdragon X19
- Säljes Bose Noise Cancelling Headphones 700
- Säljes 2 detskops Hp omen (3080) (1060)
- Säljes Speldator i7-7700k, 16GB, 1080TI 11GB, WIFI
- Säljes Asus ROG 27" 165Hz IPS PG279Q
- Säljes Gaming pc - 5800X3D - 6950XT - HYTE Y40
- Säljes Grym speldator med I9-10850K 32GB 3060TI
- Köpes Razer Core X Chroma Köpes!
- Säljes HP Notebook 14-dk0803no / AMD Ryzen / Win 11
- Säljes razer huntsman mini
- Säljes Ubiquiti unifi dream machine / 2x unifi ap ac pro
- Surface-tangentbord med AI-knapp kostar 5 000 kronor12
- Noctua lanserar Home – fläktlösningar för hemmet29
- Microsoft visar upp Copilot Plus PC16
- Studenter hittar sårbarhet i tvättautomater – företaget ignorerar varningar14
- Se Windows XP infekteras på minuter utan skydd37
- Detta gäller när HBO Max blir Max73
- Delning av skadlig kod via PDF-filer ökar21
- SweClockers får efterlängtade forumfunktioner39
- Moddat 4070 Ti Super snabbare än 4080 Super27
- Snabbkoll: Delar du ditt streamingkonto?63