Seite 1 von 1

py Scripte ins Hauptprogramm einbinden mit Fehlern

Verfasst: Donnerstag 19. Januar 2023, 16:08
von Bengele
Hallo,
ich versuche gerade zwei Py Unterprogramme in ein Main Programm ein zu binden.
Dabei komme ich nicht weiter, da immer die gleiche Fehlermeldung kommt (siehe unten).
Die Unterprogramme alleine laufen ohne Probleme. Nur in Verbindung mit dem Main Programm habe das Problem.
Eine weitere Aufgabe die ich beweltigen muss, ist die Stromausgabe (Daten) des SiliconLabs.
Es muss eine Möglichkeit geben die Ausgabedaten des SiliconLabs in mein Main Programm weiter zu verarbeit oder in eine Variable zu bekommen.


Hier mein Versuch:
-------->1. Unterprogramm ruft ein Strommessung.py (SiliconLabs und soll eine Spannung/Leistung/Stom ausgeben) auf:

import subprocess
subprocess.run(["commander", "aem", "measure", "–-timestamp", "--serialno", "440273585"])

------>2. Unterprogramm ruft ein Firmware_Loader.py (JLink Programmieradapter) auf:

import subprocess

def main():
try:
subprocess.run(
["commander", "flash", "test-file.hex", "-d", "EFR32BG22", "--serialno", "821007470"],
cwd="G:/Kunden/Interflex/1106219979A 02-11071-01Ba I_O Connector SRP/Firmware/Firmware",
check=True,
)
except subprocess.CalledProcessError:
print("flash error")
else:
print("flash ok")


if __name__ == "__main__":
main()

-------> Beide Programme werde im Main.py aufgerufen mit:

import subprocess
from Strommessung import *
from Firmware_Loader import *
subprocess.run("Strommessung", shell=True)
subprocess.run("Firmware_Loader", shell=True)


--> Nachdem das Main Programm abgearbeitet wurde kommt folgendes Ergebnis heraus:

Averaged over 100 ms:
Current [mA]: 0.000111
Power [mW] : 0.000366
Voltage [V] : 3.314
DONE

Der Befehl "Firmware_Loader" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "Strommessung" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Process finished with exit code 0


-------> Was könnte da machen????

Gruß

Re: py Scripte ins Hauptprogramm einbinden mit Fehlern

Verfasst: Donnerstag 19. Januar 2023, 16:11
von __deets__
subprocess.run ist zum starten von Prozessen. Nicht zum starten beliebiger Python-Funktionen. Die ruft man einfach auf, ggf. muss man sie dafuer erst importieren. Aber ich wuerde mal behaupten, dass bischen Code hier rechtfertigt ueberhaupt nicht den Aufwand, da mehrere Dateien anzulegen.

Re: py Scripte ins Hauptprogramm einbinden mit Fehlern

Verfasst: Donnerstag 19. Januar 2023, 16:19
von __blackjack__
Ergänzend: ``shell=True`` sollte man nicht verwenden weil man sich damit die gleichen Probleme einhandelt wegen denen man `subprocess` und nicht `os.system()` verwenden sollte. Wäre auch in beiden Fällen gar nicht nötig, wenn es sich um externe Programme handeln würde.

Re: py Scripte ins Hauptprogramm einbinden mit Fehlern

Verfasst: Sonntag 22. Januar 2023, 21:22
von Bengele
Danke für die Erklärungen.
Es ist auch kein muss, dass die beiden Py Programme seperat ausgeführt werden. Ich wollte dies einfach mal probieren.

Danke für die Hilfe.