00001 #include "definiciones.h"
00002
00003 portstream_fd COMStream;
00004
00013 DLL_EXPORT void STD InicializarSystemaMIL (MIL_ID *app,MIL_ID *SysVGA)
00014 {
00015 MappAlloc (M_DEFAULT,&*app);
00016 MsysAlloc (M_SYSTEM_VGA,M_DEFAULT,M_NO_DDRAW,&*SysVGA);
00017 }
00018
00029 DLL_EXPORT void STD CerrarSystemaMIL (MIL_ID app,MIL_ID sysVGA,MIL_ID sysMETEOR)
00030 {
00031 MsysFree (sysVGA);
00032 if (sysMETEOR!=0) MsysFree (sysMETEOR);
00033 MappFree (app);
00034 }
00035
00054 DLL_EXPORT void STD ConectarCamaraMIL (HWND WindowHandle,MIL_ID *SysMETEOR,MIL_ID *disp,
00055 MIL_ID *camara,MIL_ID *digitalizer,long alto,
00056 long ancho)
00057 {
00058
00059
00060
00061 MdigAlloc (*SysMETEOR,M_DEFAULT,"M_CCIR",M_DEFAULT,&*digitalizer);
00062 MdigChannel(*digitalizer, M_CH0);
00063 MdigControl(*digitalizer, M_GRAB_SCALE_X, M_FILL_DISPLAY);
00064 MdigControl(*digitalizer, M_GRAB_SCALE_Y, M_FILL_DISPLAY);
00065 MdigInquire(*digitalizer, M_SIZE_X, &ancho);
00066 MdigInquire(*digitalizer, M_SIZE_Y, &alto);
00067 MbufAlloc2d (*SysMETEOR,alto,ancho,8 + M_UNSIGNED,M_IMAGE+M_GRAB+M_DISP,&*camara);
00068 MdispSelectWindow (*disp,*camara,WindowHandle);
00069
00070 }
00071
00081 DLL_EXPORT void STD DesconectarCamaraMIL (MIL_ID Display, MIL_ID Digitalizer, MIL_ID Buffer)
00082 {
00083 MdispFree (Display);
00084 MdigFree (Digitalizer);
00085 MbufFree (Buffer);
00086 }
00087
00096 DLL_EXPORT void STD CaptarImagenCamaraMIL (MIL_ID Digitalizer, MIL_ID Buffer)
00097 {
00098 MdigGrab (Digitalizer,Buffer);
00099 }
00100
00109 DLL_EXPORT long STD ConectarPAN_TILT (char *IP)
00110 {
00111 SetIP (IP);
00112 COMStream=open_host_port("COM2");
00113 if (COMStream==(void *)0xcccccccc) {return 0;}
00114 else {
00115 set_mode(SPEED_CONTROL_MODE,PTU_PURE_VELOCITY_SPEED_CONTROL_MODE);
00116 return 1;
00117 };
00118 }
00124 DLL_EXPORT void STD DesconectarPAN_TILT (void)
00125 {
00126 close_host_port(COMStream);
00127 }
00128
00139 DLL_EXPORT void STD PanDerecha(long Velocidad)
00140 {
00141 PTU_PARM_PTR dato;
00142
00143 if (Velocidad==0) {halt(PAN);}
00144 dato=-(PTU_PARM_PTR)Velocidad;
00145 set_desired(PAN,SPEED,&dato,ABSOLUTE);
00146 }
00147
00158 DLL_EXPORT void STD PanIzquierda(long Velocidad)
00159 {
00160 PTU_PARM_PTR dato;
00161
00162 if (Velocidad==0) {halt(PAN);}
00163 dato=(PTU_PARM_PTR)Velocidad;
00164 set_desired(PAN,SPEED,&dato,ABSOLUTE);
00165 }
00166
00177 DLL_EXPORT void STD TiltArriba(long Velocidad)
00178 {
00179 PTU_PARM_PTR dato;
00180
00181 if (Velocidad==0) {halt(TILT);}
00182 dato=(PTU_PARM_PTR)Velocidad;
00183 set_desired(TILT,SPEED,&dato,ABSOLUTE);
00184 }
00185
00196 DLL_EXPORT void STD TiltAbajo(long Velocidad)
00197 {
00198 PTU_PARM_PTR dato;
00199
00200 if (Velocidad==0) {halt(TILT);}
00201 dato=-(PTU_PARM_PTR)Velocidad;
00202 set_desired(TILT,SPEED,&dato,ABSOLUTE);
00203 }
00204
00214 DLL_EXPORT void STD DetenerPan() { halt(PAN);}
00215
00225 DLL_EXPORT void STD DetenerTilt() { halt(TILT);}
00226
00233 DLL_EXPORT long STD PosicionPAN ()
00234 {
00235 FlushInputBuffer(COMStream);
00236 return get_current(PAN,POSITION);
00237 }
00238
00245 DLL_EXPORT long STD PosicionTILT ()
00246 {
00247 FlushInputBuffer(COMStream);
00248 return get_current(TILT,POSITION);
00249 }
00250
00256 DLL_EXPORT long STD VelocidadPAN ()
00257 {
00258 long velocidad;
00259 FlushInputBuffer(COMStream);
00260 velocidad=get_current(PAN,SPEED);
00261 return velocidad;
00262 }
00263
00271 DLL_EXPORT void STD GirarPanHastaAnguloN (long N, long velocidad)
00272 {
00273 short dato,vel;
00274 dato=(short)N;
00275 vel=(short)velocidad;
00276 set_mode(SPEED_CONTROL_MODE,PTU_INDEPENDENT_SPEED_CONTROL_MODE);
00277 set_desired(PAN,SPEED,&vel,ABSOLUTE);
00278 set_desired(PAN,POSITION,&dato,ABSOLUTE);
00279 set_mode(SPEED_CONTROL_MODE,PTU_PURE_VELOCITY_SPEED_CONTROL_MODE);
00280 }
00281
00289 DLL_EXPORT void STD GirarTiltHastaAnguloN (long N, long velocidad)
00290 {
00291 short dato,vel;
00292 dato=(short)N;
00293 vel=(short)velocidad;
00294 set_mode(SPEED_CONTROL_MODE,PTU_INDEPENDENT_SPEED_CONTROL_MODE);
00295 set_desired(PAN,SPEED,&vel,ABSOLUTE);
00296 set_desired(TILT,POSITION,&dato,ABSOLUTE);
00297 set_mode(SPEED_CONTROL_MODE,PTU_PURE_VELOCITY_SPEED_CONTROL_MODE);
00298 }
00299
00300
00302 DLL_EXPORT void STD LanzarThreadPanTilt (long Velocidad)
00303 {
00304 _beginthread (ThreadMoverPanTilt,0,(void*)&Velocidad);
00305 }
00306
00307 void ThreadMoverPanTilt (void *Datos)
00308 {
00309 PanDerecha (100);
00310 _endthread();
00311 }
00313
00314