Mit der pendatastruct werden jeweils die augenblicklichen Daten
des Pendelsystem vom Client an den Server
geschickt. Die Struktur wird mit der Nachricht MSG_PENDATA
mitgeschickt.
typedef struct { double motw; double motv; double mota; double penw; double penv; double pena; double force; } pendatastruct;
Winkel des Motors
Winkelgeschwindigkeit des Motors
Winkelbeschleunigung des Motors
Winkel des Pendels
Winkelgeschwindigkeit des Pendels
Winkelbeschleunigung des Pendels
Kraft auf den Antriebsarm
Die extradatastruct enthält die zusätzlichen Daten, die mit
einer Nachricht geschickt werden. Da diese Daten von verschiedenem
Format sein können, wird eine union verwendet.
typedef union { pendatastruct d; char name[80]; } extradatastruct;
Parameter des Pendelsystems
Name, des zu ladenden Netzwerks
Die shmstruct wird in den beiden Shared Memory Bereichen
angelegt. Sie ist jeweils einmal in der Richtung Client
Server und einmal in Richtung Server
Client vorhanden. Dies ist nötig, um die
Kommunikation zwischen den beiden Prozessen zu entkoppeln.
typedef struct { int semaphor; int ack; int count; int command; int datalen; pendatastruct d; } shmstruct;
Semaphor für den ausschließenden Zugriff auf die gesamte Struktur
Quittierung vom Empfänger nach Empfang der Nachricht
Zähler über die geschickten Nachrichten
übertragene Nachricht
Länge der Extradaten der Nachricht
Extradaten mit variabler Länge
Die setparmstruct wird in xpendel.c für die Parametereingabe
unter X-Window benötigt.
Mit ihr wird die Dialogbox definiert, die beim Anklicken
einer der Parameter aufgerufen wird.
typedef struct { Widget parent; String label; int id; } setparmstruct; typedef setparmstruct *psetparm;
Vater Widget
Ausgabe beim Darstellen des Dialogs
Parameter der geändert werden soll
Die folgenden Strukturen werden in xwidget.c verwendet und
dienen dazu eine eigene Fensterklasse, Widget genannt, zu definieren. Diese
Fensterklasse ist dann für die Anzeige des Pendels zuständig.
typedef struct { int dummy_field; } PendulumClassPart; typedef struct { CoreClassPart core_class; PendulumClassPart pendulum_class; } PendulumClassRec; typedef struct { int dummy_field; } PendulumPart; typedef struct { CorePart core; PendulumPart pendulum; } PendulumRec; typedef PendulumClassRec *PendulumWidgetClass; typedef PendulumRec *PendulumWidget;