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
- Idag Rykte: Switch 2 grejar högre bildfrekvenser 9
- Igår Nästa generations Intel-processorer får nya modellnummer 66
- 1 / 5 Del 1: Windows-kommandon du måste kunna 21
- 1 / 5 Switch 2 ryktas få magnetiska Joy-Cons: Så kan det fungera 21
- 1 / 5 Testpilot: Phanteks XT Pro Ultra – Prisvärt och modernt chassi 2
Mjukvara
Datorkomponenter
Ljud, bild och kommunikation
- Rekordmånga deklarerade skatt digitalt 20248
- Så snabbt hittar RTX 4090 lösenordet53
- Bilder på ditt senaste inköp (2024) [inga produktbilder]580
- LegoClockers - Samlingstråd för allt med Lego642
- Windows 10 fortsätter dra till sig nya användare76
- Tråden för hörlursgalningar! Lurar, förstärkare, dacs, pads osv osv It´s all here!19855
- Dagens fynd (bara tips, ingen diskussion) — Läs första inlägget först!18449
- Herman Miller X Logitech G Embody Gaming Chair, recension?119
- Får ej mer än 15fps i fallout 4 (next gen)5
- Övriga Fynd – Diskussionstråd1295
- Säljes Speldator/Gamingdator
- Säljes tyst och sval Speldator
- Säljes 75" Neo QLED QN900D 8K Smart TV (2024)
- Säljes ASUS TUF GeForce RTX 3070 8GB Gaming OC
- Säljes Thermalright Assassin X 120R SE Plus (2xTL-C12 fläktar)
- Skänkes Behringer Xenyx Q502 USB och Phantom Power injector
- Säljes Nedgraderingskit (i5-6600, GA-H170N-WIFI, 2x8GB DDR4, GTX 760, FD Tesla 650W)
- Säljes Wooting 60HE (ABS keycaps)
- Säljes Nytt RTX 4070 Ti Super 16GB & liten garderobsrensning (SSD:s, RAM)
- Säljes Zyxel Nebula NR5101 5G router & Poynting XPOL 5G antenn
- Rekordmånga deklarerade skatt digitalt 20248
- Rykte: Switch 2 grejar högre bildfrekvenser9
- Så stoppar Telia och Tre fulstreaming53
- Svenskt universitet utsatt för cyberattack13
- Nu kan du logga in på Microsoft-konton med nycklar16
- Så snabbt hittar RTX 4090 lösenordet53
- Sjukvården i Kronoberg får kritik för AI-journaler52
- Windows 10 fortsätter dra till sig nya användare76
- Fanboy-quiz: Vad kan du om Nintendo?101
- Netflix tvingar Basic-kunder att byta till dyrare abonnemang34