Embedded Linux SS 2014

Größe: px
Ab Seite anzeigen:

Download "Embedded Linux SS 2014"

Transkript

1 Baulicht Embedded Linux SS 2014 Christoph Keller Pascal Schmid Fabian Weisshaar Projektbeschreibung Unser Setup Hardware Programmierumgebungen PyCharm Android Studio Qt Creator Entwicklung Aufbau der Hardware Aufsetzen des Toolchains Genauer Überblick der Dienste Webseite RESTful API PyBaulicht (MiddleWare) Android App Command Line Interface Ausgabe per Qt (Output Service) D Bus Einführung zu D Bus Busse Konfiguration Verbindungen Object Model Objekte Proxies Methods Signale Interfaces Basistypen Containertypen D Bus Tools Unsere definierten Interfaces Das aufgebaute Baulicht Geplante Erweiterungen Ausblick in die Zukunft 1

2 Projektbeschreibung Unser Projekt umfasst eine Schnittstelle, durch die man ein Baulich zum Darstellen von Text bzw. Morsen verwenden kann. Hierzu verwenden wir folgende verbreitete Techniken: D Bus: Einer der wichtigsten Systemdienste auf jedem Linux. Der D Bus Messagebus bietet Programmen die Möglichkeit, miteinander zu kommunizieren. Der Kommunikationspartner muss hierbei nicht immer direkt bekannt sein, da man auch ähnlich wie in einem Netzwerk Signale aussenden kann, um andere Teilnehmer über Geschehnisse zu informieren. Dienste, die D Bus implementieren, können sehr gut über die Kommandozeile getestet werden. Auf diesem Weg integrieren sie sich perfekt in die Linux Umgebung, da hier auch über Bash Skripte Dienste getestet werden können. Python: Python ist eine sehr beliebte Programmiersprache, die wenig Overhead besitzt und auch direkt C Bibliotheken verwenden kann, sollte doch einmal ein gewünschtes Modul fehlen. Die Sprache eignet sich sehr gut für Webdienste, da hier sehr viel zur Laufzeit angepasst bzw. erzeugt werden kann. C++/Qt: Das C++ Framework Qt bietet von Haus aus guten Support für D Bus auf Hochsprachenniveau. Andererseits kann man die GPIO Ports falls nötig doch direkt in C programmieren. Aufgeteilt wird das Projekt in drei Bereiche: API Service: Dies ist ein Webservice, der auf dem embedded Gerät läuft und eine HTTP Schnittstelle anbietet, mit der man die angebotenen Dienste steuern kann. Über diesen Webservice können auch noch weitere Anbindungen wie z.b. eine Smartphone App ermöglicht werden. Middleware Service: Dieser Dienst läuft ebenfalls auf dem embedded Gerät und bietet eine System Schnittstelle, die über einen D Bus Dienst bereitgestellt wird. Hier ist auch die eigentliche Logik des gesamten Projekts enthalten. Output Service: Der Middleware Service kommuniziert mit dem Output Service ebenfalls über die D Bus System Schnittstelle. Hier werden die eigentlichen Ausgabe aktionen durchgeführt. Wird das anzusteuernde Gerät ausgetauscht oder soll ein weiteres hinzugefügt werden, so muss nichts an der Middleware angepasst werden. 2

3 Unser Setup Hardware Als embedded board haben wir uns für das Raspberry Pi entschieden, da dieses Gerät jeder von uns bereits zuhause hat und wir so einzelne Module auch ohne ein gemeinsames Treffen weiter entwickeln bzw. testen können. Das Board in der von uns verwendeten Fassung (Model B) hat die folgenden Hardwaremerkmale: Dimensions 85mm x 56mm Chip Broadcom BCM2835 SoC full HD multimedia applications processor CPU 700 MHz Low Power ARM1176JZ F Applications Processor GPU Dual Core VideoCore IV Multimedia Co Processor RAM Storage USB 2.0 Ethernet Video Connections 512 MB 400 MHz SDCard 2x USB Ports 1x 10/100mb Ethernet RJ45 Jack HDMI, Composite RCA Supported Resolutions to , including 1080p, PAL & NTSC standards Audio Multi Channel HD Audio over HDMI, Stereo from 3.5 mm jack Operating Systems Raspbian, RaspBMC, Arch Linux, Risc OS, OpenELEC, Pidora Power Draw / voltage 750mA up to 5V 3

4 GPIO 26 Other Connectivity 1x CSI 2 for Raspberry Pi camera modules 1x DSI for Raspberry Pi displays Power Source 1x Micro USB (Quelle: ?ICID=RPi modelbplus compchart) Für uns war der ausschlaggebende Grund für dieses Board und Model der vorhandene Netzwerkanschluss, den wir für die Eingabemöglichkeit gewollt haben. Programmierumgebungen 1 Für den Django und Python teil haben wir PyCharm von Jetbrains verwendet, da die Hochschule hierfür Lizenzen hat (es gibt auch eine Open Source Community Edition, die unter der Apache Lizenz steht) und wir damit schon Erfahrungen hatten. 2 Für alles was C und C++ (samt Qt) anbelangt haben wir den Qt Creator genommen auch mit dem Hintergrund der vorhandenen sehr guten Erfahrungen. Er unterstützt das automatische Hochladen des Binarys auf das Board und remote debugging per GDB. 3 Die App für Android haben wir mit Hilfe des Android Studio entwickelt, welches ebenfalls aus der Softwareschmiede Jetbrains entspringt project.org/wiki/category:tools::qtcreator 3 https://developer.android.com/sdk/installing/studio.html 4

5 PyCharm Für die Webseite haben wir Django benutzt. Damit man die Webseite starten kann, braucht man folgende Abhängigkeiten zu Python 2.7: django django bootstrap form djangorestframework pybaulicht (für die Ansteuerung des D Bus Dienstes) Die nicht im Projekt vorhanden (die ersten 3 Abhängigkeiten) kann man mit pip (einer Paketverwaltung für Python) auf folgende Weise installieren: # sudo pip install django django bootstrap form djangorestframework PyCharm mit dem geöffneten Message model (Webinterface/) 5

6 Android Studio Um sein Projekt zu testen, braucht man entweder ein virtuelles Android, dass man sich per 4 Android SDK zusammenklickt, oder man kann es mit dem Programm adb (Android Debug Bridge) auf sein physikalisches Telefon hochladen und dort remote debuggen. Android Studio mit dem geöffneten Projekt unserer Androidapp (AndroidApp/) 4 https://developer.android.com/sdk/index.html 6

7 Qt Creator Qt Creator mit der geöffneten Mainfunktion unseres Baulichts (Service/) 7

8 Entwicklung Aufbau der Hardware Über die GPIOs setzen wir direkt das Signal, jenachdem, ob geradedaslicht komplett aus ist oder ein dit (kurzes Signal) bzw. ein dah (langes Signal bzw. Strich) kommt.die Länge kann durch die Variable dit (in Service/Baulichtexecutor.cpp) bestimmt werden. Ein dahist3mal so langwieein ditunddie Pause ist 7malsolang.EinePausezwischen denzeichenbestehtaus3maldemzeitintervalleinesdit5. Aufsetzen des Toolchains DownloadundInstallationdesQtCreatorsunterDebian basiertensystemen: 5 https://de.wikipedia.org/wiki/morsezeichen#zeitschema_und_darstellung 8

