Als Beispiel für die Verwendung des MxMessageSystem SDK wurde ein kleines Beispielprogramm entwickelt, welches als Quellcode mitgeliefert wird. Mit diesem ist es möglich, MxMessage-Nachrichten zu versenden und zu empfangen. Diese README
-Datei dient als Anleitung für das Kompilieren und Verwenden des Beispielprogramms.
Das MxMessageSystem SDK kann unter Windows, Linux x86_64 und OS X kompiliert und verwendet werden.
Unter Ubuntu 16.4 Linux x86_64 sollten Sie folgende Pakete installieren:
sudo apt-get install build-essential openssl libssl-dev cmake
Stellen Sie sicher, dass die Versionen der Programme aktuell sind:
cmake >= 3.2
: https://cmake.org/GCC >= 4.8
: https://gcc.gnu.orgOpenSSL
: https://www.openssl.org/Das Programm sdk-demo
wird wie folgt kompiliert:
cmake .make
Verwenden Sie OS X 10.9 oder höher.
Das Programm sdk-demo
wird wie folgt kompiliert:
cmake .make
Es ist auch möglich, ein Xcode-Projekt zu generieren:
cmake -G Xcode .
Stellen Sie sicher, dass die aktuellen Versionen der folgenden Programme installiert sind:
cmake >= 3.2
: https://cmake.org/Visual Studio 14 2015
: https://www.visualstudio.com/Das Programm sdk-demo
wird wie folgt kompiliert:
cmake -G "Visual Studio 14 2015"cmake --build . --target ALL_BUILD --config Release
Das MxMessageSystem SDK hat zwei Konfigurationen, die in unserem Beispiel durch jeweils eine JSON-Datei gesteuert werden:
system_config.json
user_config.json
broadcast.port
und broadcast.passphrase
unter "Benutzerkonfiguration").broadcast.max_time_offset
unter "Benutzerkonfiguration").Diese Konfiguration ändert sich nicht zur Laufzeit des Prozesses. Sie dient zur statischen Anpassung an unterschiedliche Plattformen. Die Systemkonfiguration des Beispielprogramms befindet sich in der Datei system_config.json
.
log_list_max
(Integer, optional)
Max. Anzahl der Einträge in der Statusausgabe ("Publication") des Distributors.
broadcast.interfaces
(Array of Strings, erforderlich)
Enthält die Ethernet-Schnittstellen, auf denen nach einer verwendbaren Broadcast-Adresse gesucht werden soll. Diese Schnittstellen werden in der angegebenen Reihenfolge gesucht. Die erste gefundene IPv4 Broadcast-Adresse wird verwendet. Diese Liste gibt quasi die Standardwerte für die Benutzerkonfiguration vor.
Diese Konfiguration kann zur Laufzeit des Prozesses durch den Benutzer geändert werden. Es ist in diesem Fall die Funktion DistributorBroadcastCore::init()
mit der neuen Konfiguration aufzurufen. Geht bei der (Re-) Initialisierung etwas schief (es wird z. B. keine IPv4 Broadcast-Adresse gefunden) liefert die Funktion den Booleschen Wert false
zurück. Der Distributor ist dann inaktiv. Die Benutzerkonfiguration des Beispielprogramms befindet sich in der Datei user_config.json
.
broadcast.iface
(String, optional)
Name der Schnittstelle, dessen IPv4 Broadcast-Adresse verwendet werden soll.system_config.json
festgelegt)broadcast.max_time_offset
(Integer, optional)
Max. Differenz der Paket-Zeitstempel. Bei zu großer Differenz der Zeitstempel zur lokalen Systemzeit werden die Pakete verworfen.resend * 10 / poll_freq
broadcast.passphrase
(String, optional)
Aus dieser Phrase wird der AES-Schlüssel erzeugt. Ist die Option nicht vorhanden oder ein leerer String eingetragen, wird die Verschlüsselung abgeschaltet! Ohne Verschlüsselung sollte nur zu Debug-Zwecken gearbeitet werden!meinsm
"broadcast.poll_freq
(Integer, optional)
Anzahl der gesendeten/empfangenen Pakete pro Sekunde.
Der Wert 0
verwendet eine Abruffrequenz von 0,1 Hz. Dieser Wert ist nur zu Debug-Zwecken zu verwenden!100
4
broadcast.port
(Integer, optional)
Zu verwendender UDP Port.19800
broadcast.resend
(Integer, optional)
Anzahl der Sendevorgänge für eine MxMessage-Nachricht.16
3
Das Programm wird normalerweise folgendermaßen gestartet:
./sdk-demo -s system_config.json -u user_config.json
-d 1
: Setzt den Debug-Level zwischen 0..3
.-s system_config.json
: Legt die JSON-Datei der Systemkonfiguration fest.-u user_config.json
: Legt die JSON-Datei der Benutzerkonfiguration fest.-v
: Verbose-Modus; das Beispielprogramm gibt Statusinformationen auf der Konsole aus.Sobald das Programm ausgeführt wird, werden empfangene MxMessage-Nachrichten in folgender Form angezeigt:
Nachrichten können vom Programm gesendet werden, indem z. B. zuerst der Pfad der Nachricht und danach dessen Wert angegeben wird.
Beispiel:
Die Ausgabe zeigt dann Folgendes:
Die Eingabe eines Fragezeichens gibt Statistikinformationen aus:
put_publication =
Die Eingabe eines Ausrufezeichens beendet das Programm.
Für den Anfang ist zu empfehlen, ein lokales Testsystem aufzubauen. Sollte dies fehlerfrei funktionieren, kann eine Kamera hinzugefügt werden. Danach können MxBus-Module eingebunden werden.
Um das MxMessageSystem auf einem Computer zu testen, kann das Beispielprogramm zweimal gestartet werden.
./sdk-demo -s system_config.json -u user_config.json
Danach einfach eine MxMessage-Nachricht verschicken:
... und die Ausgabe des anderen Programms beobachten.
Um ein Testsystem mit einer MOBOTIX-Kamera aufzubauen, sollte das Dokument "Technical Note: MxMessageSystem" unter "https://www.mobotix.com/ger_DE/Support/MX-Mediathek/Wissen-kompakt" durchgearbeitet werden. Dort wird beschrieben, wie die Kamera konfiguriert werden muss, um MxMessage-Nachrichten zu empfangen und zu senden. Das Dokument enthält auch eine Einführung zu den MxBus-Modulen.