Class ClockMonPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- jmri.util.swing.JmriPanel
-
- jmri.jmrix.nce.swing.NcePanel
-
- jmri.jmrix.nce.clockmon.ClockMonPanel
-
- All Implemented Interfaces:
java.awt.image.ImageObserver,java.awt.MenuContainer,java.io.Serializable,java.util.EventListener,javax.accessibility.Accessible,AbstractMRListener,NceListener,NcePanelInterface
public class ClockMonPanel extends NcePanel implements NceListener
Frame displaying and programming a NCE clock monitor.Some of the message formats used in this class are Copyright NCE Inc. and used with permission as part of the JMRI project. That permission does not extend to uses in other software products. If you wish to use this code, algorithm or these message formats outside of JMRI, please contact NCE Inc for separate permission. Notes: 1. the commands for time don't include seconds so I had to use memory write to sync nce clock. 2. I tried fiddling with the internal nce clock loop values, didn't work. 3. to sync nce to internal clock: A. set an alarm about 5 seconds before next minute B. read nce clock C. compute error and record last X errors for correction calc D. adjust nce clock as needed E. reset alarm after next internal minute ticks 4. to sync internal to nce clock A. every so often, read nce clock and compare to internal B. compute error and record last X errors for correction calc C. adjust internal clock rate factor as needed 5. The clock message only seems to go out to the throttles on the tic of the minute. 6. The nce clock must be left running, or it doesn't tic and therefore doesn't go out over the bus.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classClockMonPanel.DefaultNested class to create one of these using old-style defaults-
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description (package private) javax.swing.TimeralarmSyncUpdate(package private) javax.swing.JTextFieldamPmstatic intCLOCKRATIO_MAXstatic intCLOCKRATIO_MINstatic intCMD_CLOCK_SET_PARAM_SIZEstatic intCMD_CLOCK_SET_REPLY_SIZEstatic intCMD_CLOCK_SET_RUN_SIZEstatic intCMD_CLOCK_SET_TIME_SIZEstatic intCMD_MEM_SET_REPLY_SIZEstatic intCS_CLOCK_1224static intCS_CLOCK_AMPMstatic intCS_CLOCK_HOURSstatic intCS_CLOCK_MEM_SIZEstatic intCS_CLOCK_MINUTESstatic intCS_CLOCK_SCALEstatic intCS_CLOCK_SECONDSstatic intCS_CLOCK_STATUSstatic intCS_CLOCK_TICKstatic doubleDEFAULT_POLLING_INTERVAL(package private) java.text.DecimalFormatfiveDigits(package private) java.text.DecimalFormatfourDigits(package private) javax.swing.JTextFieldhours(package private) TimebaseinternalClock(package private) javax.swing.JTextFieldinternalDisplayStatus(package private) javax.swing.JTextFieldintPidGainD(package private) javax.swing.JTextFieldintPidGainI(package private) javax.swing.JTextFieldintPidGainPstatic intMAX_ERROR_ARRAYstatic doubleMAX_POLLING_INTERVALstatic doubleMIN_POLLING_INTERVAL(package private) java.beans.PropertyChangeListenerminuteChangeListener(package private) javax.swing.JTextFieldminutes(package private) javax.swing.JTextFieldnceDisplayStatus(package private) javax.swing.JTextFieldncePidGainD(package private) javax.swing.JTextFieldncePidGainI(package private) javax.swing.JTextFieldncePidGainP(package private) javax.swing.JTextFieldpollingSpeed(package private) javax.swing.JTextFieldrateNce(package private) javax.swing.JButtonreadButton(package private) javax.swing.JTextFieldseconds(package private) javax.swing.JButtonset1224Button(package private) javax.swing.JButtonsetClockButton(package private) javax.swing.JButtonsetPidButton(package private) javax.swing.JButtonsetPollingSpeedButton(package private) javax.swing.JButtonsetRatioButton(package private) javax.swing.JButtonsetStartNceButton(package private) javax.swing.JButtonsetStopNceButton(package private) javax.swing.JButtonsetSyncButton(package private) javax.swing.JRadioButtonsetSyncModeInternalMaster(package private) javax.swing.JRadioButtonsetSyncModeNceMaster(package private) javax.swing.JRadioButtonsetSyncModeOff(package private) javax.swing.JTextFieldstatusstatic intSYNCMODE_INTERNAL_MASTERstatic intSYNCMODE_NCE_MASTERstatic intSYNCMODE_OFFstatic doubleTARGET_SYNC_DELAY(package private) java.text.DecimalFormatthreeDigits(package private) javax.swing.TimertimerDisplayUpdate(package private) javax.swing.JCheckBoxtwentyFour(package private) java.text.DecimalFormattwoDigitsstatic intWAIT_CMD_EXECUTION-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description ClockMonPanel()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddispose()java.lang.StringgetHelpTarget()Provide a help target string which an enclosing frame can provide as a help reference.java.awt.DimensiongetMinimumDimension()The minimum frame size for font size 16java.lang.StringgetTitle()Provide a recommended title for an enclosing frame.voidinitComponents(NceSystemConnectionMemo m)2nd stage of initialization, invoked after the constuctor is complete.voidinitContext(java.lang.Object context)3rd stage of initialization, invoked after Swing components exist.voidmessage(NceMessage m)voidnewInternalMinute()Handles minute notifications for NCE Clock Monitor/Synchronizervoidreply(NceReply r)voidwindowClosing(java.awt.event.WindowEvent e)-
Methods inherited from class jmri.util.swing.JmriPanel
getMenus, getWindowInterface, initComponents, isMultipleInstances, setWindowInterface
-
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
CS_CLOCK_MEM_SIZE
public static final int CS_CLOCK_MEM_SIZE
- See Also:
- Constant Field Values
-
CS_CLOCK_SCALE
public static final int CS_CLOCK_SCALE
- See Also:
- Constant Field Values
-
CS_CLOCK_TICK
public static final int CS_CLOCK_TICK
- See Also:
- Constant Field Values
-
CS_CLOCK_SECONDS
public static final int CS_CLOCK_SECONDS
- See Also:
- Constant Field Values
-
CS_CLOCK_MINUTES
public static final int CS_CLOCK_MINUTES
- See Also:
- Constant Field Values
-
CS_CLOCK_HOURS
public static final int CS_CLOCK_HOURS
- See Also:
- Constant Field Values
-
CS_CLOCK_AMPM
public static final int CS_CLOCK_AMPM
- See Also:
- Constant Field Values
-
CS_CLOCK_1224
public static final int CS_CLOCK_1224
- See Also:
- Constant Field Values
-
CS_CLOCK_STATUS
public static final int CS_CLOCK_STATUS
- See Also:
- Constant Field Values
-
CMD_CLOCK_SET_TIME_SIZE
public static final int CMD_CLOCK_SET_TIME_SIZE
- See Also:
- Constant Field Values
-
CMD_CLOCK_SET_PARAM_SIZE
public static final int CMD_CLOCK_SET_PARAM_SIZE
- See Also:
- Constant Field Values
-
CMD_CLOCK_SET_RUN_SIZE
public static final int CMD_CLOCK_SET_RUN_SIZE
- See Also:
- Constant Field Values
-
CMD_CLOCK_SET_REPLY_SIZE
public static final int CMD_CLOCK_SET_REPLY_SIZE
- See Also:
- Constant Field Values
-
CMD_MEM_SET_REPLY_SIZE
public static final int CMD_MEM_SET_REPLY_SIZE
- See Also:
- Constant Field Values
-
MAX_ERROR_ARRAY
public static final int MAX_ERROR_ARRAY
- See Also:
- Constant Field Values
-
MIN_POLLING_INTERVAL
public static final double MIN_POLLING_INTERVAL
- See Also:
- Constant Field Values
-
MAX_POLLING_INTERVAL
public static final double MAX_POLLING_INTERVAL
- See Also:
- Constant Field Values
-
CLOCKRATIO_MIN
public static final int CLOCKRATIO_MIN
- See Also:
- Constant Field Values
-
CLOCKRATIO_MAX
public static final int CLOCKRATIO_MAX
- See Also:
- Constant Field Values
-
DEFAULT_POLLING_INTERVAL
public static final double DEFAULT_POLLING_INTERVAL
- See Also:
- Constant Field Values
-
TARGET_SYNC_DELAY
public static final double TARGET_SYNC_DELAY
- See Also:
- Constant Field Values
-
SYNCMODE_OFF
public static final int SYNCMODE_OFF
- See Also:
- Constant Field Values
-
SYNCMODE_NCE_MASTER
public static final int SYNCMODE_NCE_MASTER
- See Also:
- Constant Field Values
-
SYNCMODE_INTERNAL_MASTER
public static final int SYNCMODE_INTERNAL_MASTER
- See Also:
- Constant Field Values
-
WAIT_CMD_EXECUTION
public static final int WAIT_CMD_EXECUTION
- See Also:
- Constant Field Values
-
fiveDigits
java.text.DecimalFormat fiveDigits
-
fourDigits
java.text.DecimalFormat fourDigits
-
threeDigits
java.text.DecimalFormat threeDigits
-
twoDigits
java.text.DecimalFormat twoDigits
-
internalClock
Timebase internalClock
-
timerDisplayUpdate
javax.swing.Timer timerDisplayUpdate
-
alarmSyncUpdate
javax.swing.Timer alarmSyncUpdate
-
hours
javax.swing.JTextField hours
-
minutes
javax.swing.JTextField minutes
-
seconds
javax.swing.JTextField seconds
-
rateNce
javax.swing.JTextField rateNce
-
amPm
javax.swing.JTextField amPm
-
twentyFour
javax.swing.JCheckBox twentyFour
-
status
javax.swing.JTextField status
-
setSyncModeNceMaster
javax.swing.JRadioButton setSyncModeNceMaster
-
setSyncModeInternalMaster
javax.swing.JRadioButton setSyncModeInternalMaster
-
setSyncModeOff
javax.swing.JRadioButton setSyncModeOff
-
internalDisplayStatus
javax.swing.JTextField internalDisplayStatus
-
nceDisplayStatus
javax.swing.JTextField nceDisplayStatus
-
pollingSpeed
javax.swing.JTextField pollingSpeed
-
ncePidGainP
javax.swing.JTextField ncePidGainP
-
ncePidGainI
javax.swing.JTextField ncePidGainI
-
ncePidGainD
javax.swing.JTextField ncePidGainD
-
intPidGainP
javax.swing.JTextField intPidGainP
-
intPidGainI
javax.swing.JTextField intPidGainI
-
intPidGainD
javax.swing.JTextField intPidGainD
-
minuteChangeListener
transient java.beans.PropertyChangeListener minuteChangeListener
-
setSyncButton
javax.swing.JButton setSyncButton
-
setClockButton
javax.swing.JButton setClockButton
-
setRatioButton
javax.swing.JButton setRatioButton
-
set1224Button
javax.swing.JButton set1224Button
-
setStopNceButton
javax.swing.JButton setStopNceButton
-
setStartNceButton
javax.swing.JButton setStartNceButton
-
readButton
javax.swing.JButton readButton
-
setPollingSpeedButton
javax.swing.JButton setPollingSpeedButton
-
setPidButton
javax.swing.JButton setPidButton
-
-
Constructor Detail
-
ClockMonPanel
public ClockMonPanel()
-
-
Method Detail
-
initContext
public void initContext(java.lang.Object context)
3rd stage of initialization, invoked after Swing components exist.- Overrides:
initContextin classNcePanel- Parameters:
context- the context that this panel may be initialized with
-
getHelpTarget
public java.lang.String getHelpTarget()
Provide a help target string which an enclosing frame can provide as a help reference.This automatically provides a reference to the usual place for JMRI window-specific help pages that are named for the implementing class, but note this is a Pane class, not a Frame class.
- Overrides:
getHelpTargetin classJmriPanel- Returns:
- the target String
-
getTitle
public java.lang.String getTitle()
Provide a recommended title for an enclosing frame.
-
getMinimumDimension
public java.awt.Dimension getMinimumDimension()
The minimum frame size for font size 16- Overrides:
getMinimumDimensionin classJmriPanel
-
initComponents
public void initComponents(NceSystemConnectionMemo m)
2nd stage of initialization, invoked after the constuctor is complete.This needs to be connected to the initContext() method in implementing classes.
- Specified by:
initComponentsin interfaceNcePanelInterface- Overrides:
initComponentsin classNcePanel- Parameters:
m- the system connection memo for this connection
-
message
public void message(NceMessage m)
- Specified by:
messagein interfaceNceListener
-
reply
public void reply(NceReply r)
- Specified by:
replyin interfaceNceListener
-
newInternalMinute
public void newInternalMinute()
Handles minute notifications for NCE Clock Monitor/Synchronizer
-
windowClosing
public void windowClosing(java.awt.event.WindowEvent e)
-
-