jmri.jmrix.nce.simulator
Class SimulatorAdapter

java.lang.Object
  extended by jmri.jmrix.AbstractPortController
      extended by jmri.jmrix.AbstractSerialPortController
          extended by jmri.jmrix.nce.NcePortController
              extended by jmri.jmrix.nce.simulator.SimulatorAdapter
All Implemented Interfaces:
Runnable, PortAdapter, SerialPortAdapter

public class SimulatorAdapter
extends NcePortController
implements SerialPortAdapter, Runnable

The following was copied from the NCE Power Pro System Reference Manual. It provides the background for the various NCE command that are simulated by this implementation.

Implements a Command Station Simulator for the NCE system.

BINARY COMMAND SET

The RS-232 port binary commands are designed to work in a computer friendly way. Command format is: ...

Commands range from 0x80 to 0xBF

Commands and formats supported: Commands 0xAD to 0xBF are not used and return '0'

Errors returned: '0'= command not supported '1'= loco address out of range '2'= cab address out of range '3'= data out of range '4'= byte count out of range '!'= command completed successfully

For a complete description of Binary Commands see: www.ncecorporation.com/pdf/ bincmds.pdf

Command Description #bytes rtn Responses
0x80 NOP, dummy instruction (1) !
0x81 xx xx yy assign loco xxxx to cab cc (1) !, 1,2
0x82 read clock (2)
0x83 Clock stop (1) !
0x84 Clock start (1) !
0x85 xx xx Set clock hr./min (1) !,3
0x86 xx Set clock 12/24 (1) !,3
0x87 xx Set clock ratio (1) !,3
0x88 xxxx Dequeue packet by loco addr (1) !, 1,2
0x89 Enable main trk, kill prog (1) !
0x8A yy Return status of AIU yy (4)
0x8B Kill main trk, enable prog (1) !
0x8C dummy inst. returns "!" followed CR/LF(3) !0x0D, 0x0A
0x8D xxxx mm Set speed mode of loco xxxx to mode mm, 1=14, 2=28, 3=128 (1) !, 1,3
0x8E aaaa nn<16 data bytes> Write nn bytes, start at aaaa Must have 16 data bytes, pad them out to 16 if necessary (1) !,4

0x8F aaaa Read 16 bytes, start at aaaa(16) 16 bytes
0x90 cc xx... Send 16 char message to Cab ccLCD line 3. xx = 16 ASCII char (1) ! ,2
0x91 cc xx Send 16 char message to cab cc LCD line 4. xx=16 ASCII (1) !,2
0x92 cc xx Send 8 char message to cab cc LCD line 2 right xx=8 char (1) !,2
0x93 ss<3 byte packet> Queue 3 byte packet to temp _Q send ss times (1) !
0x94 ss<4 byte packet> Queue 4 byte packet to temp _Q send ss times (1) !
0x95 ss<5 byte packet> Queue 5 byte packet to temp_Q send ss times (1) !
0x96 ss<6 byte packet> Queue 6 byte packet to temp _Q send ss times (1) !
0x97 aaaa xx Write 1 byte to aaaa (1) !
0x98 aaaa xx xxWrite 2 bytes to aaaa (1) !
0x99 aaaa<4 data bytes> Write 4 bytes to aaaa (1) !
0x9A aaaa<8 data bytes> Write 8 bytes to aaaa (1) !
0x9B yy Return status of AIU yy (short form of command 0x8A) (2)
0x9C xx Execute macro number xx (1) !, 0,3
0x9D aaaa Read 1 byte from aaaa (1) 1 byte
0x9E Enter programming track mode(1) !=success 3=short circuit
0x9F Exit programming track mode (1) !=success
0xA0 aaaa xx Program CV aa with data xx in paged mode
(1) !=success 0=program track
0xA1 aaaa Read CV aaaa in paged mode Note: cv data followed by ! for OK. 0xFF followed by 3 for can't read CV (2) !, 0,3
0xA2<4 data bytes> Locomotive control command (1) !,1
0xA3<3 bytepacket> Queue 3 byte packet to TRK _Q (replaces any packet with same address if it exists) (1) !,1
0xA4<4 byte packet> Queue 4 byte packet to TRK _Q (1) !,1
0xA5<5 byte packet> Queue 5 byte packet to TRK _Q (1) !,1
0xA6 rr dd Program register rr with dd (1) !=success 0=no program track
0xA7 rr Read register rr. Note: cv data followed by ! for OK. 0xFF followed by 3 for can't read CV (2) !,3 0=no program track
0xA8 aaaa dd Program CV aaaa with dd in direct mode. (1) !=success 0=no program track
0xA9 aaaa Read CV aaaa in direct mode. Note: cv data followed by ! for OK. 0xFF followed by 3 for can't read CV (2) !,3
0xAA Return software revision number. Format: VV.MM.mm (3) 3 data bytes
0xAB Perform soft reset of command station (like cycling power) (0) Returns nothing
0xAC Perform hard reset of command station. Reset to factory defaults (Note: will change baud rate to 9600)(0) Returns nothing
0xAD <4 data bytes>Accy/signal and macro commands (1) !,1

