Keyboard Shortcuts
Likes
- Jmriusers
- Messages
Search
George, That is an interesting question. Here is a simple LogixNG. ?It waits for a sensor state change and then replicates that change to another sensor. ? Here is the same logic using Jython.
Here is the console log output.
There is extra overhead to capture the run times. ?There is also some "first time" overhead. Of course, there will be differences depending on the actual logic. ?Another issue is selecting how to implement the logic. For example, the LogixNG uses the "Listen on beans" action. ?This is very efficient. ?This can also be done using a a very long if-then-else-if statement. ?This would not be efficient. I have not seen any noticeable differences in performance. Dave Sand ----- Original message ----- From: "George Hofmann via groups.io" <george.hofmann=[email protected]> Subject: [jmriusers] LogixNG vs Jython performance #logixng #jython Date: Tuesday, March 18, 2025 10:00 AM I'm just starting to delve into LogixNG. It certainly looks ingenious and powerful. But I wonder, how does it compare in performance to performing the same tasks in a Jython program? Is there any overhead? ? Thanks George |
Re: Extra storage for C/I tracks
#operationspro
On Tue, Mar 18, 2025 at 03:05 PM, Bill Rutherford wrote:
I also want some extra storage space available to each C/I track so if a given track has 8 car spots available but 10 cars that should be placed on the C/I track the software has somewhere to put them. Bill,
?
One solution is to pool your C/I tracks with "general storage".? You would set the minimum track length for each C/I track to 8 cars.? Now if the program needs more, it can grab the space from general storage.? Your operators seeing that there are already 8 cars on the C/I track would simply place the cars on the general storage track.? The program will think the cars are on the C/I track.? Now when it comes time to pull the cars from the C/I track, your operators won't find all of the cars sitting there, some can be found on the general storage track.? You would provide instructions to look in the general storage track when cars aren't spotted on the correct C/I track.? The benefit of this solution is that the "extra" track space is limited to whatever "general storage" is, and can be shared with all C/I tracks, or not.? No need to run an extra train, just to move the cars from general storage directly into the train demanding the cars.
?
Another way to organize your C/I yard, is having sets of cars grouped by destination anywhere in your yard, and the program will automatically adjust the length needed if you pool them together.? So rather than thinking this physical track is for cars going to X, you instead organize your tracks by groups of cars going to certain destinations.? Sometimes it will be physical track 1 going to destination X, and sometimes track 2, 3 etc. going to destination X depending on car space requirements.? You'll need some sort of system to keep track of the groups of cars.? Could be as simple as a small white board, or magnet board with markers, or cards.
?
Dan |
Re: Print Car List
#operationspro
I would have thought so also but it isn't an option in the show cars window from a location. |
Re: Labels in JMRI Roster
开云体育Heath, My two cents. ? BLI decoders (Paragon) only show up in BLI locomotives and the difference between steam and diesel can be determined. BLI has a common assignment for functions that they use. ? This is not the case for ESU decoders which could be in any manufacturer’s loco and the same decoder can be used for both steam and diesel. Just look at the differing use of functions among the loco manufacturers that use ESU decoders. Not to mention the difference between use of functions in the EU versus US. ? Mark Granville |
Print Car List
#operationspro
When editing a location there is an option to show cars under the tools menu.
?
Is there a way to print the list from JMRI once it loads?? Right now I am taking a screen shot, pasting it into another software and printing it that way
?
?
Thanks in advance!
|
Extra storage for C/I tracks
#operationspro
I have a yard setup with 8 C/I tracks for various next destinations so we can sort cars as they come into the yard.
?
I also want some extra storage space available to each C/I track so if a given track has 8 car spots available but 10 cars that should be placed on the C/I track the software has somewhere to put them.
?
To make it more complicated lets assume that the outbound train can only handle eight cars
?
So, ten cars come into the yard for Woodsville.? Eight go onto the Woodsville C&I track and the other two go into "general storage"
?
When the time comes for the Woodsville train it grabs the eight from the C/I track, freeing up room for the other two cars to be placed on the C/I track for the next train.
?
A yard job then runs and puts the two from general storage onto the Woodsville C/I track
?
Two questions:
What would the real railroad do? Is there a way to accomplish either my idea or the prototype solution in JMRI?
?
Thanks! |
Re: The future of control and automation - thoughts?
You should check out LCC (Layout Command Control):
/g/layoutcommandcontrol This is a "network" of MCUs (and possibly SBCs) connected via a CAN (Community Area Network), Ethernet, and WiFi. It is a peer-to-peer network meant to operate autonomously (eg without "computer control" -- generally meaning with a master central "PC" running JMRI or something like that). At Tue, 18 Mar 2025 11:41:45 -0700 "peterparsons.pub via groups.io" <peterparsons.pub@...> wrote: -- Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364 Deepwoods Software -- Custom Software Services -- Linux Administration Services heller@... -- Webhosting Services |
The future of control and automation - thoughts?
All,
?I am still quite new to DCC model railroading - working on a trial N scale layout with about 18 blocks, 4 trains etc, controlled with JMRI etc.? THe learning curve, and some frustrations with Digitrax, loconet, and JMRI 'steep' learning curve have me wondering what the future (near and longer term) of control may look like?
(and I am a career chip design engineer currently trying to learn about AI topics for electronics design- so a bit of an electronics nerd).
?
So I am eager to hear from the prognosticators, naysayers, and visionaries on this group. Are there big technology changes coming in the near and mid term??
?
?
Perhaps I am being too geeky - I really like the real time operations and control challenges with this so far - and am just starting to think about the aesthetics - of scenery and themes.?
?
Thoughts? - or point me to the dark corners where this discussed!
-Peter
?
? |
Labels in JMRI Roster
Why when adding a BLI locomotive are labels automatically imported, but when adding a locomotive with an ESU decoder there are not any labels.
Is this in the decoder default mapping and is this something that can be updated? I really do not want to have to manually enter all the labels on every locomotive with an ESU decoder. ?
Or is this operator error?
--
Heath @ Human[c]ity |
Re: Current state of DMX support on Apple Silicon Macs?
#mac-m1
#powerline
TLDR: I’ve done a little more work on why JMRI’s USB HDI support, used by e.g. the Anyma DMX support, doesn’t work in native mode on Apple Silicon. We _do_ have a version of that code that should work natively, but it’s not working on my M1 Mac. Is this due to an improper setup on my part, or something broken in the .jar JMRI uses? I could use some help sorting that out from somebody who understands dynamic linking on the Mac in Java. Please contact me off list if you can help. Thanks!
Longer: When the Apple Silicon version used by JMRI fails to load, we get this: [java] 16:19:03,132 mri.jmrix.AbstractUsbConnectionConfig ERROR - UnsatisfiedLinkError - the serial library has not been installed properly [AWT-EventQueue-0] [java] 16:19:03,132 mri.jmrix.AbstractUsbConnectionConfig ERROR - java.library.path=/Users/jake/Documents/Trains/JMRI/projects/JMRI:/Users/jake/Documents/Trains/JMRI/projects/JMRI/lib/macosx/aarch64:/Users/jake/Documents/Trains/JMRI/projects/JMRI/lib/macosx:/Users/jake/Documents/Trains/JMRI/projects/JMRI/lib [AWT-EventQueue-0] [java] 16:19:03,132 mri.jmrix.AbstractUsbConnectionConfig ERROR - Exception is {} [AWT-EventQueue-0] [java] java.lang.UnsatisfiedLinkError: /private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib: dlopen(/private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib, 0x0001): Library not loaded: /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib [java] Referenced from: <D242CF53-6770-32AD-BCF1-717B7A28DDA7> /private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib [java] Reason: tried: '/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/usr/lib/libusb-1.0.0.dylib' (no such file, not in dyld cache) [java] at jdk.internal.loader.NativeLibraries.load(Native Method) ~[?:?] [java] at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388) ~[?:?] [java] at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232) ~[?:?] [java] at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174) ~[?:?] [java] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2394) ~[?:?] [java] at java.lang.Runtime.load0(Runtime.java:755) ~[?:?] [java] at java.lang.System.load(System.java:1953) ~[?:?] [java] at org.usb4java.Loader.load(Loader.java:323) ~[usb4java-1.3.0.jar:?] The line about "the serial library has not been installed properly” is from a JMRI error handler, so I don’t think that really means much. These lines seem to be the core of the problem: [java] 16:19:03,132 mri.jmrix.AbstractUsbConnectionConfig ERROR - Exception is {} [AWT-EventQueue-0] [java] java.lang.UnsatisfiedLinkError: /private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib: dlopen(/private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib, 0x0001): Library not loaded: /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib [java] Referenced from: <D242CF53-6770-32AD-BCF1-717B7A28DDA7> /private/var/folders/b5/7f3mtqj55fd7pxzhnckz68nh0000gn/T/usb4java12025525072169804161.tmp/libusb4java.dylib [java] Reason: tried: '/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib' (no such file), '/usr/lib/libusb-1.0.0.dylib' (no such file, not in dyld cache) I _think_ those mean that the jar-contained org/usb4java/darwin-aarch64/libusb4java.dylib library was found and loading started, but then the process failed when that in turn tried to access /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib But I don’t have a /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib file, or anything close to that. There’s not even a /opt/homebrew/opt, let alone the rest of the path. It seems that the org/usb4java/darwin-aarch64/libusb4java.dylib in the .jar file has that string baked in. I do have a file by that name at a different path. Homebrew decided to install it at /usr/local/Cellar/libusb/1.0.27/lib/libusb-1.0.0.dylib If I make a symbolic link from /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib to the file I have, then the file gets found (yeah!), but we get a new error because that file has x86_64 architecture (??) % file /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib: Mach-O 64-bit dynamically linked shared library x86_64 I _think_ when I copied my system from my previous Intel machine, all the Intel-format libraries were copied over and are still here. But I don’t know what to do about this. Anybody have any ideas? If so, perhaps contact me off list. This is getting quite technical. Thanks in advance! Bob On Mar 16, 2025, at 5:19?PM, Paul Anderson via groups.io <paul@...> wrote:— Bob Jacobsen rgj1927@... |
Re: PanelPro Startup
开云体育Dave Start JMRI under the new profile just created. FRom the start screen,go "Edit>Preferences" Choose "File Locations" from the list on the left (3rd down) The top right boxes should then have the locations relating to the new profile, so click "set" and then from the "Select Directory" box use the navigation up and down to find the directory relating to your original profile. Click that and it should appear in the box. Then Save (Bottom left) and restart. You should then be able to access your "Old" panel through the "New" profile. Brian Clark Bedford UK On 18/03/2025 07:03, David Smith via
groups.io wrote:
|
Re: How to make multiple trains chase each other
#automation
#dispatcher
Scott,
Based on an example from I thought Dave Sand: transit_chaining.py , with thanks for that,? I wrote a modified script in Python.?
This resulted in two python scripts, controlling my trains.? First script is Transits_SPV23.py, always running.? In this script you create a separate transit list for each train. This contains the transit list, the train info file and the waiting time between the transits in seconds. From this file the trains are started by means of a sensor. (Start-train). Then a separate Python script is started for each train. This script ensures that the trains run automatically under Dispatcher.?If desired you can modify the scripts. For example by replacing the start sensors with a time table.
Enclosed a screen image of layout panel in which train 515_m1 is running.
And also three python scripts as an example. Hope that this will help you.
?
Best regards? Willem
Almere, the Netherlands.?
?
? keten_ACTS.py
keten_ACTS.py
keten_VT209.py
keten_VT209.py
Transits_SPV23.py
Transits_SPV23.py
![]()
Schermafbeelding 2025-03-18 144706.png
|
Re: How to make multiple trains chase each other
#automation
#dispatcher
Assuming there are no issues with contiguous blocks, sections verified, and real/virtual signals (if used) working, then:
Each train should have its own transit, even if each follows the same route.
Two trains cannot use the same transit at the same time.
?
As a rule, I always use a traininfo file and transit pair to define a unique train run.
That keeps things from becoming confused.
?
Mostly I use each run as "to safe sections", especially when I have passing movements.
For reversing movements on the main, I sparingly use "as far as".
?
I can't stress enough that you treat each train movement as choreography.
Walk each movement through logically and in concert with every other train's interaction.
Automation is more of a dance routine than just pressing the "go" button and watch what happens.
--
Ken NYNH&H, Old Colony Division, Cape Cod Branch (1949-1959) Loconet * JMRI 5.11.1 * OSX,Win10,Ubuntu Blog: ?
Youtube:
|
Re: Making a plant switcher work correctly
#operationspro
I think I got it!! We are moving cars from interchange drawers to ADM Pass. Then ADM pass to the spurs, yard tracks and C/I tracks. Then to Yard Lead and back to Interchange Drawers.. Seems to be working.
Pete, a most hearty THANK YOU for all your help. I am very grateful. |
Re: Upgrading
#upgrading
All they could tell me for sure, without being at the club, is it is windows 10. Ugh. |
Re: Making a plant switcher work correctly
#operationspro
On Mon, Mar 17, 2025 at 10:39 AM, John Buckley wrote:
Hey John,
?
Yes, I understood that to be the case, so if you look at image 3, this is the filter on the track at "Interchange" (remember, I used only one track to have the local do it's work before and after ADM).? The filter reflects the loads and the one MTY that are allowed INTO the interchange track.? Because, for this example, I tasked the Grain Hopps to do double duty (i.e. it can load with Corn in the Interchange and with DDG at ADM), they need to be allowed in in either load state (loaded with DDG or as an MTY).? Also, look at the image (image 4) of the schedule for the Interchange called "Load Exchanger".? You will note that the "Grain Hopp" lines receive both DDG and convert to MTY, as well as receive an MTY and convert it to Corn.? The line that applies depends on which way the car shows up when it is delivered here.
?
Part of the reason this may not seem right, is that I did not create a separate type of hopper for the DDG and the Corn.? This was due to the small forum discussion over whether the same car could indeed deliver corn and then reload with DDG occasionally.? Again, for my example, I supposed they could be used for both and did not create a third car type for this exercise.? If you want to have "4bay Cov Hopp" cars be the DDG vehicle, then create a new car type and substitute it into the appropriate places in my example.? Bear in mind that doing so will exclude the occasional respot at ADM from Pits 2 & 3, over to the DDG track.
?
As another perspective, take a look at the attached train manifests for the two trains I used.
?
This exercise was about trying to answer your original question of whether JMRI could work one industry.? Short is yes, and I built this example to show you how.? We can tweak the operation however you desire, just keep the details coming...
?
Happy to help, hope it helps,
<Pete Johnson> |