This GeoMessage Simulator repo has been moved to the Mature Support Lifecycle Phase, applications built from this repo are in the Mature Support lifecycle phase.
GeoMessage Simulator provides UDP messaging for applications and system components in the ArcGIS for the Military solution, including:
- Vehicle Commander (source, binary for Windows, binary for Linux)
- Squad Leader (source, binary)
- GeoMessage Adapter for ArcGIS GeoEvent Extension for Server (source, ArcGIS Online item)
Note: the Qt version of Vehicle Commander that was in this repo has been retired. If you would like to use that source code, which is no longer supported by Esri, go to the 10.2 release or the last commit that included Vehicle Commander. It is recommended that you use the current Vehicle Commander instead.
- Takes GeoMessage XML files as input. See the GeoMessage specification to learn the GeoMessage format and download XML Schema Definition (XSD) files and sample GeoMessage files.
- Writes UDP broadcast datagrams as output
- Allows you to adjust frequency of output
- Includes sample GeoMessage XML files
- The Qt software development kit with Qt Creator
- Tested on Windows with Qt 5.1.1 and Qt Creator 2.8.1
- Tested on Linux with Qt 4.8.6
- Required libraries for your Qt distribution. For example, if you compile with Qt for Visual Studio, end-users will need the Visual C++ Redistributable for the appropriate Visual Studio version and platform (e.g. x86 or x64).
- IMPORTANT: clients will only receive messages from the GeoMessage Simulator if the machine running GeoMessage Simulator and the machine or device running the client are connected to the same router and that router allows UDP broadcast traffic.
- Fork and clone this repo.
- Use Qt Creator to open source/geomessage-simulator/geomessage-simulator.pro.
- Run the application and run the simulation with one of the sample message files in source/geomessage-simulator/SampleMessages.
- Confirm that Vehicle Commander or Squad Leader displays the messages. Alternatively, you could use Qt to develop a simple client app that receives UDP messages, maybe using QUdpSocket. Note the requirement that the simulator and the client must be able to communicate over UDP for this to work.
If you don't want to build from source, a binary distribution is available. The binary distribution for Windows requires Microsoft's Visual C++ Redistributable for Visual Studio 2012 or newer. The 32-bit GeoMessage Simulator requires the 32-bit Visual C++ Redistributable, and the 64-bit GeoMessage Simulator requires the 64-bit Visual C++ Redistributable.
Double click the .exe file to start the app in GUI mode. Click "Choose Simulation File" and navigate to a GeoMessage XML file, such as the ones included in this repository. Loading the file will take several seconds if it is a particularly large file. When the file is loaded, "File Loaded" displays under the Time Override Fields list, and then you can use the controls to configure and run the simulation:
- Time Override Fields: choose any fields whose value you want to be overridden with the current time when messages are sent.
- "X messages per Y <time units>": adjust the frequency of output messages as desired. Only one message is sent per UDP broadcast; this control lets you determine how often a UDP broadcast is sent.
- Port: choose a UDP port on which messages are sent. Clients must bind and listen to the same port in order to receive messages from this GeoMessage Simulator instance.
- Start Simulator/Restart Simulator: start the simulation from the beginning of the file.
- Pause Simulator/Continue Simulator: click Pause Simulator to pause the simulation. Click Continue Simulator to continue the simulation from where it was paused.
- Stop Simulator: stop the simulation. After clicking Stop Simulator, you cannot continue the simulation from where it was stopped. You can only start from the beginning of the file.
Run the executable from the command line with the parameter "-c" for a GUI-free experience. This enables you to run the simulator from a script or as a Windows service or Linux cron job, for example. Note that if you run from the command line but do not include the "-c" parameter, the simulator will run in graphical mode and none of the other command-line parameters will have any effect.
Command-line parameters (available only in command-line mode):
Parameter | Description |
---|---|
-? | Print the available parameters and exit |
-c | Activate command-line mode (i.e. no GUI) |
-p <port number> | Port number (console mode only; default is 45678) |
-f <filename> | Simulation file |
-q <frequency> | Frequency (messages per time unit); default is 1 |
-i <time count> | Amount of time for frequency; default is 1 |
-t <time unit> | Time unit for frequency; valid values are seconds, minutes, hours, days, and weeks; default is seconds |
-o <field1,...,fieldN> | Override the value of these fields with the current date/time |
-s | Silent mode; no verbose output |
Here's a command that runs the simulator in command-line mode with the file path\to\simulation.xml, sending three messages per second, and overriding the values of the MsgDateTime and CurrentTime fields with the current time for all messages:
geomessage-simulator.exe -c -f "path\to\simulation.xml" -q 3 -o MsgDateTime,CurrentTime
- Learn more about Esri's ArcGIS for the Military solution.
Find a bug or want to request a new feature? Please let us know by submitting an issue.
Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.
Copyright 2012-2015 Esri
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
A copy of the license is available in the repository's license.txt file.
Note: Portions of this code reference the Qt GUI Toolkit, which is licensed under GNU Lesser General Public License 2.1. See license-ThirdParty.txt for the details of this license or visit the Qt website for more details.
[](Esri Tags: ArcGIS Defense and Intelligence Situational Awareness Qt Military ArcGISSolutions) [](Esri Language: C++)