Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
Search
Locked Clear an active EntryExit pair using jython script
Hi,
Do anyone have an jython example how to clear an EntryExit pair? I have tried to get all pairs using?getEntryExitList() but get error: TypeError: getEntryExitList(): expected 1 args; got 0
In doc (http://jmri.sourceforge.net/JavaDoc/doc/jmri/jmrit/entryexit/EntryExitPairs.html) it does not have an argument. I've tried to put in the panel as argument than I get error: TypeError: getEntryExitList(): self arg can't be coerced to jmri.jmrit.entryexit.EntryExitPairs
I'm using jmri 4.10 with java 1.8.0_181 Benny Tj?der |
Python vs Java syntax can be confusing. The JavaDocs are in Java syntax, but Python (often, but not always) expects an additional ¡°self¡± argument that comes from calling it on an object, i.e. something.foo() ends up calling (in Python) foo(something)
The second error below is because you¡¯re calling getEntryExitList on something that isn¡¯t of type jmri.jmrit.entryexit.EntryExitPairs but rather something else. Try this: ee = jmri.InstanceManager.getDefault(jmri.jmrit.entryexit.EntryExitPairs) print ( ee.getEntryExitList() ) Bob On Aug 5, 2018, at 1:21 PM, Benny Tj?der <etxbct@...> wrote: -- Bob Jacobsen rgj1927@... |
Benny,
toggle quoted message
Show quoted text
To expand on Bob¡¯s example, this includes clearing a route segment. import java import jmri eep = jmri.InstanceManager.getDefault(jmri.jmrit.entryexit.EntryExitPairs) for destPoint in eep.getNamedBeanSet(): ? ? print destPoint ? ? if destPoint.getState() == ACTIVE: ? ? ? ? print ' ? ?clear it' ? ? ? ? eep.setSingleSegmentRoute(destPoint.getSystemName()) Dave Sand On Aug 5, 2018, at 3:50 PM, Bob Jacobsen <rgj1927@...> wrote: |
Thanks for a quick answer. I got this working: import java import jmri eep = jmri.InstanceManager.getDefault(jmri.jmrit.entryexit.EntryExitPairs) #print ( eep.getEntryExitList() ) for destPoint in eep.getNamedBeanList(): ? ? if destPoint.getState() == ACTIVE: ? ? ? ? print destPoint ? ? ? ? print destPoint.getSystemName() ? ? ? ? print '? ? clear it' ? ? ? ? eep.setSingleSegmentRoute(destPoint.getSystemName()) But last row is not implemented in 4.10 (since4.11.1) The output I get if I put a comment mark on last line is: >>> import java ... import jmri ...? ... eep = jmri.InstanceManager.getDefault(jmri.jmrit.entryexit.EntryExitPairs) ... #print ( eep.getEntryExitList() ) ...? ... for destPoint in eep.getNamedBeanList(): ...? ? ?if destPoint.getState() == ACTIVE: ...? ? ? ? ?print destPoint ...? ? ? ? ?print destPoint.getSystemName() ...? ? ? ? ?print '? ? clear it' ... #? ? ? ? eep.setSingleSegmentRoute(destPoint.getSystemName()) jmri.jmrit.entryexit.DestinationPoints@ee26d8ff ae2e9664-5541-4c5e-8412-451de18c57ea ? ? clear it So is there a way to clear it in 4.10? /Best Regards Benny Den s?n 5 aug. 2018 kl 23:13 skrev Dave Sand <ds@...>:
|
Benny,
toggle quoted message
Show quoted text
The ¡°setSingleSegmentRoute" method was added to support new Logix actions. You ¡°might¡± be able to get it to work by simulating the NX sensor button clicks. Since there are a lot of issues with 4.10, I recommend that you use 4.12. Dave Sand On Aug 6, 2018, at 6:33 AM, Benny Tj?der <etxbct@...> wrote: |
to navigate to use esc to dismiss