Giter Club home page Giter Club logo

geomessage-simulator-qt's Introduction

geomessage-simulator-qt (Mature Support)

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:

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.

Image of GeoMessage Simulator

Features

  • 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

Sections

Requirements

  • 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.

Instructions

General Help

Getting Started with GeoMessage Simulator

Building from Source

  • 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.

Binary distributions

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.

Running

Graphical mode

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.
Command-line mode

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

Resources

Issues

Find a bug or want to request a new feature? Please let us know by submitting an issue.

Contributing

Esri welcomes contributions from anyone and everyone. Please see our guidelines for contributing.

Licensing

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++)

geomessage-simulator-qt's People

Contributors

csmoore avatar joebayles avatar phill5136 avatar bobbooth avatar

Stargazers

 avatar  avatar Nezihe Sözen avatar  avatar Måns Beckman avatar Hassan Najm avatar dadude avatar 能豆子 avatar Angus H. avatar Don Onwunumah avatar  avatar  avatar Gianluca Caporossi avatar Leif Gruenwoldt avatar Gary Sheppard avatar GP Wang avatar Ben Conklin avatar

Watchers

Gianluca Caporossi avatar James Cloos avatar  avatar Jan Tschada avatar Mark Torrey avatar Gary Sheppard avatar Brittany Moore avatar Damian avatar Lorraine Funkhouser avatar Richard Gale avatar Yehia Hassan avatar Deepti Kochhar avatar Renee Bernstein avatar Suzanne Foss avatar Hossam Sayed avatar Chris Bailey avatar  avatar Natalie Feuerstein avatar Chris Dufault avatar  avatar Jeff Baranyi avatar Michael Tims avatar Jim Michel avatar Jim Weakland avatar Ken avatar Anneley Hadland avatar Phil Suarez avatar karl terrey avatar Eben Wells avatar Craig Pitman avatar Rob Feuerstein avatar David Attaway avatar Ivan Gorbachev avatar Erik Reid avatar Alex Muleh avatar Tom Smedley avatar Fred Woods avatar James Sullivan avatar DarcyB avatar Doug Ridenour avatar  avatar  avatar

geomessage-simulator-qt's Issues

Vehicle Commander QML App needs complete re-write

The QML-based Vehicle Commander (VC) app is showing some serious signs of age because QML was quite new when this app was originally developed & has changed quite a bit since then.

When the QML-based runtime API is released (or at least in Beta), we should consider redoing the VC app with today's modern, more stable version of QML.

This will also help resolve the numerous other issues (#5, #10)

QML Debugging does not work with Vehicle Commander QML

There is a known issue that when the Vehicle Commander project QML is run in the QML debugger, it does initialize in the correct order and the key properties are null when they are referenced at initialization.

Debugging starts
QDeclarativeDebugServer: Waiting for connection on port 64495...
QDeclarativeDebugServer: Connection established
qrc:/Resources/qml/Panels/SpotReport/SpotReportPanel.qml:39: TypeError: Result of expression 'equipmentPanel' [null] is not an object.
qrc:/Resources/qml/PanelContainers/MainMenu.qml:45: TypeError: Result of expression 'mainMenu.stack' [null] is not an object.
(THEN A CASCADE OF QML ERRORS)

WORKAROUND: For now, you will need to disable the QML debugger to run the debugger as a workaround (in Projects | Run | Debugger Settings). You will be able to debug C++, just not QML (you'll need to use QML console.log's)

Map Mouse Clicks Require 2 Clicks for Symbol to Show up (instead of 1)

Chem light only appears on second click instead of first

My environment: RHEL 6.4, Qt 4.8.5 64-bit

Run Vehicle Commander Qt. Click a chem light button. Click the map, and a chem light doesn't appear. Click the map again, and now the chem light appears. I think the chem light should appear on the first click.

Possibly remove $$(BUILD_ARCH) from .pro's or document setting BUILD_ARCH in Readme

Currently in the .pro's, the environment variable BUILD_ARCH needs set to x86 in order to build 32-bit.

This line may not be necessary:

QMAKE_TARGET.arch = $$(BUILD_ARCH)

It forces the user to set the environment variable BUILD_ARCH in order to build x86 (the pro's default to x86_64 if this is not set)

QMAKE_TARGET.arch is already set by qmake on Windows, but never set to anything on Linux.

Adding in this block will handle the Linux cases where QMAKE_TARGET.arch isn’t set.
unix:{
eval(QMAKE_TARGET.arch = ""):{
# QMAKE_TARGET.arch isn't set properly on Linux.
# If we get a bitset-specific mkspec, use it
linux-g++-32:QMAKE_TARGET.arch = x86
linux-g++-64:QMAKE_TARGET.arch = x86_64

# If we get a generic one, then determine the
# arch of the machine and assign
linux-g++:{
  ARCH = $$system(uname -m) # i686 or x86_64
  contains(ARCH, x86_64):{
    QMAKE_TARGET.arch = x86_64
  }
  else{
    QMAKE_TARGET.arch = x86
  }
} # linux-g++

} # eval
} # unix

MGRS grid does not always show up initially when map rotated

Odd behavior of MGRS grid and home button - my environment: RHEL 6.4, Qt 4.8.5 64-bit

Run Vehicle Commander Qt. It starts in Follow Me mode, rotating the map to track up, and the MGRS grid is not visible. Click the home button. Follow Me mode is disabled, the map goes to a certain extent, the map is rotated to north up, and the MGRS grid appears. Click the home button again. The map goes back to the same extent, and the MGRS grid still appears.

What is the home button supposed to be doing? It turns on the MGRS grid but doesn't turn it off. Maybe there should be a different button that controls the MGRS grid.

Military messages (i.e. spot reports) do not display on map

My environment: RHEL 6.4, Qt 4.8.5 64-bit

Run Vehicle Commander Qt and try to add spot reports with the following two methods:

  • Use the spot report tool in the main menu.
  • Run the message simulator.

The spot reports do not display on the map.

Rename repo geomessage-simulator-qt

Just to make this name consistent with how it is used elsewhere

Perhaps also rename the app exe from ArcGISQtMessageSimulator (its name from way back in the day) to geomessage-simulator

Provide a stand-alone deployment for Windows/Linux

The current instructions instruct you to get the full VehicleCommander deployment (weighing in at 500-800MB or so) in order to get a stand-alone deployed version of the geomessage-simulator.

Provide a standalone zipped deployment of just the simulator somewhere ex:

  • in this repo in an "application" or "deployment" folder
  • or as a link to an ArcGIS portal item

Add Terrain Analysis Tool Example

It would be a nice enhancement to add a Terrain Analysis use-case to the Vehicle Commander (VC) Qt similar to the Java version.

The .gpk could be reused from the Java VC

GeoMessages Validator app

We need to develop a new app called GeoMessages Validator that takes a GeoMessages file as input and validates its content against the XSD schema files we're soon adding to this repo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.