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ß
py Scripte ins Hauptprogramm einbinden mit Fehlern
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.
- __blackjack__
- User
- Beiträge: 13533
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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.
Code: Alles auswählen
- (void)countSheep {
unsigned int sheep = 0;
while ( ! [self isAsleep]) { ++sheep; }
}