9 # sudo apt get install qtcreator Wenn man das Raspbian (oder irgendein anderes Linuximage für den Raspberry Pi) entpackt hat und das Image file auf eine SD Karte geschrieben hat, kann man sich das Rootfilesystem auf den Entwicklungsrechner kopieren. Sollte man keine SD Karte zur Hand haben, helfen folgende Befehle: # sudo fdisk lu disk.img Dies zeigt einem die Partitionen des Images an. Man muss sich die Sektorgröße und den Startblock der zweiten Partition (die als Linux markiert wird) merken. Die beiden Werte geben den Startblock der zweiten Partition an, den wir wieder brauchen: # sudo mount o loop,offset=$startblock image.img /mnt So kann man sich auch das Rootfilesystem kopieren. Zudem brauchen wir noch diverse Pakete, die zur Emulation des Geräts dienen: # sudo apt get install scratchbox2 qemu user static binfmt support \ # g++ arm linux gnueabi gdb Dann können wir auf dem virtuellen Gerät Einstellungen machen # cp /usr/bin/qemu arm static /mnt/usr/bin/ # sudo chroot /mnt/usr/bin # apt get install libqt4 dev gdb && exit Für die Scratchbox muss man folgende Einstellungen machen: # cd /mnt # sb2 init armel arm linux gnueabi gcc Damit qmake und make lokal im Rootfilesystem ausgeführt werden, muss man 2 Dateien erstellen, diese ausführbar machen und den eingerückten Text hineinschreiben: 9

10 # touch qmake # #! /bin/sh # sb2 qmake qt4 # chmod +x./qmake # # touch make # #! /bin/sh # sb2 make # chmod +x./make Möchte man die kompilierten Binaries per SSH auf das Board schicken, muss zuerst ein SSH Schlüsselpaar erzeugt werden: # ssh keygen t rsa # ssh copy id i.ssh/id_rsa.pub Die Einstellungen sollten an das eigene Setup ungefähr so aussehen: Nun muss man nur noch ein sogenanntes Kit anlegen sprich eine Verbindung aus Compiler für ARM und der dazugehörigen Qt Version. Dies geht in den Einstellungen unter Compiler. Dort muss man den ARM g++ angeben, den man vorhin installiert hat, sowie die Qt Version im Rootfilesystem, die man einfügt, indem man auf das erstellte qmake file hinweist, das ebenfalls im Rootfilesystem liegt. Möchte man nun ein Projekt starten, muss in die.pro Datei (das qmake spezifische Makefile) folgendes geschrieben werden: 10

11 target.path = /root/ INSTALLS += target Genauer Überblick der Dienste Im folgenden gehen wir genauer auf die einzelnen Aufgaben und Schnittstellen der Dienste ein. Webseite Schematischer Aufbau Die in Django/Python geschriebene Webseite gibt uns die Möglichkeit von jedem mobilen Endgerät aus Nachrichten zu versenden bzw. den aktuellen Status der Nachrichten zu überblicken. Ausschnitt aus der Hauptwebseite: 11

12 12

13 Man kann sich auch die aktuelle Warteschlange anzeigen lassen: Möchte man eine Nachricht eingeben, so kann man auf der Hauptseite auf den Button Sende deine Nachricht klicken und erhält folgenden Dialog: 13

14 Die Schritte zum Webseite starten lauten wie folgt: #./manage.py syncdb (muss einmalig zum Erstellen der Datenbank ausgeführt werden) #./manage.py runserver 8080 Somit läuft der Server auf Port 8080 und man kann im Browser unter die Webseite aufrufen. Es muss außerdem noch das Output Plugin laufen, ansonsten wird die Webseite nicht gestartet. RESTful-API Diese ist Teil der Webseite. Mit einem GET Request an kann man sich die aktuellen Nachrichten in der Queue als JSON kodiertes Objekt ansehen. Ferner können mit einem POST Request auch Nachrichten an den Server gesendet werden. Durch den Einsatz der REST schnittstelle können wir Entwicklern eine API bereitstellen, mit der sie nicht über den Browser, sondern wie von uns demonstriert eine mobile 14

15 Anwendung schreiben, mit der sie den gleichen Funktionsumfang haben wie über die Webseite. PyBaulicht (MiddleWare) Damit die Webseite Zugriff auf den D Bus Daemon hat, haben wir eine Schnittstelle namens pybaulicht geschrieben, die aus 3 Komponenten besteht: 1. BaulichtDbus 2. BaulichtSettings 3. BaulichtText Während in allen dreien der Namespace definiert, sowie allgemein die Verbindung zum Bus aufgebaut wird, wird der Klasse BaulichtDbus der Text übergeben (Instanz von BaulichtText, int oder str) bzw. darin der Status verwaltet. Zudem werden hier Texte hinzugefügt, gelöscht oder aufgelistet. In den BaulichtSettings werden die Pins des Boards sowie die Länge eines dits bzw. des text spacings festgelegt. BaulichtText repräsentiert die Nachricht, die man senden möchte. Sie enthält den Text, das Erstellungsdatum sowie eine Zahl, wie oft sie wiederholt werden soll. Android App Durch die REST Schnittstelle war es uns möglich eine Android App zu bauen, mit der man Texte senden und die Queue sowie aktive Texte ansehen kann. 15

16 Hauptbildschirm Aktive Texte Warteschlange Command Line Interface Nachdem wir ganz nach Objektorientiertem Programmierparadigma eine Schichtentrennung durchgeführt haben, ist es möglich, den Service auch per CLI zu steuern. Die Hilfeausgabe lautet wie folgt: usage: baulicht cli.py [ h] [ l] [ a <string>] [ r <int>] [ s <int>] [ p {on,off}] [ pin <int>] [ status] [ start] [ stop] Baulicht command line interface to list, add, remove texts and change settings. optional arguments: h, help show this help message and exit l, list List all active texts 16

17 a <string>, add <string> Add Text to morse r <int>, remove <int> Remove Text by ID s <int>, speed <int> length of a dit in ms p {on,off}, pause {on,off} Stop morse/blink pin <int> Set GPIO Pin status Show current status start Start morse/blink stop Stop morse/blink Das Binary greift hierbei auf das von uns geschriebene pybaulicht zurück, um die Werte 6 abzufragen bzw. zu verändern sowie argparse, da es die Aufgabe des Argumenten parsens wahnsinnig einfach macht. Ausgabe per Qt (Output Service) Anfangs wollten wir auf eine vorhandene C API zurück greifen, die man unter der folgenden URL findet: https://github.com/vegetableavenger/bbbiolib Da wir die Funktionen der Schnittstelle nicht vollständig gebraucht haben, haben wir versucht direkt die Schritte in C nachzubauen, die man so auch auf der Kommandozeile ausführt. Den Port auf GPIO festlegen: # echo 7 > /sys/kernel/debug/omap_mux/gpmc_ad4 Port exportieren: # echo 36 > /sys/class/gpio/export Den Port auf Output stellen: # echo out > /sys/class/gpio/gpio36/direction Mit echo kann man nun den GPIO ein und ausschalten: # echo 1 > /sys/class/gpio/gpio36/value # echo 0 > /sys/class/gpio/gpio36/value 6 https://docs.python.org/dev/library/argparse.html 17

