Jump to content

[python] IO16 Callbacks nur wenn der BrickViewer offen ist?


Recommended Posts

Moin zusammen,

 

ich hab hier grade einen etwas merkwürdigen Effekt und wollte mal fragen, ob dass jemand anders zufällig auch schon aufgefallen ist (und ich den passenden Thread übersehen habe).

 

Die Ausgangssituation ist folgende:

- Python 2.7.9 auf Win 7 Pro x64

- Bindings, Daemon und Viewer sind aktuell

- 3x IO16 an einem Master 2.0 mit Ethernet-PoE (Firmware auf alle aktuell)

  - Port a jeweils auf Input

  - Port b jeweils auf Output

 

Das eigentliche Programm orientiert sich am Beispiel für die Interupt Callbacks, die Outputs tun noch gar nichts, die Interups sollen wie im Beispiel auf der Konsole ausgegeben werden.

 

Ich starte das Programm und es tut nichts. Außer, ich habe den Brick-Viewer geöffnet, connected und bin auf dem Tab des IO16 mit dem ich grade teste. -> Dann funktioniert es ganz wunderbar. Wechsel ich auf einen anderen Tab oder disconnecte ist das Thema sofort wieder erledigt. Geht aber auch gerne ein paar mal hintereinander hin und her.

 

Habe zum testen auch schon auf den USB-Anschluss gewechselt und das ganze noch mal mit komplett anderem Master und einem anderen IO16 getestet, auf hier der gleiche Effekt.

 

Zum Testen in einer Linux-Umgebung bin ich leider noch nicht gekommen.

 

Kennt jemand den Effekt oder kann das nachstellen?

 

Beste Grüße

Micha

Link zu diesem Kommentar
Share on other sites

Ich nehme an du hast eine wichtige Zeile im Interrupt Beispiel übersehen:

 

# Enable interrupt on pin 2 of port a
io.set_port_interrupt('a', 1 << 2)

 

Standardmäßig sind alle Interrupts aus. Diese Zeile aktiviert den Interrupt Callback für Pin 2 auf Port A. Wenn du das in deinem Programm nicht konfigurierst dann bekommst du auch keine Callbacks.

 

Es funktioniert aber, wenn du im Brick Viewer den IO-16 Tab auswählst, weil dann der Brick Viewer set_port_interrupt() aufruft um selbst den Interrupt Callback zu verwenden. Wenn du den Tab wieder abwählst stellt Brick Viewer den Interrupt Callback wieder aus.

 

Sprich Brick Viewer kommt laufenden Programmen in die Quere, weil er die Callbacks umkonfiguriert. Darüber sind schon einige Leute gestolpert, daher haben wird das für die nächste Brick Viewer Version umgebaut, so dass Brick Viewer dann Callbacks nicht mehr umkonfiguriert.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...