Zur Sicherheit schiebe ich die Abbildung von TheMan auf den goLaTeX-Server.
Als ich kürzlich nach der Lösung für ein anderes Problem suchte, fand ich meine
pgf/TikZ-Zeichnung zu diesem Thema. Vielleicht dient sie jemandem als Anreiz für dessen Zeichnung. Ich habe mir erlaubt, von der farblichen Vorgabe abzuweichen.
\documentclass[tikz, border=5pt]{standalone}
\usepackage[utf8]{inputenc}% bei einer aktuellen TeX-Distribution nicht nötig
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usetikzlibrary{
matrix,
positioning,
arrows.meta,
calc%,
% shadows
}
\tikzset{font=\sffamily}
\begin{document}
\begin{tikzpicture}[
>={Stealth[round]},
very thick,
box/.style = {
font=\sffamily\bfseries,
% drop shadow,
draw=#1!90!black,
top color=#1!30!white,
bottom color=#1,
minimum width=3.2cm,
minimum height=.7cm,
rounded corners
},
box/.default=lightgray
]
\matrix [
matrix of nodes,
row sep=3mm,
nodes={
box,
minimum width=4cm
}
] (worker) {
RotorControlWorker\\
SimpleCameraWorker\\
StereoCameraWorker\\
ScaleWorker\\
StereoDataWorker\\
};
\node [
box=green!90!black,
left=-1cm of worker-1-1,
yshift=2.5cm
] (cp) {CameraProcessor};
\node [
box=blue!30!cyan,
minimum height=1cm,
right=-1cm of worker-1-1,
yshift=4cm
] (mw) {MainWindow};
\node [
box=gray,
right=8cm of cp
] (sqld) {SQL-Datenbank};
\node [
box=yellow,
above=of mw,
yshift=1cm
] (gui) {GUI};
% Linien zwischen der Matrix und CameraProcessor
\draw (worker-5-1) -| (cp) coordinate [pos=.88] (p1) coordinate [pos=.98] (p2);
% Pfeil von der Matrix zum MainWindow
\draw [->] (worker-5-1) -| (mw) node [pos=.9, right] {Daten};
\foreach \row in {1,...,4}
% Verbindungslinien der Matrix-Zeilen mit der Linie zu CameraProcessor
% Verbindungslinien der Matrix-Zeilen mit der Pfeil zu MainWindow
\foreach \boxname in {cp,mw}
\draw (worker-\row-1) -- (worker-\row-1-|\boxname);
% Pfeil zwischen MainWindow und Matrix
\draw [<->, shorten <=2pt, shorten >=2pt, dashed] (mw) to (worker-1-1);
\begin{scope}[shorten <=2pt, shorten >=10pt]
% Pfeil von MainWindow zu CameraProcessor
\draw [->] (mw.west) -- node [above left] {Sequenz} (cp.north);
% Pfeil zwischen MainWindow und SQL-Datenbank
\draw [<->] (mw.east) -- node [above right] {Daten} (sqld.north);
\end{scope}
% Pfeil von MainWindow zu GUI
\draw [->]
($(mw.north west)!2/3!(mw.north east)$) coordinate (mw above right)
to node [right] {Ausgabe der Daten}
(mw above right|-gui.south)
;
% Pfeil von GUI zu MainWindow
\draw [<-]
($(mw.north west)!1/3!(mw.north east)$) coordinate (mw above left)
to node [left, align=left] {Eingabe von Daten\\und Befehlen}
(mw above left|-gui.south)
;
% Pfeile unterhalb von CameraProcessor
\draw [->, transform canvas={xshift=2mm}]
(p1) to node [right] {Rückmeldung} (p2);
\draw [->, transform canvas={xshift=-2mm}]
(p2) to node [left] {Befehle} (p1);
\end{tikzpicture}
\end{document}
Leider muss man heute wohl noch etwas ergänzen: Ich begrüße sachliche Kritik, Verbesserungsvorschläge oder Alternativen zu meinem Lösungsvorschlag und betrachte diese nicht als Angriff auf mein Werk.