18 Das Ganze als C Code: if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL){ printf("cannot open export file.\n"); exit(1); } fprintf( fp, "%d", 30 ); fclose(fp); if ((fp = fopen("/sys/class/gpio/gpio30/direction", "rb+")) == NULL){ printf("cannot open direction file.\n"); exit(1); } fprintf(fp, "high"); fclose(fp); if ((fp = fopen("/sys/class/gpio/gpio30/value", "rb+")) == NULL){ printf("cannot open value file.\n"); exit(1); } Da aber nach dem zweiten Versuch der Code nicht laufen wollte, hat Christoph Keller sich dazu entschlossen, dass wir das Ganze gleich in Qt schreiben. Ein zentraler Teil der Programms auf nativer Seite ist die Baulicht Klasse, in deren Header sich unter anderem folgende Qt properties finden lassen: Q_CLASSINFO("D Bus Interface", "de.naptower.baulicht") Q_PROPERTY(int mode READ mode WRITE setmode NOTIFY modechanged) Dort werden 2 wichtige Funktionen (nicht programmiertechnisch, sondern funktional gesehen) definiert: Das DBus Interface, das die Klasse implementiert Ein Modusattribut, das bei einer Zustandsänderung ein SIGNAL ausgibt, auf das ein SLOT reagiert so wird in Qt asynchroner Programmfluss realisiert 18

19 Die main Methode instanziiert eine QDBusConnection auf dem Sessionbus, wobei diese vorerst noch keine Einstellungen besitzt. Danach werden die Settings sowie das Baulicht instantiiert, welchem die Settings übergeben werden. Danach werden sowohl die Settings als auch das Baulicht als Objekt am DBus registriert. Was beide Klassen machen, lässt sich leicht an den Headern der beiden Klassen sehen: Baulicht public: enum Mode { TextMode = 0, BlinkMode = 1 }; void setsettings(settings *settings); Settings* settings() const; public slots: void setmode(int mode); int mode() const; void setpaused(bool paused); bool paused() const; QString addtext(const QString& text, int repeat); void removetext(const QString& path); QStringList texts() const; void clear(); void start(); void stop(); signals: void modechanged(int mode); void pausedchanged(bool paused); void textadded(const QString& path); 19

20 Settings public slots: void setdit(int milliseconds); int dit() const; void settextspacing(int milliseconds); int textspacing() const; void setpin(int pin); int pin() const; signals: void ditchanged(int dit); void textspacingchanged(int textspacing); void pinchanged(int pin); D-Bus Einführung zu D-Bus Was ist D Bus? Dazu die offizielle Beschreibung des Projekts: D Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D Bus helps coordinate process lifecycle; it makes it simple and reliable to code a "single instance" application or daemon, and to launch applications and daemons on demand when their services are needed. D Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per user login session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one to one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, or 20

21 through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories. (Help wanted with better remote transports the transport 7 mechanism is well abstracted and extensible.) D Bus ist nur als IPC Ersatz gedacht, nicht für Kommunikation auf verschiedenen Hosts. Es ist verbindungsorientiert und hat einen Status (nicht wie bspw. UDP). Andererseits transportiert es immer Nachrichten fester Länge nicht einen Strom an Daten wie TCP. Es hat eine feste Varietät an ganzen Zahlen, Gleitkommazahlen und Strings. Dadurch kann eine falsch übertragene Nachricht erkannt werden. Für D Bus existieren diverse Bindings an Programmiersprachen, so dass niemand den C Code darunter direkt anfassen muss. In manchen Sprachen geht das sogar soweit, dass der Programmierer von D Bus gar nichts mit bekommt. Auf der offiziellen Webseite von D Bus findet sich folgender prägender Satz in der 8 Dokumentation der Referenzimplementierung : If you use this low level API directly, you're signing up for some pain. Selbst die Handhabung von D Bus mit der high level API GLIB ist immer noch sehr aufwendig und man sollte sich überlegen, ob man nicht dbus cxx oder ähnliches nimmt. Ein Beispiel für die Anwendung von D Bus ist zum Beispiel das Instant Messaging 9 Programm Pidgin, dass verschiedenste Signale aussendet und anhand derer etwa Desktopbenachrichtigungen angezeigt werden können, wenn ein Kontakt online kommt, eine Nachricht empfangen wird und ähnliches. Busse D Bus bietet 2 Arten der Kommunikation: Library oder daemon basiert. Während bei der Library theoretisch nur 2 Prozesse miteinander Daten austauschen können ist es bei der daemon basierten Kommunikation so, dass tatsächlich ein Bus bereit gestellt wird. Dadurch wird eine einmal gesendete Nachricht auf den Bus geschickt und jeder Empfänger, der sich dafür interessiert, fängt die Nachricht ab. Es ist möglich, dass mehrere Busse gleichzeitig auf einem System laufen, ohne sich gegenseitig zu stören. Unter Linux gab es zuvor immer 2 Arten von Bussen: Den Systembus, der z.b. dafür verantwortlich war, das Event eines angesteckten Geräts mit zu bekommen oder der Sessionbus, der benutzerabhängig Events verarbeitet hat. Dieser Sessionbus wurde von https://developer.pidgin.im/wiki/dbushowto 21

22 D Bus so erweitert, dass er Benutzer unterscheiden kann und sogar dazu noch Benutzer authentifizieren bzw. eine Zugangskontrolle bereitstellen kann. Schematische Übersicht über D Bus (Quelle Bus.freedesktop.org/doc/diagram.png) Jeder Bus hat eine Adresse, die genau beschreibt, wie man sich mit ihr zu verbinden hat. Normalerweise wird das durch einen Filenamen eines Unix domain sockets wie /tmp/.socket abgebildet. Durch die D Bus API wird dies aber komplett versteckt. Konfiguration Um D Bus zu konfigurieren, muss man ein so genanntes busconfig schreiben, was wiederum in einem XML basierten Format geschrieben wird Beispiele dazu findet man üblicherweise unter /etc/d Bus 1/system.conf oder /etc/d Bus 1/session.conf im Filesystem eines jeden Linux. 22