Author:
Bob Jacobsen Copyright (C) 2001, 2002, Paul Bender, Copyright (C) 2009, Daniel Boudreau Copyright (C) 2010

Field Summary
 
Fields inherited from class jmri.jmrix.nce.NcePortController
adaptermemo
 
Fields inherited from class jmri.jmrix.AbstractSerialPortController
mBaudRate, mPort
 
Fields inherited from class jmri.jmrix.AbstractPortController
mDisabled, mManufacturer, mOpt1, mOpt2
 
Constructor Summary
SimulatorAdapter()
           
 
Method Summary
 void configure()
          set up all of the other objects to simulate operation with an NCE command station.
 void dispose()
           
 String getCurrentBaudRate()
           
 DataInputStream getInputStream()
           
 DataOutputStream getOutputStream()
           
 NceSystemConnectionMemo getSystemConnectionMemo()
           
 String openPort(String portName, String appName)
          Open a specified port.
 void run()
           
 boolean status()
          Query the status of this connection.
 String[] validBaudRates()
          Get an array of valid baud rates.
 
Methods inherited from class jmri.jmrix.nce.NcePortController
setDisabled
 
Methods inherited from class jmri.jmrix.AbstractSerialPortController
configureBaudRate, currentBaudNumber, getCurrentPortName, getPortNames, handlePortBusy, handlePortNotFound, setPort, validBaudNumber
 
Methods inherited from class jmri.jmrix.AbstractPortController
configureOption1, configureOption2, getCurrentOption1Setting, getCurrentOption2Setting, getDisabled, getManufacturer, option1Name, option2Name, setManufacturer, validOption1, validOption2
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface jmri.jmrix.SerialPortAdapter
configureBaudRate, configureOption1, configureOption2, getCurrentOption1Setting, getCurrentOption2Setting, getCurrentPortName, getManufacturer, getPortNames, handlePortBusy, option1Name, option2Name, setManufacturer, setPort, validOption1, validOption2
 
Methods inherited from interface jmri.jmrix.PortAdapter
getDisabled, setDisabled
 

Constructor Detail

SimulatorAdapter

public SimulatorAdapter()
Method Detail

getSystemConnectionMemo

public NceSystemConnectionMemo getSystemConnectionMemo()
Specified by:
getSystemConnectionMemo in interface PortAdapter
Overrides:
getSystemConnectionMemo in class NcePortController

dispose

public void dispose()
Specified by:
dispose in interface PortAdapter
Overrides:
dispose in class AbstractSerialPortController

openPort

public String openPort(String portName,
                       String appName)
Description copied from interface: SerialPortAdapter
Open a specified port. The appname argument is to be provided to the underlying OS during startup so that it can show on status displays, etc

Specified by:
openPort in interface SerialPortAdapter

configure

public void configure()
set up all of the other objects to simulate operation with an NCE command station.

Specified by:
configure in interface PortAdapter
Specified by:
configure in interface SerialPortAdapter

getInputStream

public DataInputStream getInputStream()
Specified by:
getInputStream in interface PortAdapter
Specified by:
getInputStream in class AbstractPortController

getOutputStream

public DataOutputStream getOutputStream()
Specified by:
getOutputStream in interface PortAdapter
Specified by:
getOutputStream in class AbstractPortController

status

public boolean status()
Description copied from interface: PortAdapter
Query the status of this connection. If all OK, at least as far as is known, return true

Specified by:
status in interface PortAdapter
Specified by:
status in interface SerialPortAdapter
Overrides:
status in class AbstractPortController

validBaudRates

public String[] validBaudRates()
Get an array of valid baud rates.

Specified by:
validBaudRates in interface SerialPortAdapter

getCurrentBaudRate

public String getCurrentBaudRate()
Specified by:
getCurrentBaudRate in interface SerialPortAdapter
Overrides:
getCurrentBaudRate in class AbstractSerialPortController

run

public void run()
Specified by:
run in interface Runnable


Copyright © 1997 - 2011 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads