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
- Idag Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin 19
- 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
Datorkomponenter
Ljud, bild och kommunikation
- Ubiquiti Unifi2796
- Dålig prestanda.3
- Microsoft visar upp Copilot Plus PC29
- Vad spelar du för tillfället?1150
- Surface-tangentbord med AI-knapp kostar 5 000 kronor25
- Uppgraderingspaket till sambo0
- Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin19
- Vad har ni i lön?13060
- Jepp Diablo laggar.även andra pc?!?14
- Komplett.se a152 för 11990 kr. Är det bästa dealen?33
- Skänkes Chassidelar och skrot SKÄNKES kanske för test bench bygge?
- Säljes Linksys Velop WIFI 6 1-pack
- Säljes Speldator - i9-9900k, 3070, 16GB
- 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!
- Sonos gör hörlursdebut med Sonos Ace9
- Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin19
- Surface-tangentbord med AI-knapp kostar 5 000 kronor25
- Noctua lanserar Home – fläktlösningar för hemmet39
- Microsoft visar upp Copilot Plus PC29
- Studenter hittar sårbarhet i tvättautomater – företaget ignorerar varningar18
- Se Windows XP infekteras på minuter utan skydd45
- Detta gäller när HBO Max blir Max80
- Delning av skadlig kod via PDF-filer ökar22
- SweClockers får efterlängtade forumfunktioner40
Externa nyheter
Spelnyheter från FZ
- Kingdom Hearts till Steam, efter tre års Epic-exklusivitet idag
- Se Microsofts AI-tjänst guida (en noob vid) Minecraft-spelande idag
- Embracer säljer Switch-utvecklaren Shiver till Nintendo idag
- CoD till Game Pass innebär "förändrad" Game Pass-modell, påstås det idag
- Take-Two är "väldigt säkra" på GTA 6:s släppfönster idag