Skip to content
Daniel Türk edited this page Mar 6, 2018 · 7 revisions

Use an address of bus 0 for the decoder:

TrainModule trainModule = device.getTrainModule((byte) 3);

// receive state changes of the train
trainModule.addTrainDataListener(new TrainDataListener() {
                @Override
                public void drivingLevelChanged(int level) {
                    out("drivingLevelChanged " + level + " (" + trainAddress + ")");
                }

                @Override
                public void drivingDirectionChanged(TrainModule.DRIVING_DIRECTION direction) {
                    out("drivingDirectionChanged " + direction + " (" + trainAddress + ")");
                }

                @Override
                public void functionStateChanged(byte address, int functionBit, boolean state) {
                    out("functionStateChanged " + address + "," + functionBit + "," + state + "(" + trainAddress + ")");
                }

                @Override
                public void lightStateChanged(boolean on) {
                    out("lightStateChanged " + on + " (" + trainAddress + ")");
                }

                @Override
                public void hornStateChanged(boolean on) {
                    out("hornStateChanged " + on + " (" + trainAddress + ")");
                }
});

// control the train

trainModule.setLight(true);
trainModule.setDirection(TrainModule.DRIVING_DIRECTION.FORWARD);
Thread.sleep(1000L);

trainModule.setDrivingLevel(4);
Thread.sleep(2000L);

trainModule.setDrivingLevel(0);
trainModule.setHorn(true);
Thread.sleep(1000L);
trainModule.setHorn(false);

trainModule.setDirection(TrainModule.DRIVING_DIRECTION.BACKWARD);

trainModule.setDrivingLevel(4);
Thread.sleep(2000L);

trainModule.setDrivingLevel(0);
Thread.sleep(1000L);

trainModule.setLight(false);

TODO:

  • multi addresses

Clone this wiki locally