Nutzung von libcairo in pvbrowser
Zurück Inhalt Vor

pvserver Vorlage 1

overview.png
Übersicht über die Struktur des (Vorlage-) pvserver

pvserver bestehen aus mehreren Threads. Der 1 Thread "Accept" wartet an einem TCP Port auf Clienten. Für jeden neuen Clienten startet er einen neuen Thread "pvMain", der den Client bedient. Dabei wird erkannt, ob es sich um einen pvbrowser Client mit pv-Protokoll oder einen Webbrowser mit http-Protokoll handelt. Abhängig davon werden die pvbrowser Masken "maskX_slots" oder Webseiten mit "httpd" angezeigt. Diese Funktionen sind Unterprogramme "call" in einem "pvMain" Arbeiter Thread.

Es können sich also pvbrowser und webbrowser Clienten über ein "Network" verbinden und darüber ihr Protokoll "talk tcp" abwickeln.

Neben diesen für jeden pvserver obligatorischen Threads, die von der pvdevelop IDE vorgegeben werden (Quellcode wird generiert), ist in dieser pvserver Vorlage noch ein weiterer Thread "Loop" vorhanden. Dieser wird in der main() Funktion des pvserver gestartet und läuft in einer Endlosschleife. In der Vorlage zeichnet er dort zyklisch eine in der Visualisierung darzustellende Grafik (test.png/test.svg) mittels unserer libcairo Anbindung. Ein solcher "Loop" Thread würde typischereise auch die zu erfassenden und in der Visualisierung darzustellen Messgrößen einlesen (z.B. über shared memory / von Feldbus / ...) und die auszugebenden Stellgrößen ausgeben.

Die Arbeiter Threads "pvMain" können über "loopfifo" (rlFifo Klasse) Botschaften an den "Loop" Thread senden "send". Das Kommandozeilenwerkzeug "send_mbxcmd" kann diese Botschaften an den Loop Thread ebenfalls senden (rlMailbox Klasse).

Ziel ist es, dass in "Loop" die Mausereignisse für unsere cairo Widgets interpretiert werden können. Dazu senden "maskX_slots" bzw. "httpd" die auf den Clients (pvbrowser/webbrowser) aufgetretenen Mausereignisse an "Loop".


Zurück Inhalt Vor