23 Verbindungen Jede Verbindung zu D Bus kann mit einem oder mehreren Namen assoziiert werden. Diese sind als die Bus names der Verbindungen bezeichnet. Die Namen sind Namen der Verbindungen, nicht Namen der Busse. Bus names bestehen aus einer Serie von eindeutigen Kennungen, die durch Punkte getrennt werden: Sie dürfen Buchstaben, Zahlen, Striche und Unterstriche enthalten. Damit besitzt die Verbindung den bus name, wie es im D Bus jargon heißt. Wenn eine Verbindung aufgebaut wird, nimmt sich der Bus sofort einen festen bus name, die ihm solang zugewiesen bleibt, wie der Bus existiert. Dies sind die unique connection names, denn keine andere Verbindung auf dem Bus wird den gleichen bus name haben auch wenn die Verbindung getrennt wird und andere erzeugt werden. Sie können daran erkannt werden, dass sie mit einem Doppelpunkt anfangen (etwa : ). Eine Verbindung kann auch zusätzliche Namen beantragen, um z.b. einen Service unter einem bekannten Namen anzubieten, die anhand einer Konvention ausgehandelt werden: Sie müssen aus zwei oder mehr punkt separierten Elementen bestehen: de.naptower.baulicht etwa. Nur eine Verbindung kann diesen Namen auf dem Bus gleichzeitig haben, aber abgesehen von den unique connection names, können bus names auch wieder abgegeben werden und von einem anderen Client genutzt werden. Object Model Objekte Bei der Kommunikation gibt es Endpunkte, die sich Objekte nennen. Diese werden vom Clientprozess erzeugt und existieren nur innerhalb der Verbindung des Clients zum Bus. Das Objekt bietet dem Clientprozess die Möglichkeit seine Services auf dem Bus anzubieten, dabei darf jeder Client eine beliebige Anzahl an Objekten erzeugen. Jede der Nachrichten fällt in eine der 3 Kategorien: 1. Anfragen des Clientprozesses an Objekte 2. Antworten auf die Anfragen sie gehen vom Objekt zurück zum Prozess 3. One way Nachrichten, die von Objekten ausgehen. Das sind Broadcasts an jeden verbundenen Client, der Interesse an den Nachrichten angegeben hat 23

24 Jeder Bus hat mindestens ein Objekt, das den Bus selbst repräsentiert. Clients können Informationen über den Busstatus abfragen, indem sie Anfragen an das Objekt schicken. Proxies Objekte können auf dem Bus durch Referenzen angesprochen werden, die im D Bus Jargon Proxies heißen. Ob man direkt mit dem Objekt oder aber mit einem Proxy spricht, kommt auf die Abstraktionsebene an, die durch das Languagebinding gegeben ist. Objekte haben Namen, die so genannten paths. Diesen Namen haben sie erhalten, da sie wie Dateisystempfade in der Unixwelt durch Slashes getrennt werden. Ein Objektname muss nur innerhalb der Verbindung zum Bus eindeutig sein. Da jedes Objekt innerhalb eines Kontextes der Verbindung lebt, braucht es eine Kombination aus der bus name Verbindung und dem Objektnamen, um es zu finden. Sobald man dies getan hat und es nochmal benutzen möchte, wird man sich eine Variable zulegen, die den Proxy zum Objekt darstellt. In machen Languagebindings bieten Proxies failovers an. Wenn man einen Proxy hat und dieser Client sich trennt, unter dem gleichen Namen wieder verbindet und das Objekt wieder belebt, kann es sein, dass das Programm, das auf dem Proxy aufbaut, von dem Vorgang gar nichts mit bekommt. Methods Wenn ein Client eine Anfrage an ein Objekt schickt sieht es diese Anfrage durch Aufruf einer Methode des Objekts: Das Objekt wird angewiesen, spezifische, benannte Aktion auszuführen. Normalerweise, wenn ein Client versucht eine Methode eines Objekts aufzurufen, die das Objekt nicht anbietet, wird ein Fehler ausgelöst. Die Methodendefinition kann verlangen, dass bestimmte Informationen in der Anfrage als Argumente übergeben werden. Für jede Anfrage enthält die Antwort das Ergebnis, neben entweder den Daten des Ergebnisses oder im Falle einer nicht durchführbaren Aktion Exceptioninformationen. Diese enthalten mindestens einen Exceptionnamen und eine Fehlernachricht. Die meisten D Bus Bindings bieten für den komplizierten Vorgang eine Vereinfachung. Wenn beispielsweise einem Objekt ein String als Argument übergeben wird, so wird dem 24

25 Funktionsaufruf auch nur ein String übergeben. Man muss hier nicht den String konvertieren und diesen dann in ein Datenfeld einer Nachricht überführen. Der Vorgang der Datenkapselung in Nachrichten wird marshalling genannt. Wird eine Nachricht gesendet, so hat man nicht unbedingt auf das Ergebnis zu warten, so dass der Programmfluss solange in einer Schleife verharrt. D Bus bietet Möglichkeiten mehrere Anfragen asynchron zu handhaben. Signale Eine andere Form der Kommunikation sind Signale. Diese one way Kommunikation kommt von einem Objekt und geht nirgendwo bestimmtes hin (broadcast). Clientprozesse können ihr Interesse an einem Signal eines bestimmten Namens bekunden und sobald ein passendes Signal ausgelöst wird, werden alle interessierten Clients eine Kopie dieses Signals empfangen. Für Signale gibt es keine Antworten: Das Objekt, dass das Signal aussendet, kann also nicht wissen, ob ein oder mehrere oder vielleicht auch gar kein Empfänger das Signal verarbeitet. Signale können Parameter übertragen, Clients können bestimmten, dass sie nur Signale empfangen wollen, deren Parameter bestimmten Werten entspricht. Interfaces Jedes Objekt hat bestimmte Methoden und schickt bestimmte Signale zusammengefasst bezeichnet man das als die member des Objekts. Alle Member werden in einem Interface spezifiziert. Genauso wie in der Objektorientierten Programmierung ist ein Interface ein Set an Deklarationen. Wenn man dieses Interface implementieren will, so muss man alle Methoden bereitstellen und die Verfügbarkeit der Signale an alle Listener verkünden.. Jeder der Member muss die Parameter akzeptieren oder bereitstellen, wie sie im Interface genannt werden. Jedes Objekt kann ein Interface implementieren, genauso wie in Java kann eine beliebige Anzahl an Objekten ein Interface implementieren. Genauso kann ein Objekt aber auch eine beliebige Anzahl an Interfaces implementieren. Die Kombination aus allen unterstützten Interfaces nennt man den type eines Objekts. 25

