Hauptseite | Klassenhierarchie | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente | Zusätzliche Informationen

M_LAYER.H

gehe zur Dokumentation dieser Datei
00001 #ifndef __M_LAYER_H 00002 #define __M_LAYER_H 00003 00004 #include "motrstrg\m_motcom.h" 00005 #include "utils\u_utils.h" 00006 #include "hardware\hwio.h" 00007 00008 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||-- 00009 00010 /* 00011 * High Level layer der Motoransteuerung. 00012 * Funktionen von ausserhalb sollten diese benutzen und nicht die 00013 * aus motors.h 00014 * 00015 * mFunctionName = funktion benutzt den aktivierten Motor 00016 * mlFunctionName= funktion benutzt den Motor mit der uebergebenen 00017 * MotorID (mid) 00018 * Achse= ein Motor, der eine bestimmte Achse bewegt 00019 * 00020 * Viele hier benutzte Typen werden in comhead.h definiert, auf 00021 * jeden Fall einmal anschauen. 00022 * In m_motcom.h stehen einige Kurzroutinen!! 00023 * 00024 * Kommentare: Jens-Uwe Rumstich, 18. Februar 1999 00025 * Stefan Lützkendorf, Februar 2001 00026 */ 00027 00028 #if defined (Build_Motors) 00029 #define _MOTORCLASS __declspec(dllexport) 00030 #elif defined(Use_Motors) 00031 #define _MOTORCLASS __declspec(dllimport) 00032 #else 00033 #define _MOTORCLASS 00034 #endif 00035 00036 #ifdef __cplusplus 00037 extern "C" 00038 { 00039 #endif 00040 // prototypes for export functions 00041 /******************************************************************************* 00042 ******************** MotorListen-Funktionen *********************************** 00043 ******************************************************************************/ 00044 00045 /* wurde Motors.DLL geladen und initialisiert? 00046 * TRUE = ja, 00047 * FALSE= no 00048 */ 00049 BOOL _MOTORCLASS WINAPI mlIsServerOK( void ); 00050 00051 /******************************************************************************* 00052 ************************ Motor-Funktionen ************************************* 00053 ******************************************************************************/ 00054 00055 /* Bewegt aktuellen Motor relativ zur aktuellen Position um eine 00056 * bestimmte Distanz. 00057 * Distanz wird im Winkelmass (Nutzereinheiten) uebergeben 00058 */ 00059 BOOL _MOTORCLASS WINAPI mMoveByDistance( double distance); 00060 00061 BOOL _MOTORCLASS WINAPI mSetLine( int, BOOL ); 00062 00063 /* Setzen der Defaults fuer Winkel (dAngleBias auf 0 ) und der 00064 * (erlaubten ?)Winkelbereiche (SetAngleRange). Die Werte brauchen nicht 00065 * uebergeben zu werden. 00066 */ 00067 void WINAPI mSetAngleDefault( void ); 00068 00069 /******************************************************************************* 00070 ****** "MoveScan"-Funktionen ************************************************** 00071 ******************************************************************************* 00072 * 00073 * Ein MoveScan setzt den Motor mit den aktuellen Parametern 00074 * in Bewegung und tastet die Position in regelmäßigen Abständen 00075 * ab. Der Entstehende Vektor von Positionsangaben steht danach zur 00076 * Verfügung. 00077 * 00078 */ 00079 00080 /* startet einen MoveScan für den aktuellen Motor 00081 */ 00082 void _MOTORCLASS WINAPI mStartMoveScan( int, int ); 00083 00084 /******************************************************************************* 00085 ************************ Motor-Simulation ************************************* 00086 ******************************************************************************/ 00087 // bit 0 - hardware 00088 // bit 1 - simulation 00089 enum TSimulationType { 00090 no_simulation= 1, 00091 simulation_only= 2, 00092 test_simulation= 3 00093 }; 00094 00095 /* legt Simulationstyp fest 00096 * 00097 * t == no_simulation 00098 * keine Simulation, evtl. registierte callbacks werden 00099 * ignoriert, es wird nur die Hardware angesteuert 00100 * t == simulation_only 00101 * keine Ansteuerung der Hardware, es werden für Schreib- und Lese- 00102 * Operationen die registirerten callbacks verwendet 00103 * t == test_simulation 00104 * es wird erst die Hardware angesteuert und dann die über die 00105 * registierten callbacks die Simulation, Lese-Operationen liefern 00106 * zusätzlich die Hardwarewerte für den Vergleich mit der Simulation 00107 */ 00108 void _MOTORCLASS WINAPI msSetSimulationType(TSimulationType t); 00109 00110 /* Typen für callback-Funktionen zur Kommunikation mit einer 00111 * Motornensimulation 00112 * 00113 * GET-Funktionen sind Lese-Operationen aus Sicht der motors.dll 00114 * PUT-Funktionen sind Schreib-Operationen 00115 * 00116 * die Parameter der GET-funktionen sind 00117 * - die Quelle (addresse oder port) 00118 * - der Hardware-Vergleichs-Wert falls der 00119 * Simulationstype test_simulation ist 00120 * die GET-Funktionen liefern den von der Simulation 00121 * generierten Wert 00122 * 00123 * die Parameter der PUT-Funktionen sind 00124 * - Ziel der Schreiboperation (addresse oder port) 00125 * - der zu schreibende Wert 00126 */ 00127 typedef char (WINAPI *T812ISA_GET_CALLBACK) (char* addr, char hw_value); 00128 typedef void (WINAPI *T812ISA_PUT_CALLBACK) (char* addr, char put); 00129 typedef int (WINAPI *T832_GET_CALLBACK) (unsigned port, int hw_value); 00130 typedef void (WINAPI *T832_PUT_CALLBACK) (unsigned port, int put); 00131 00132 /* Funktionen zum Registrieren oben beschriebener callback-Funktionen 00133 */ 00134 void _MOTORCLASS WINAPI msRegister_C812ISA_Get(T812ISA_GET_CALLBACK); 00135 void _MOTORCLASS WINAPI msRegister_C812ISA_Put(T812ISA_PUT_CALLBACK); 00136 void _MOTORCLASS WINAPI msRegister_C832_Get(T832_GET_CALLBACK); 00137 void _MOTORCLASS WINAPI msRegister_C832_Put(T832_PUT_CALLBACK); 00138 00139 00140 #ifdef __cplusplus 00141 00142 } 00143 #endif 00144 00145 /* verschiedene Type-Definitionen (Function-Casts) 00146 */ 00147 typedef BOOL (*TInitializeMotorsDLL)( void ); 00148 typedef BOOL (*TSetAxis)( int ); 00149 typedef int (*TGetAxis)( void ); 00150 typedef BOOL (*TSetLine)( int, BOOL ); 00151 typedef BOOL (*TIsMoveFinish)( void ); 00152 typedef BOOL (*TGetDistance)( double& ); 00153 typedef BOOL (*TIsServerOK)( void ); 00154 typedef BOOL (*TMoveToDistance)( double ); 00155 typedef BOOL (*TMoveByDistance)( double ); 00156 typedef BOOL (*TSetAxisWithName)( EAxisType ); 00157 typedef int (*TGetScanSize)( void ); 00158 typedef LPLONG (*TGetMoveScan)( void ); 00159 typedef void (*TStartMoveScan)( int, int ); 00160 typedef int (*TGetMoveFinishIdx)( void ); 00161 typedef void (*TSavePosition)( UINT, UINT, DWORD, DWORD, DWORD ); 00162 00163 /* table with several functions 00164 */ 00165 struct TMFunctionTable { 00166 public: 00167 TInitializeMotorsDLL InitializeMotorsDLL; 00168 TSetAxis SetAxis; 00169 TSetAxisWithName SetAxisWithName; 00170 TGetAxis GetAxis; 00171 TGetScanSize GetScanSize; 00172 TGetMoveScan GetMoveScan; 00173 TStartMoveScan StartMoveScan; 00174 TMoveToDistance MoveToDistance; 00175 TMoveByDistance MoveByDistance; 00176 TSetLine SetLine; 00177 TIsMoveFinish IsMoveFinish; 00178 TGetDistance GetDistance; 00179 TIsServerOK IsServerOK; 00180 TGetMoveFinishIdx GetMoveFinishIdx; 00181 TSavePosition SavePosition; 00182 }; 00183 00184 00185 //liefert den der spezifizierten id entsprechenden Controller aus der spezifizierten 00186 //Controllerliste -> instantiiert ggf. einen neuen Controller 00187 Controller* GetController(EDeviceType DeviceID, LPTSTR HardwareID, 00188 ControllerList* Controllers, DeviceList* Drivers, DWORD* index= 0); 00189 00190 00191 00192 #endif 00193 // __LastLine__ 00194 00195

Erzeugt am Sat Nov 13 12:48:06 2004 für XCTL32 von doxygen 1.3.7