Python-Code wird nicht durchlaufen bei Start via bash

Rund um die Software von Revolution Pi
Post Reply
maschbauerkl
Posts: 3
Joined: 15 Sep 2023, 11:47

Python-Code wird nicht durchlaufen bei Start via bash

Post by maschbauerkl »

Ich habe eine Frage hinsichtlich eines sehr seltsamen Verhaltens meines Revolution Pis. Und zwar folgender sehr einfacher Software-Code:
Ein Schrittmotor soll eine bestimmte Zeit lang laufen, bis er eine definierte Position erreicht hat, anschließend abschalten. Das ganze via Python, um als Teil eines größeren Projekts zu funktionieren.
Folgende Zeilen Code sind die entscheidenden:

Code: Select all

while time.time() < t_end:
     rpi.io.PWM_1.value = 50
     rpi.io.O_2.value = 1
else:
    rpi.io.PWM_1.value = 0
Das Verrückte ist, starte ich den Code aus VS Code heraus mit dem Debugger funktioniert alles prima. Starte ich manuell via Konsole mit "python3 function.py", dann stoppt der Motor nicht, obwohl die letzte Codezeile durchlaufen wird, denn eine print-Anweisung, die ich testweise mal reingesetzt hatte, die wird angezeigt.

Hat jemand von euch schonmal ein solches Verhalten gesehen? Bug oder Feature? :D
User avatar
RevPiModIO
KUNBUS
Posts: 347
Joined: 20 Jan 2017, 08:44
Contact:

Re: Python-Code wird nicht durchlaufen bei Start via bash

Post by RevPiModIO »

Hi, ich kenne zwar nicht den ganzen Code von dir, aber ich könnte mir vorstellen, dass du beim RevPiModIO autorefresh=True verwendest. Wenn dies so ist, dann MUSST du vor Programmende ein [name_von_modio_instanz].exit() aufrufen. Das stellt sicher, dass gesetzte Ausgänge noch einmal sicher geschrieben werden.

Wenn du mit dem Debugger arbeitest, dann läuft das alles so "langsam", dass er es noch schafft die Ausgänge in das Prozessabbild zu schreiben.

Gruß
Sven
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
epederson
Posts: 1
Joined: 22 May 2025, 22:49

Python-Code for generating a pulse

Post by epederson »

Hello,

Along this same lines; were able to get PWM to work in PiCtory. However, what we really need is to have an output through the MIO sit at 5V and then go to 0V for 1 millisecond and then back to 5V using python3.

We attempted to write code like the following:

Code: Select all

rpi.io.DigitalOutput_3.set_value(1)
start_time = monotonic()
while (monotonic() - start_time) < 0.001:
    pass
rpi.io.PulseLength_3.set_value(0)

rpi.exit()
However, it appears we are not able to write to some variables that we see in PiCtory. In particular, the variables of type Mem/IO are read-only:

Code: Select all

Name: PulseLength_3                                                                                  
Type: <class 'revpimodio2.io.MemIO'>
Value/Details: PulseLength_3  
Is there a way to control these variables so we might get the 0V pulse were looking for using python3 code?

PS: I'd like to create my own post but the forum told me I need to participate in more questions before I can post.
Post Reply