26 Wenn ein Client eine Methode aufruft oder auf ein Signal horcht, muss es das Objekt und die Member, auf die es sich bezieht deutlich machen. Zusätzlich dazu kann der Client das Interface, in welchem der Member erstellt wurde, benennen. Das kann in manchen Fällen notwendig sein: Wenn ein Objekt zwei Interfaces erstellt, die beide eine Methode namens foo spezifizieren, so muss man sie noch unterscheiden können. (Quelle: Basistypen Char y b n q i u x t Code Data Type 8 bit unsigned integer boolean value 16 bit signed integer 16 bit unsigned integer 32 bit signed integer 32 bit unsigned integer 64 bit signed integer 64 bit unsigned integer d double precision floating point (IEEE 754) s o g a UTF 8 string (no embedded null characters) D Bus Object Path string D Bus Signature string Array ( ) Structure start and end v Variant { } Dictionary/Map begin and end h Unix file descriptor 26

27 Containertypen D Bus erlaubt 4 verschiedene Containertypen: 1. Structs Structs sind von Klammern begrenzt und können jeden D Bus Basistyp enthalten. Z.B. enthält (ii) zwei Integer und ((ii)s) enthält ein Struct aus 2 Integern und einem darauf folgenden String. 2. Arrays Definieren eine Liste an member eines festen Typs. Der Buchstabe a muss direkt vor den im Array enthaltenen Typ geschrieben werden. Beispiele wären ai für ein int Array oder a(ii) für ein Array aus structs. 3. Variants Dürfen jeden validen Typ enthalten. Ein enthaltener Wert ist neben der Typsignatur automatisch gespeichert. 4. Dictionaries Dicts sind structs in der Syntax ähnlich, allerdings mit geschweiften Klammern. Sie enthalten immer 2 Werte für key value. Beispiel: a{ss} string key string value. Der Key muss ein Basistyp sein (kein Container), während der value jeder Wert sein darf. (Quelle: https://pythonhosted.org/txdbus/dbus_overview.html) D-Bus Tools 27

28 10 Mit dem Tool D Feet, das vom Gnome Projekt entwickelt wird, kann man sich Systemund Session bus anschauen. 11 D Bus liefert standardmäßig aber auch ein Tool namens dbus monitor mit, mit dem man untersuchen kann, was zurzeit für Nachrichten über den Bus gehen, was wie folgt aussieht: method call sender=:1.15 > dest=org.freedesktop.dbus serial=941 path=/org/freedesktop/dbus; interface=org.freedesktop.dbus; member=namehasowner string "org.kde.activitymanager" method call sender=:1.17 > dest=org.kde.klauncher serial=686 path=/klauncher; interface=org.kde.klauncher; member=start_service_by_desktop_path string "/usr/share/applications/turpial.desktop" array [ ] array [ string "DISPLAY=:0" ] string "scumm pc; ;80815;626_time953707" boolean true method return sender=:1.1 > dest=:1.17 reply_serial=686 int32 0 string "" string "" int Das Tool dbus send erlaubt es einem eine Nachricht auf den Bus zu schicken. Standardmäßig wird der Sessionbus genommen. Ein Ziel wird keines definiert, außer man gibt die Option dest an. 13 Eine Übersicht über die verschiedenen Werte bietet die manpage von dbus send: <contents> ::= <item> <container> [ <item> <container>...] 10 https://wiki.gnome.org/apps/dfeet 11 monitor.1.html 12 send.1.html 13 send 28

29 <item> ::=<type>:<value> <container>::=<array> <dict> <variant> <array> ::=array:<type>:<value>[,<value>...] <dict> ::=dict:<type>:<type>:<key>,<value>[,<key>,<value>...] <variant> ::=variant:<type>:<value> <type> ::=string int16 uint16 int32 uint32 int64 uint64 double byte boolean objpath Unsere definierten Interfaces WirhabenmehrereD BusInterfacesdefiniert: de.naptower.baulicht.blink de.naptower.baulicht.settings de.naptower.baulicht.text DiesewerdenallebeieinemDienstnamens de.naptower.baulicht Dienstregistriert. Wasmanhiersehenkann,istderBaumartigeAufbauderD BusInterfaces. Das aufgebaute Baulicht DasaufgehängteBaulichtimoberenDritteldesHotelturms 29

30 Geplante Erweiterungen Kontroll LCD (Ein LCD Display mit einer Zeile, um den aktuellen Text anzuzeigen) Gehäuse Hardware Button zum Ein und Ausschalten Zeitschaltung ohne Cron Job Settings über Webinterface Ausblick in die Zukunft Momentan gibt es noch keine öffentliche Möglichkeit, das Baulicht Nachrichten morsen zu lassen, aber sobald Fabian Weisshaar das Portforwarding eingerichtet hat, wird es unter möglich sein die Webseite zu erreichen. 30

DBUS Interprozess-Kommunikation für Embedded-Plattformen

DBUS Interprozess-Kommunikation für Embedded-Plattformen DBUS Interprozess-Kommunikation für Embedded-Plattformen Andreas Schwarz Neratec Solutions AG Firmenprofil Neratec Solutions AG Produkt-Entwicklungen für kundenspezifische elektronische Produkte Produkte

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Mark Fink at. VHS Augsburg 2014. Erste Schritte mit dem Raspberry PI. mark@mark-fink.de

Mark Fink at. VHS Augsburg 2014. Erste Schritte mit dem Raspberry PI. mark@mark-fink.de Mark Fink at VHS Augsburg 2014 mark@mark-fink.de Mark Fink Testautomation & PerformanceEngineering Finance, Telco, Logistic Mark Fink Webmaster for Media-Site Open-Source @ Github Robotics Mein aktuelles

Mehr

Einführung in die Programmierung mit Qt

Einführung in die Programmierung mit Qt Einführung in die Programmierung mit Qt Dr. Ralf Schüler 5.11.2009 Was ist Qt? sprich: [kju:t] Klassenbibliothek für C++ (ferner Java, Python u.a.) sehr umfangreich: GUI, Stringverarbeitung, reguläre Ausdrücke,

Mehr

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty 1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty 2. Buildroot installieren Buildroot (www.buildroot.org)

Mehr

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung

Application Note. Anbindung von Kunden-Software an SpiderControl Web Visualisierung 2015-02-25 1 of 6 Application Note Anbindung von Kunden-Software an SpiderControl Web Visualisierung Version ApplicationNote_AnbindungFremdsoftware /Version Seite 1 / 6 Version Datum Kommentar Autor 0.1

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Embedded So)ware. Einrichten der Arbeitsumgebung

Embedded So)ware. Einrichten der Arbeitsumgebung Embedded So)ware Einrichten der Arbeitsumgebung Inhaltsangabe 1. Was ist installiert 2. Was ist zu tun? Einrichten des Raspi! Cross Compiler auf den Arbeitsplatzrechner installieren! Raspi einbinden! Plugin

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Paynet Adapter Spezifikationen Voraussetzungen Datum : 21.07.08 Version : 1.0.0.2 21.07.2008 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung... 3 2 Architektur... 3 2.1 Grundsätze

Mehr

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit List & Label 16 List & Label Windows Azure List & Label Windows Azure - 2 - Inhalt Softwarevoraussetzungen 3 Schritt 1: Neues Projekt

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Yellowbill Adapter Spezifikationen Voraussetzungen Datum : 22.08.2013 Version : 1.0.0.2 22.08.2013 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung...3 2 Architektur...3 2.1 Grundsätze

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Aufbau einer Testumgebung mit VMware Server

Aufbau einer Testumgebung mit VMware Server Aufbau einer Testumgebung mit VMware Server 1. Download des kostenlosen VMware Servers / Registrierung... 2 2. Installation der Software... 2 2.1 VMware Server Windows client package... 3 3. Einrichten

Mehr

Theorie und Praxis einer JSON-RPC-basierten Web-API

Theorie und Praxis einer JSON-RPC-basierten Web-API Theorie und Praxis einer JSON-RPC-basierten Web-API Christian Krause Christian.Krause@raritan.com Raritan Deutschland GmbH Chemnitzer LinuxTage 2015 Gliederung 1 2 Remote Procedure Call Interface Definition

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Rechnernetze Praktikum Versuch 2: MySQL und VPN

Rechnernetze Praktikum Versuch 2: MySQL und VPN Rechnernetze Praktikum Versuch 2: MySQL und VPN Ziel Absicherung einer MySQL Verbindung mittels VPN Vorbereitung Warum muss eine MySQL Verbindung gesichert werden? Was versteht man unter MySQL Injektion?

