Transcript Slide 1

Project: Black Widow
Extending the
JMRI Throttle
Recap: DCC and JMRI
• Digital Command and Control
– Applying Modern Circuitry to Model Railroading
– Enhanced realism and control
• Java Model Railroading Interface
– Java Framework
– Control Model trains via DCC
Motivation
• Model Railroading is a personal hobby
• Already owned some of the hardware
• Contribute to the open source JMRI
community
• Computer Science + Personal Hobby = Fun
Project
Goals
• Focus on the JMRI “Throttle”
• Easier/”Friendlier” User Interface intended
for users new to JMRI (or DCC)
• Create a more appealing “Throttle” for
existing users
Goals: specifics
• Implement use of the mouse wheel to
control throttle slider
• Make the “real-time” capability more
accessible
• Eliminate “JInternalFrames”
• Implement “auto-detection” capability
Implementation
• Migrating from JInternalFrame to JPanel
– Initially difficult but relatively easy
– Migrated Throttle Frame, Address Frame, and
Function Frame to project
Implementation
• Mousewheel functionality
– Implemented the MouseWheelListener
– Problem with “spastic” JSlider
– Had to disable the JSpinner objects and
corresponding function
Implementation
• Real Time control
– Initially under the impression that it didn’t exist
– Located functionality by chance
– Simply created an “obvious” properties button
for the user to discover easily
Implementation
• Auto Detection (Main line)
– Main Line as opposed to “Programming Track”
– Most difficult feature to implement
• Possibly misled?
• Hardware limitations by manufacturer design
• Required acquiring new hardware (Digitrax BDL168
and RX4)
• Some of my decoders lacked required functionality
Implementation: BDL168 & RX4 Wiring Diagram
Auto Detection
• Solution
– Query through set of decoder addresses
– Filter Loconet Traffic for Transponder
messages
– Load active addresses into an array
Auto Detection
• More Problems
– Older Decoders with transponder capability
were disabled by default (must manually
enable via programming track)
– Locomotive must be oriented in proper
direction (can be resolved with resistor)
– Issue with AWT and Threads for proper
capture of transponder messages
Future work
• Contribute project back to the open source
community
• Find better solution to mouse wheel
implementation
• Create a more aesthetically appealing user
interface
• Implement “consisting”
Thank You