Kennung für das Versionskontroll-System:
char *rcs = ''$Id: client.c,v 1.306 1996/06/19 17:30:00 heuler$'';
Globale Variablen:
FILE *logfile; /* descriptor for logging */ int clientsleep; /* client sleep time */ int devfd; /* descriptor of open device */ int control; /* control enabled */ int neuro; /* neuro or fuzzy control */ int cmd_lost; /* lost commands by hardware */ int max_cmd_lost; /* max number of lost commands */
Setzt die Parameter des Pendels im Client zurück:
void ResetChildParm();
Setzt die Parameter des Pendelsystems im Client auf die vom Server
gesendeten Werte:
void SetChildParm(pendatastruct *d);
Startet das Mitschreiben der Pendelparameter in die Logdatei:
void StartLog();
Stopt das Mitschreiben der Pendelparameter in die Logdatei:
void StopLog();
Öffnet das Device zum Hardware-Gerätetreiber:
void InitHardware();
Schließt das Device zum Hardware-Gerätetreiber:
void CloseHardware();
Liest mittels des Devices von der Hardware die aktuellen Werte des
Pendelsystems ein:
void ReadHardware();
Schickt einen Positionierbefehl an die Hardware:
void WriteHardware();
Schickt einen Befehl an den Gerätetreiber:
void CommandIO(int cmd, int arg);
Schreibt die aktuellen Parameter des Pendelsystems in das Logfile:
void LogParam();
Beendet den Client:
void KillChild();
Wertet die vom Server empfangene Nachricht aus und ruft die
entsprechenden Funktionen auf:
void ParseCommands(int command, extradatastruct *data);
main() des Clients, wird nach dem Prozeßstart vom Server aufgerufen:
void ClientMain();
Spezielle Funktionen für den hochauflösenden Timer
Lokale Variablen:
static int start; /* start of last calculation */ static struct timeval tv; /* timer structure */ static int oldsec = 0; /* last second */ static int calc = 0; /* count of calculations per second */
Wartet, bis die in clientsleep, siehe Kap. ,
angebene Zeit abgelaufen ist. Diese Funktion wird nach jedem
Rechenschritt aufgerufen und mißt die Zeit von TimerStart
bis zum augenblicklichen Zeitpunkt:
void TimerSleepNext();