Mehr

Rechnernetze Praktikum. Versuch 5: Linux embedded. Ziel

Rechnernetze Praktikum. Versuch 5: Linux embedded. Ziel Rechnernetze Praktikum Versuch 5: Linux embedded Ziel Installieren des Betriebssystems Raspian auf einem Raspberry mit anschließender Konfiguration und Installation weiterer Programme unter Linux. Greifen

Mehr

Making the Internet of Things

Making the Internet of Things DARIUSH FOROUHER ITI Uni Lübeck DANIEL LOOS 3. Sem. MLS Making the Internet of Things EIN ÜBERBLICK ÜBER PHYSICAL COMPUTING PLATTFORMS Das Internet der Dinge Inhalt Übersicht Arduino Raspberry PI Andere

Mehr

Linux - a bit advanced

Linux - a bit advanced Linux - a bit advanced Überblick Rechteverwaltung Dateisystem Shell-Programmierung Remote login Paketsystem Alternativen-System Rechte Drei Benutzerklassen Owner/User Group Others Drei Rechte Ausführen

Mehr

Renée Bäcker. Perl $foo Magazin

Renée Bäcker. Perl $foo Magazin Renée Bäcker Renée Bäcker Perl Renée Bäcker Perl $foo Magazin Renée Bäcker Perl $foo Magazin OTRS Renée Bäcker Perl $foo Magazin OTRS u.v.m Früher... Am Anfang steht der Kunde... dann kommt der Auftrag

Mehr

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme. Informatik I 05. November 2013 6. Python-, kommentieren, starten und entwickeln Informatik I 6. Python-, kommentieren, starten und entwickeln Bernhard Nebel Albert-Ludwigs-Universität Freiburg 05. November

Mehr

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13 NEWpixi* API und die Umstellung auf REST Fakten NEWpixi* API Technik REST-basierend.NET Webservice IIS Webserver Release 31. August 2013, zusammen mit dem NEWpixi* ELI Release Legacy API und erste NEWpixi*

Mehr

Wie verwende ich Twitter in MAGIC THipPro

Wie verwende ich Twitter in MAGIC THipPro Wie verwende ich Twitter in MAGIC THipPro Konfigurationsanleitung Version: V1-10. August 2015 by AVT Audio Video Technologies GmbH Registrierung der Social Media Option Stellt die Social Media Option allen

Mehr

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards Embedded Linux am Beispiel des Gnublin-Boards Was ist Embedded Linux? Wikipedia Als Embedded Linux bezeichnet man ein eingebettetes System mit einem auf dem Linux-Kernel basierenden Betriebssystem. In

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

XCOM 2: SDK Schnellstartanleitung

XCOM 2: SDK Schnellstartanleitung XCOM 2: SDK Schnellstartanleitung Inhalt Einführung... 1 Vor dem Start... 2 Das XCOM2-SDK in Steam installieren... 2 Installation des Visual Studio 2013 Shell (Isoliert) Redistributable Package... 2 Modbuddy

Mehr

WCF Services in InfoPath 2010 nutzen

WCF Services in InfoPath 2010 nutzen WCF Services in InfoPath 2010 nutzen Abstract Gerade wenn man schreibend von InfoPath aus auf eine SQL-Server Datenbank zugreifen will, kommt man quasi um einen Web Service nicht herum. In diesem Post

Mehr

Securepoint Security Systems

Securepoint Security Systems HowTo: Virtuelle Maschine in VMware für eine Securepoint Firewall einrichten Securepoint Security Systems Version 2007nx Release 3 Inhalt 1 VMware Server Console installieren... 4 2 VMware Server Console

Mehr

2. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.

2. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt. Arbeitsblätter Der Windows Small Business Server 2011 MCTS Trainer Vorbereitung zur MCTS Prüfung 70 169 Aufgaben Kapitel 1 1. Sie sind der Administrator Ihres Netzwerks, das den SBS 2011 Standard ausführt.

Mehr

German Metasploit Framework Tutorial 16. August 2005 dav

German Metasploit Framework Tutorial 16. August 2005 dav German Metasploit Framework Tutorial 16. August 2005 dav Inhalt 1. Einleitung 2. Exploit Datenbank 2.1. Neue Exploits integrieren 3. Payload Datenbank 4. Konfiguration und Anwendungen eines Exploits 4.1.

Mehr

Raspberry Pi Appliances. Das richtige Betriebssystem für die eigene SW Lösung finden Pi and More 7 Nico Maas

Raspberry Pi Appliances. Das richtige Betriebssystem für die eigene SW Lösung finden Pi and More 7 Nico Maas Raspberry Pi Appliances Das richtige Betriebssystem für die eigene SW Lösung finden Pi and More 7 Nico Maas Zur Person Nico Maas IT Systemelektroniker Bachelor of Science mail@nico-maas.de www.nico-maas.de

Mehr

embedded projects GmbH

embedded projects GmbH embedded projects GmbH e Quickstart GNUBLIN 32 MB (700641) Montage- und Aufbauanleitung Beispielanwendung (Rote LED auf dem Gnublin ) 1/12 Lieber Kunde, wir versuchen mit unseren Datenenblättern Ihnen

Mehr

Embedded-Linux-Seminare. Toolchains

Embedded-Linux-Seminare. Toolchains Embedded-Linux-Seminare Toolchains http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de Kopier-Rechte

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Apps-Entwicklung mit Netbeans

Apps-Entwicklung mit Netbeans JDroid mit Netbeans Seite 1 Apps-Entwicklung mit Netbeans Version 2.2, 30. April 2013 Vorbereitungen: 1. JDK SE neuste Version installieren, (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung

Mehr

Typo 3 installieren. Schritt 1: Download von Typo3

Typo 3 installieren. Schritt 1: Download von Typo3 Typo 3 installieren Bevor Sie Typo3 installieren, müssen Sie folgende Informationen beachten: Typo3 benötigt eine leere Datenbank. Mit Ihrem Abonnement verfügen Sie über eine einzige Datenbank. Sie können

Mehr

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+

Mehr

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind Erweiterungen Der Rest / Icinga OpenSource Network-Monitoring im großen Stil Manuel Landesfeind Institut für Mathematik Georg-August-Universität Göttingen This presentation can be used under the terms

Mehr

KONFIGURATION DES MOZILLA E-MAIL CLIENT

KONFIGURATION DES MOZILLA E-MAIL CLIENT KONFIGURATION DES MOZILLA E-MAIL CLIENT Copyright 2004 by 2 ways - media & design, Inh. Lars Plessmann, Paulinenstr. 12, D-70178 Stuttgart. http://www.2-ways.de Lars.Plessmann@2-ways.de Der Mozilla Email

Mehr

Wiederholung: Beginn

Wiederholung: Beginn B) Webserivces W3C Web Services Architecture Group: "Ein Web Service ist eine durch einen URI eindeutige identifizierte Softwareanwendung, deren Schnittstellen als XML Artefakte definiert, beschrieben

Mehr

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1 Präsentation homevisu Familie Peter Beck Juni 2011 2011 p b e Peter Beck 1 Funktionensumfang Der Funktionsumfang das provisu Framework. Modular und durch Plug-In erweiterbar / anpassbar. Plug-In Schnittstelle

