-
Notifications
You must be signed in to change notification settings - Fork 331
/
index.shtml
163 lines (130 loc) · 6.72 KB
/
index.shtml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta name="generator" content=
"HTML Tidy for Mac OS X (vers 31 October 2006 - Apple Inc. build 15.17), see www.w3.org">
<title>JMRI Hardware Support - JMRIClient and
SimpleServer</title><!-- Style -->
<meta http-equiv="Content-Type" content=
"text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="/css/default.css"
media="screen">
<link rel="stylesheet" type="text/css" href="/css/print.css"
media="print">
<link rel="icon" href="/images/jmri.ico" type="image/png">
<link rel="home" title="Home" href="/"><!-- /Style -->
</head>
<body>
<!--#include virtual="/Header" -->
<div class="nomenu" id="mBody">
<div id="mainContent">
<h1>Hardware Support: JMRIClient Connection</h1>
<p>The JMRIClient Connection provides a method of remotely
connecting one JMRI program to another. It can be used to
build a Panel on one computer, which is connected to the
layout directly, but actually operate the Panel on a computer
without a physical connection to the layout.</p>
<p>The JMRIClient Connection can also be used to share
information between two adjacent operators without completely
replicating the information on each computer. This
configuration is particularly useful on modular layouts where
multiple module builders are involved.</p><a name=
"connecting" id="connecting"></a>
<h2>Connecting</h2>
<h3>The JMRI Simple Server</h3>
<p>"Simple" in this case actually refers to the protocol, not
the server itself. It uses pretty simple commands that
include the device name (except for the power command) to
send information bi-directionally. The protocol itself limits
the actions that can be taken, so it will eventually be
replaced with a more complete (and complicated) protocol.</p>
<p>The server currently supports throwing Turnouts, turning
Lights on and off, Sensor feedback, Reporter feedback and
controlling Power. You can start the server through a
configuration action. It uses TCP port 2048. The port is set
in a Preference, so you can change it if needed.</p>
<h3>The JMRIClient</h3>
<p>The JMRIClient works with the server to allow remote
control of turnouts, lights, and power, and remote feedback
from sensors and reporters.</p>
<p>To configure the JMRIClient, you can select the "JMRI
(Network)" option in the systems manufacturer list. Under
this option is "JMRI Network Connection". You may have
multiple "JMRI Network Connection" interfaces configured.</p>
<p>The client currently uses the system prefix to determine
what to send to the server. If your server has a connection
with a prefix "XYZ", you need to configure your client with
the prefix "XYZ" to be able to access the named devices on
the server.</p>
<p>If you have more than one system connected to the server,
you need to configure more than one client connection. NOTE:
There currently is a warning when you configure more than one
client, because all of the port information is the same. You
can safely ignore this for a network connection.</p>
<p>Once the client has sent a request to the server about an
object, any state changes are shown on both the client and
the server.</p>
<h2>Operational Examples</h2>
<h3>Simple Connection Replication</h3>
<p>The simplest operational use of the JMRIClient and the
simple server is having one computer connected directly to
the layout (the server computer) and a second computer ( the
client computer) connected to the first via a computer
network where you would like to operate a panel.</p>
<p>For this example, we will assume the server computer has a
LocoNet connection with the prefix 'L'.</p>
<p>On the server computer, open the Preferences, and select
the Start Up group. click the "Add ▾" button, select
"Perform action..." and select "Start Simple JMRI Server"
from the list of options. Save the preferences and restart
the program.</p>
<p><img src="images/simpleserver-autostart.png" alt=
"Action added to automatically start the JMRI SimpleServer"
width="452" height="213"></p>
<p>On the client machine, add a "JMRI (Network)" connection.
Change the system connection prefix to "L". and set the IP
address to the IP address of the server. Save the preferences
and restart the program.</p>
<p><img src="images/jmriclient-base-configuration.png" alt=
"JMRIClient Configuration screen (configured for LocoNet with a server on localhost)"
width="452" height="213"></p>
<p>Once both computers have restarted JMRI, you will be able
to load a panel file on the client computer which was created
on the server computer.</p>
<p>Each machine will have its own set of tables and (
optionally) panel files loaded, if the client causes an
action, information will be transferred to the server, and
the server will trigger an action on the layout. If an action
occurs on the server, the server will transmit an indication
of the action to the client if the client has indicated it is
interested in the device.</p>
<h3>Operational Notes</h3>
<ol>
<li>If you have any Logix or Routes, you probably only want
those running on one of the two machines.</li>
<li>In order for any information about a
light/turnout/sensor to be returned to the client, it must
be defined on the client.</li>
<li>
<p>Invert is defined for both sensors and turnouts. If
invert is enabled on both the client and server, the
actual device will have normal behavior when the client
uses it.</p>
<p>This one is interesting, because it can be a bug or
not a bug depending on your use case.</p>
<p>If your use case is that both the client and server
machines have panels running, then you might consider
this a bug. There are two work arounds in this case 1)
load a panel without inverted set on the client or 2) Run
the panel on the server through a second instance of JMRI
which is acting as a client to the first instance.</p>
<p>If your use case is that the server just provides
connections, but doesn't do any logic, then this is not a
bug.</p>
</li>
</ol><!--#include virtual="/Footer" -->
</div><!-- closes #mainContent-->
</div><!-- closes #mBody-->
</body>
</html>