bool fantasmaThread::qt_invoke( int _id, QUObject* _o ) { switch ( _id - staticMetaObject()->slotOffset() ) { case 0: comer((pacmanThread*)static_QUType_ptr.get(_o+1)); break; case 1: setVelocidad((int)static_QUType_int.get(_o+1)); break; default: return Fantasma::qt_invoke( _id, _o ); } return TRUE; }
void moverDelante(float distancia) { resetMotorCounters(); int calcRevs = (int)((distancia/RUEDA)*360); setVelocidad(100, 100); int revsV = getMediumRevs(); while(revsV < calcRevs) { revsV = getMediumRevs(); } //setVelocidad(0,0); }
void Ventana::crearMenu() { Juego = menuBar()->addMenu(tr("&Juego")); nuevoJuego = new QAction(tr("&Empezar partida nueva"), this); nuevoJuego->setStatusTip(tr("Empezar partida nueva")); connect(nuevoJuego, SIGNAL(triggered()), this, SLOT(empezarPartida())); Juego->addAction(nuevoJuego); pausar = new QAction(tr("&Pausar partida"), this); pausar->setStatusTip(tr("Pausar partida")); connect(pausar, SIGNAL(triggered()), this, SLOT(pausarPartida())); Juego->addAction(pausar); terminar = new QAction(tr("&Finalizar Partida"), this); terminar->setStatusTip(tr("Finalizar Partida")); connect(terminar, SIGNAL(triggered()), this, SLOT(terminarPartida())); Juego->addAction(terminar); Juego->addSeparator(); salir = new QAction(tr("&Salir"), this); salir->setStatusTip(tr("Salir")); connect(salir, SIGNAL(triggered()), this, SLOT(close())); Juego->addAction(salir); Opciones = menuBar()->addMenu(tr("&Opciones")); NJugadores = new QAction(tr("&Elegir número de jugadores"), this); NJugadores->setStatusTip(tr("Elegir número de jugadores")); connect(NJugadores, SIGNAL(triggered()), this, SLOT(elegirNJugadores())); Opciones->addAction(NJugadores); TamTablero = new QAction(tr("&Elegir el tamaño del tablero"), this); TamTablero->setStatusTip(tr("Elegir el tamaño del tablero")); connect(TamTablero, SIGNAL(triggered()), this, SLOT(elegirTamTablero())); Opciones->addAction(TamTablero); Velocidad = new QAction(tr("&Elegir velocidad de las motos"), this); Velocidad->setStatusTip(tr("Elegir velocidad de las motos")); connect(Velocidad, SIGNAL(triggered()), this, SLOT(setVelocidad())); Opciones->addAction(Velocidad); ModosVisualizacion = menuBar()->addMenu(tr("&Modos de Visualización")); Reflejos = new QAction(tr("&Activar/Desactivar reflejos"), this); Reflejos->setStatusTip(tr("Activar/Desactivar reflejos")); connect(Reflejos, SIGNAL(triggered()), this, SLOT(elegirReflejos())); ModosVisualizacion->addAction(Reflejos); Ejes = new QAction(tr("&Mostrar/Ocultar ejes"), this); Ejes->setStatusTip(tr("Mostrar/Ocultar ejes")); connect(Ejes, SIGNAL(triggered()), this, SLOT(elegirEjes())); ModosVisualizacion->addAction(Ejes); ModosVisualizacion->addSeparator(); CamaraLibre = new QAction(tr("&Cámara Libre"), this); CamaraLibre->setStatusTip(tr("Cámara Libre")); connect(CamaraLibre, SIGNAL(triggered()), this, SLOT(setCamaraLibre())); ModosVisualizacion->addAction(CamaraLibre); ModosVisualizacion->addSeparator(); Puntos = new QAction(tr("&Puntos"), this); Puntos->setStatusTip(tr("Puntos")); connect(Puntos, SIGNAL(triggered()), this, SLOT(modoPuntos())); ModosVisualizacion->addAction(Puntos); Lineas = new QAction(tr("&Lineas"), this); Lineas->setStatusTip(tr("Lineas")); connect(Lineas, SIGNAL(triggered()), this, SLOT(modoLineas())); ModosVisualizacion->addAction(Lineas); Solido = new QAction(tr("&Solido"), this); Solido->setStatusTip(tr("Solido")); connect(Solido, SIGNAL(triggered()), this, SLOT(modoSolido())); ModosVisualizacion->addAction(Solido); Ajedrez = new QAction(tr("&Ajedrez"), this); Ajedrez->setStatusTip(tr("Ajedrez")); connect(Ajedrez, SIGNAL(triggered()), this, SLOT(modoAjedrez())); ModosVisualizacion->addAction(Ajedrez); this->Flat = new QAction(tr("&Suavizado Flat"), this); this->Flat->setStatusTip(tr("Suavizado Flat")); connect(this->Flat, SIGNAL(triggered()), this, SLOT(modoFlat())); ModosVisualizacion->addAction(this->Flat); Smooth = new QAction(tr("&Suavizado Smooth"), this); Smooth->setStatusTip(tr("Suavizado Smooth")); connect(Smooth, SIGNAL(triggered()), this, SLOT(modoSmooth())); ModosVisualizacion->addAction(Smooth); fullScreen = menuBar()->addMenu(tr("&Pantalla")); pantCompleta = new QAction(tr("&Completa"), this); pantCompleta->setStatusTip(tr("Completa")); connect(pantCompleta, SIGNAL(triggered()), this, SLOT(showFullScreen())); fullScreen->addAction(pantCompleta); pantNormal = new QAction(tr("&Ventana"), this); pantNormal->setStatusTip(tr("Ventana")); connect(pantNormal, SIGNAL(triggered()), this, SLOT(showNormal())); fullScreen->addAction(pantNormal); Extra = menuBar()->addMenu(tr("&Extra")); Ayuda = new QAction(tr("&Ayuda"), this); Ayuda->setStatusTip(tr("Ayuda")); connect(Ayuda, SIGNAL(triggered()), this, SLOT(showAyuda())); Extra->addAction(Ayuda); Acerca = new QAction(tr("&Acerca"), this); Acerca->setStatusTip(tr("Acerca")); connect(Acerca, SIGNAL(triggered()), this, SLOT(showAcerca())); Extra->addAction(Acerca); Extra->addSeparator(); Demo = new QAction(tr("&Demo"), this); Demo->setStatusTip(tr("Demo")); connect(Demo, SIGNAL(triggered()), this, SLOT(showDemo())); Extra->addAction(Demo); }
static portTASK_FUNCTION(HighTask,pvParameters) { unsigned char frame[MAX_FRAME_SIZE]; int num_datos; double altitud; int16_t ejes[3]; double combustible; float velocidad; int tiempoSim; while(1) { vTaskDelay(configTICK_RATE_HZ); //Cada seg //Obtenemos las variables altitud=getAltitud(); velocidad=getVelocidad(); tiempoSim=getTiempoSim(); if(altitud>0){ //Si la altitud es mayor que cero cambiamos la altitud getEjes(ejes); altitud += sin((ejes[PITCH]*3.14f)/180) *(velocidad*(1000/(60/tiempoSim))); if(altitud>99999){ //99999 es el maximo del panel QT altitud=99999; } //Enviamos la trama con la altitud setAltitud(altitud); num_datos=create_frame(frame, COMANDO_HIGH, &altitud, sizeof(altitud), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } //Obtenemos el combustible combustible=getCombustible(); if(combustible==0){//Si ya estamos sin combustible hacemos parpadear los led con la altitud color[BLUE]=0xFFFF; if(altitud<=800){ color[RED]=0xFFFF; color[GREEN]=0x0; } RGBColorSet(color); if(altitud<2000){ RGBBlinkRateSet((float)(1000/(altitud+1))); } tiempoSim=getTiempoSim(); //Aumentamos la velocidad a 9,8m/s^2 velocidad+=9.8*(60*tiempoSim)/1000; setVelocidad(velocidad); //Enviamos la nueva velocidad num_datos=create_frame(frame, COMANDO_SPEED, &velocidad, sizeof(velocidad), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } } }else{ //Si la altitud es menor o igual a 0 //Variables a cero velocidad=0; altitud=0; setVelocidad(velocidad); setAltitud(altitud); //Enviamos comando colision if(combustible!=0) ADCSequenceDisable(ADC0_BASE,0); num_datos=create_frame(frame, COMANDO_COLISION,NULL, 0, MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } //BLOQUEAMOS LA TIVA vTaskDelete(sensorTaskHandle); vTaskDelete( consumoTaskHandle ); vTaskDelete(altitudTaskHandle); vTaskDelete( turbulenciasTaskHandle ); vTaskEndScheduler( ); while(1); } } }
static portTASK_FUNCTION(PilAuto,pvParameters) { unsigned char frame[MAX_FRAME_SIZE]; int num_datos; //Desactivamos las lecturas del ADC ADCSequenceDisable(ADC0_BASE,0); bool pilotoAutomatico =true; EventBits_t bits; // Enviamos la trama para indicar a QT que estamos con el piloto Automatico num_datos=create_frame(frame, COMANDO_AUTOMATICO, &pilotoAutomatico, sizeof(pilotoAutomatico), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } while(1) { vTaskDelay(configTICK_RATE_HZ); // Esperamos 1 seg bits=xEventGroupGetBits(xEventGroup); // Leemos los flags if(bits == 0 || bits== 1){ //Si el flags de pilotoAutomatico esta a cero quitamos el pilotoAutomatico pilotoAutomatico=false; num_datos=create_frame(frame, COMANDO_AUTOMATICO, &pilotoAutomatico, sizeof(pilotoAutomatico), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } ADCSequenceEnable(ADC0_BASE,0); // Habilitamos el ADC vTaskDelete(NULL); while(1){ //Por si falla } } //Centramos el avion, ponemos la velocidad a 100 y lo mandamos a QT setEjes(0,0,0); setVelocidad(100.0f); num_datos=create_frame(frame, COMANDO_EJES, &ejes, sizeof(ejes), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } num_datos=create_frame(frame, COMANDO_SPEED, &velocidad, sizeof(velocidad), MAX_FRAME_SIZE); if (num_datos>=0){ send_frame(frame, num_datos); }else{ logError(num_datos); } } }