Mehr

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK und dem Zugriff auf Web Services vertraut. Der Web Service

Mehr

USB -> Seriell Adapterkabel Benutzerhandbuch

USB -> Seriell Adapterkabel Benutzerhandbuch USB -> Seriell Adapterkabel Benutzerhandbuch 1. Produkt Eigenschaften 1 2. System Vorraussetzungen 1 3. Treiber Installation (Alle Windows Systeme) 1 4. Den COM Port ändern 2 5. Einstellen eines RS232

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

Network-Attached Storage mit FreeNAS

Network-Attached Storage mit FreeNAS Network-Attached Storage mit FreeNAS Diese Anleitung zeigt das Setup eines NAS-Servers mit FreeNAS. FreeNAS basiert auf dem OS FreeBSD und unterstützt CIFS (samba), FTP, NFS, RSYNC, SSH, lokale Benutzer-Authentifizierung

Mehr

Softwareentwicklung 2 (ILV) Übung 1

Softwareentwicklung 2 (ILV) Übung 1 Fragen: Softwareentwicklung 2 (ILV) Übung 1 1.) Was ist Git? (siehe http://de.wikipedia.org/wiki/git ) git clone https://its-git.fh-salzburg.ac.at/eforsthofer.lba/swe2.git 2.) Was sind Zeiger und wie wird

Mehr

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

Erste Schritte mit Lejos unter Linux

Erste Schritte mit Lejos unter Linux Erste Schritte mit Lejos unter Linux Lejos ist eine Java Entwicklungsumgebung für den NXT Computer von Lego Minstorms. Diese Anleitung wurde unter Ubuntu 12.04 getestet. Installation Die gesamte Installation

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

G-Info Lizenzmanager

G-Info Lizenzmanager G-Info Lizenzmanager Version 4.0.1001.0 Allgemein Der G-Info Lizenzmanager besteht im wesentlichen aus einem Dienst, um G-Info Modulen (G-Info Data, G-Info View etc.; im folgenden Klienten genannt) zentral

Mehr

NetMan Desktop Manager Quick-Start-Guide

NetMan Desktop Manager Quick-Start-Guide NetMan Desktop Manager Quick-Start-Guide In diesem Dokument wird die Installation von NetMan Desktop Manager beschrieben. Beachten Sie, dass hier nur ein Standard-Installationsszenario beschrieben wird.

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Remote Administration von Windows Servern mit Microsoft Terminal Services und OpenSSH

Remote Administration von Windows Servern mit Microsoft Terminal Services und OpenSSH Remote Administration von Windows Servern mit Microsoft Terminal Services und OpenSSH von Dominick Baier (dbaier@ernw.de) und Jens Franke (jfranke@ernw.de) 1 Einleitung Dieses Dokument behandelt die flexible

Mehr

Appery.io Mobile Apps schnell und einfach entwickeln

Appery.io Mobile Apps schnell und einfach entwickeln Appery.io Mobile Apps schnell und einfach entwickeln Cloud-basierte Entwicklungsumgebung, keine lokale Installation von Entwicklungsumgebung nötig. Technologie: HTML5. JQuery Mobile, Apache Cordova. Plattformen:

Mehr

Was ist QT? Beispiele: KDE Google Earth Mathematika

Was ist QT? Beispiele: KDE Google Earth Mathematika Einführung in QT Was ist QT? QT ist eine Klassenbibliothek für plattformübergreifende Programmierung graphischer Benutzeroberflächen QT ist für verschiedene Graphikplattformen wie X11 (Unix), Windows,

Mehr

Asynchrone Webservices mit Axis 1.x in Java

Asynchrone Webservices mit Axis 1.x in Java Asynchrone Webservices mit Axis 1.x in Java 1. Übersicht Architektur Da Webservices nach relativ kurzen Timeouts Anfragen abgearbeitet haben müsse, sind komplexe Anfragen wie sie in der Bioinformatik üblich

Mehr

check_cisco_voice Dokumentation

check_cisco_voice Dokumentation check_cisco_voice Dokumentation Inhaltsverzeichnis 1. Vorbereitung...2 2. Verwendung...3 2.1 Usage / Parameter...3 2.2 Modi...5 2.2.1 Lern-Modus...5 2.2.2 Interface-Modus...6 2.2.3 Gesamtstatus...8 2.2.4

Mehr

PCFaceSwitch. Treiber und Steuerprogramm für eine Extender-Karte für den PCI-Express-Bus

PCFaceSwitch. Treiber und Steuerprogramm für eine Extender-Karte für den PCI-Express-Bus PCFaceSwitch Treiber und Steuerprogramm für eine Extender-Karte für den PCI-Express-Bus Version 1.7 Juni 2013 Hinweise zur Installation, Funktionsweise und Lizenzierung Für Ihre Fragen stehen wir gern

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks

Löschen eines erkannten aber noch nicht konfigurierten Laufwerks NetWorker - Allgemein Tip 359, Seite 1/6 Löschen eines erkannten aber noch nicht konfigurierten Laufwerks Seit der Version 7.3.0 ist es sehr einfach, vorhandene Sicherungslaufwerke durch den NetWorker

Mehr

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com z/os Explorer Agenda Introduction and Background Why do you want z/os Explorer? What does z/os Explorer do? z/os Resource Management

Mehr

Einrichten der Outlook-Synchronisation

Einrichten der Outlook-Synchronisation Das will ich auch wissen! - Kapitel 3 Einrichten der Outlook-Synchronisation Inhaltsverzeichnis Überblick über dieses Dokument... 2 Diese Kenntnisse möchten wir Ihnen vermitteln... 2 Diese Kenntnisse empfehlen

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Baby-LIN / HARP-5 Arbeitsablauf und Konfiguration

Baby-LIN / HARP-5 Arbeitsablauf und Konfiguration Baby-LIN / HARP-5 Arbeitsablauf und Konfiguration Andreas Lipowsky Lipowsky Industrie-Elektronik GmbH Folie-1 LIN Bus Anwendungsbereiche Baby-LIN/HARP-5 Geräte werden dazu verwendet, um mit LIN Bus ausgestattete

Mehr

I2C Serial 2.6 LCD Modul. Verwendung mit einem Arduino

I2C Serial 2.6 LCD Modul. Verwendung mit einem Arduino I2C Serial 2.6 LCD Modul Sehr geehrter Kunde, vielen Dank, dass Sie sich für unser Produktentschieden haben. Im Folgenden haben wir aufgelistet, was bei der Inbetriebnahme zu beachten ist: Verwendung mit

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

EX-6031. RS-232 zu Ethernet / IP. Bedienungsanleitung. 7. Anschlüsse. 8. Technische Daten. Seriell 9 Pin D-SUB Stecker

EX-6031. RS-232 zu Ethernet / IP. Bedienungsanleitung. 7. Anschlüsse. 8. Technische Daten. Seriell 9 Pin D-SUB Stecker 7. Anschlüsse Bedienungsanleitung Seriell 9 Pin D-SUB Stecker Pin Signal Pin Signal Pin Signal 1 DCD 4 DTR 7 RTS 2 RXD 5 GROUND 8 CTS 3 TXD 6 DSR 9 DB 9M EX-6031 8. Technische Daten Stromanschluss: 5V

Mehr

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth Tutorial: Eigene Module und Extensions entwickeln version: 0.1 Author: Anja Beuth Table of contents 1 2 2.1 2.2 2.3 2.4 3 4 4.1 4.2 4.3 5 5.1 6 6.1 6.2 Notwendigkeit prüfen... Ein Projekt in Visual Studio

Mehr

Der Adapter Z250I / Z270I lässt sich auf folgenden Betriebssystemen installieren:

Der Adapter Z250I / Z270I lässt sich auf folgenden Betriebssystemen installieren: Installationshinweise Z250I / Z270I Adapter IR USB Installation hints Z250I / Z270I Adapter IR USB 06/07 (Laden Sie den Treiber vom WEB, entpacken Sie ihn in ein leeres Verzeichnis und geben Sie dieses

Mehr

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

.NET-Networking 2 Windows Communication Foundation

.NET-Networking 2 Windows Communication Foundation .NET-Networking 2 Windows Communication Foundation Proseminar Objektorientiertes Programmieren mit.net und C# Fabian Raab Institut für Informatik Software & Systems Engineering Agenda Grundproblem Bestandteile

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

ecall sms & fax-portal

ecall sms & fax-portal ecall sms & fax-portal Beschreibung des s Dateiname Beschreibung_-_eCall 2015.08.04 Version 1.1 Datum 04.08.2015 Dolphin Systems AG Informieren & Alarmieren Samstagernstrasse 45 CH-8832 Wollerau Tel. +41

Mehr

Installationsanleitung Tivoli Storage Manager für Mac OS

Installationsanleitung Tivoli Storage Manager für Mac OS 11. März 2009, Version 1.0 Installationsanleitung für Mac OS X Verwaltungsdirektion Informatikdienste Installationsanleitung für Mac OS Inhaltsverzeichnis...1 Installation... 1 Voraussetzungen...1 Version

Mehr

Lokale Installation von DotNetNuke 4 ohne IIS

Lokale Installation von DotNetNuke 4 ohne IIS Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Einrichtung des Systems...Seite 04 3. Erzeugen eines Backup-Skripts...Seite

Mehr

TwinCAT HMI Application

TwinCAT HMI Application New Automation Technology TwinCAT HMI Application 08.05.2010 1 Überblick Einleitung Übersicht Möglichkeiten der Applikation Struktur und Komponenten Komponenten für das Microsoft Visual Studio Anleger

Mehr

Managed VPSv3 Was ist neu?

Managed VPSv3 Was ist neu? Managed VPSv3 Was ist neu? Copyright 2006 VERIO Europe Seite 1 1 EINFÜHRUNG 3 1.1 Inhalt 3 2 WAS IST NEU? 4 2.1 Speicherplatz 4 2.2 Betriebssystem 4 2.3 Dateisystem 4 2.4 Wichtige Services 5 2.5 Programme

Mehr

SchlieSSen Sie Ihren Lemur an

SchlieSSen Sie Ihren Lemur an 1 SchlieSSen Sie Ihren Lemur an Der Lemur ist nicht irgendein durchschnittlicher MIDI-Controller. Er spricht 1000 Mal schneller und mit der 4-fachen Auflösung. Also finden Sie auf der Rückseite auch nicht

Mehr

EX-6032. 2 x RS-232 zu Ethernet / IP. Bedienungsanleitung. 6. Anschlüsse. 7. Technische Daten. Seriell 9 Pin D-SUB Stecker (Port 1 und 2) :

EX-6032. 2 x RS-232 zu Ethernet / IP. Bedienungsanleitung. 6. Anschlüsse. 7. Technische Daten. Seriell 9 Pin D-SUB Stecker (Port 1 und 2) : 6. Anschlüsse Bedienungsanleitung Seriell 9 Pin D-SUB Stecker (Port 1 und 2) : Pin Signal Pin Signal Pin Signal 1 CDC 4 DTR 7 RTS 2 RXD 5 GROUND 8 CTS 3 TXD 6 DSR 9 RI DB 9M EX-6032 7. Technische Daten

Mehr

Skalierbare Webanwendungen mit Python und Google App Engine

Skalierbare Webanwendungen mit Python und Google App Engine Skalierbare Webanwendungen mit Python und Google App Engine Oliver Albers 03. Juli 2008 1/32 Einführung Worum geht es? Pro und Contra Technik Genereller Aufbau Anwendungskonfiguration Verarbeitung von

Mehr

Zeiterfassungsanlage Handbuch

Zeiterfassungsanlage Handbuch Zeiterfassungsanlage Handbuch Inhalt In diesem Handbuch werden Sie die Zeiterfassungsanlage kennen sowie verstehen lernen. Es wird beschrieben wie Sie die Anlage einstellen können und wie das Überwachungsprogramm

Mehr

Client/Server-Systeme

Client/Server-Systeme Frühjahrsemester 2011 CS104 Programmieren II / CS108 Programmier-Projekt Java-Projekt Kapitel 3: /Server-Architekturen H. Schuldt /Server-Systeme Ein zweischichtiges /Server-System ist die einfachste Variante

Mehr

Mobile Anwendungen Google Cloud Messaging

Mobile Anwendungen Google Cloud Messaging Mobile Anwendungen Google Cloud Messaging 1. Allgemeines zu Google Cloud Messaging (GCM): - 60% der Top 100 Apps nutzen Google Cloud Messagging - 200.000 Messages pro Sekunde = 17 Milliarden Messages pro

Mehr

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29)

MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) MySQL Community Server 5.6 Installationsbeispiel (Ab 5.5.29) Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der

Mehr

1 Native C Code in C# Umgebung mit Visual Studio 2010

1 Native C Code in C# Umgebung mit Visual Studio 2010 1 Native C Code in C# Umgebung mit Visual Studio 2010 29.07.2013 1.1 Ziel Ein Embedded C Code soll innerhalb einer C# Umgebung lauf- und debuggfähig sein. Der C# Anteil stellt dem Embedded C Code einen

Mehr

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

Embedded Webserver. Einleitung. Jürgen Pauritsch und Stefan Thonhofer

Embedded Webserver. Einleitung. Jürgen Pauritsch und Stefan Thonhofer Jürgen Pauritsch und Stefan Thonhofer Embedded Webserver Einleitung Ziel unseres Projekts war es, einen Webserver auf einer einzigen Platine ( Embedded system, System on a chip ) aufzusetzen. Der Vorteil

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Anleitung zur Webservice Entwicklung unter Eclipse

Anleitung zur Webservice Entwicklung unter Eclipse Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for

Mehr

Icinga Teil 2. Andreas Teuchert. 25. Juli 2014

Icinga Teil 2. Andreas Teuchert. 25. Juli 2014 Icinga Teil 2 Andreas Teuchert 25. Juli 2014 1 Nagios-Plugins Programme, die den Status von Diensten überprüfen können liegen in /usr/lib/nagios/plugins/ werden von Icinga aufgerufen, geben Status über

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 E-Mail: sales@softvision.de Web: www.softvision.de Inhaltsverzeichnis

Mehr