void MainWindow::keyPressEvent(QKeyEvent *qkeyevent) //Tatstertur .............
{
    switch(qkeyevent->key())
    {
    case Qt::Key_Up:
        vor();
        break;
    case Qt::Key_Down:
        back();
        break;
    case Qt::Key_Right:
        rechts();
        break;
    case Qt::Key_Left:
        links();
        break;
    case Qt::Key_Space:
        stop();
        break;
    case Qt::Key_X:
        hoch();
        break;
    case Qt::Key_Y:
        runter();
        break;
    }
}
Пример #2
0
int main(){
    window w( vector( 128, 64 ), 1);
    ball b( w, vector( 70, 30 ), 9, vector( 5, 2 ) );
    line test(w,vector (128,0),vector(128,64));
    muur boven(w,vector (0,0),vector(128,4), vector (128,0), false,5,vector (1,-1));
    muur rechts(w,vector (124,0),vector(128,64), vector (4,64), false,5,vector (-1,1));
    muur links(w,vector (0,0),vector(4,64), vector (0,64), false,5,vector (-1,1));
    muur onder(w,vector (0,60),vector(128,64), vector (128,0),false,5,vector (1,-1));
   
    drawable * objects[] = { &b,&boven,&rechts,&links,&onder};

   for(;;){
      w.clear();
      for( auto & p : objects ){
         p->draw();
      }
      wait_ms(20);
      for( auto & p : objects ){
          p->update();
      }
      for( auto & p : objects ){
         for( auto & other : objects ){
            p->interact( *other );
         } 
      }
   }
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //IPS Stationen Arduino-Simulation
    /*ui->s1x->setValue(1000);ui->s1y->setValue(1000);ui->s1z->setValue(0);
    ui->s2x->setValue(2000);ui->s2y->setValue(1000);ui->s2z->setValue(0);
    ui->s3x->setValue(2000);ui->s3y->setValue(0000);ui->s3z->setValue(1000);
    ui->s4x->setValue(1000);ui->s4y->setValue(0000);ui->s4z->setValue(0);
    ui->s5x->setValue(0000);ui->s5y->setValue(0000);ui->s5z->setValue(1000);
    ui->s6x->setValue(0000);ui->s6y->setValue(1000);ui->s6z->setValue(0);
    ui->s7x->setValue(0000);ui->s7y->setValue(2000);ui->s7z->setValue(1000);
    ui->s8x->setValue(1000);ui->s8y->setValue(2000);ui->s8z->setValue(0);
    ui->s9x->setValue(2000);ui->s9y->setValue(2000);ui->s9z->setValue(1000);*/
    //Ende IPS Stationen;

    //Karte erstellen
    map = new QGraphicsScene(this);
    ui->graphicsView->setScene(map);
    ui->graphicsView->scale(0.1,0.1);  //zoomen der Karte so ist platz für 7,5 meter

    // GUI Einstellunegn
    setWindowTitle(tr("Zentrale - Sturzflug@daedalus"));

    //PortBox ComPort Einstellungen
    //COM Ports suchen
    foreach (QextPortInfo info, QextSerialEnumerator::getPorts())
        ui->XbeeportBox->addItem(info.portName);
    foreach (QextPortInfo info, QextSerialEnumerator::getPorts())
        ui->IPSportBox->addItem(info.portName);

    //selber eintargen Möglich machen
    ui->XbeeportBox->setEditable(true);
    ui->IPSportBox->setEditable(true);
    //Port Box STOP

    //BaudRateBox kompatible Werte mit Win und Linux
    ui->XbeeBaudRateBox->addItem("1200", BAUD1200);
    ui->XbeeBaudRateBox->addItem("2400", BAUD2400);
    ui->XbeeBaudRateBox->addItem("4800", BAUD4800);
    ui->XbeeBaudRateBox->addItem("9600", BAUD9600);
    ui->XbeeBaudRateBox->addItem("19200", BAUD19200);
    ui->XbeeBaudRateBox->addItem("115200", BAUD115200);
    ui->XbeeBaudRateBox->setCurrentIndex(3); //Vorsicht nur Ändern wenn auch PorSettings geändert
    ui->IPSBaudRateBox->addItem("115200", BAUD115200); //IPS nur mit dieser BaudRate
    ui->IPSBaudRateBox->setCurrentIndex(0); //Vorsicht nur Ändern wenn auch PorSettings geändert
    // BaudRateBox STOP

    //ComText Box
    ui->XbeeComText->setReadOnly(true);
    ui->IPSComText->setReadOnly(true);
    //ComText Box STOP

    Xbeetimer = new QTimer(this);
    Xbeetimer->setInterval(80);
    IPStimer = new QTimer(this);
    IPStimer->setInterval(155); //könnte probleme lösen

    Refreshtimer = new QTimer(this);
    Refreshtimer->setInterval(ui->refreshTime->value()); //Aktuallisierungsrate aus der GUI in ms

    //Vordefinierte Einstelluneg
    PortSettings Xbeesettings = {BAUD9600, DATA_8, PAR_NONE, STOP_1, FLOW_OFF, 10};
    Xbeeport = new QextSerialPort(ui->XbeeportBox->currentText(), Xbeesettings, QextSerialPort::Polling);
    PortSettings IPSsettings = {BAUD115200, DATA_8, PAR_NONE, STOP_1, FLOW_OFF, 10};
    IPSport = new QextSerialPort(ui->IPSportBox->currentText(), IPSsettings, QextSerialPort::Polling);
    //Vordefinierte Einstellungen STOP

    //Connectoren -----------------------------------------------------------------------------------------------------

    //globale Connectoren
    //connect(ui->TestButton, SIGNAL(clicked()), SLOT(onTestButtonClicked()));
    connect(ui->reset_imu, SIGNAL(clicked()), SLOT(onreset_imuClicked()));


    //Xbee connectoren
    connect(ui->XbeeBaudRateBox, SIGNAL(currentIndexChanged(int)), SLOT(XbeeonBaudRateChanged(int)));
    connect(ui->XbeeportBox, SIGNAL(editTextChanged(QString)), SLOT(XbeeonPortNameChanged(QString)));
    connect(Xbeetimer, SIGNAL(timeout()), SLOT(XbeeonReadyRead()));
    connect(Xbeeport, SIGNAL(readyRead()), SLOT(XbeeonReadyRead()));

    //IPS connectoren
    connect(ui->IPSBaudRateBox, SIGNAL(currentIndexChanged(int)), SLOT(IPSonBaudRateChanged(int)));
    connect(ui->IPSportBox, SIGNAL(editTextChanged(QString)), SLOT(IPSonPortNameChanged(QString)));
    connect(IPStimer, SIGNAL(timeout()), SLOT(IPSonReadyRead()));
    connect(IPSport, SIGNAL(readyRead()), SLOT(IPSonReadyRead()));
    connect(ui->posStationSetzen, SIGNAL(clicked()), SLOT(setPosStation()));

    //refresh connector ZENTRALES Takt-Element
    connect(Refreshtimer, SIGNAL(timeout()), SLOT(refresh()));
    connect(ui->setRefresh, SIGNAL(clicked()), SLOT(setrefreshrate()));

    // Karte
    connect(ui->deletkoordinaten, SIGNAL(clicked()), SLOT(deletekoordinaten()));

    //Einstellungen
    connect(ui->setAbweichung, SIGNAL(clicked()), SLOT(setAbweichung()));
    connect(ui->setZiel, SIGNAL(clicked()), SLOT(setZiel()));
    connect(ui->setZieltolleranz, SIGNAL(clicked()), SLOT(setZieltolleranz()));
    connect(ui->setHoehe, SIGNAL(clicked()), SLOT(setHoehe()));
    connect(ui->setFilter, SIGNAL(clicked()), SLOT(setFilter()));
    connect(ui->setHindernisse, SIGNAL(clicked()), SLOT(setHindernisse()));
    connect(ui->setSchub, SIGNAL(clicked()), SLOT(setRueckschub()));
    connect(ui->ultraschall, SIGNAL(stateChanged(int)), SLOT(setUltraschall()));

    //Handsteuerung

    connect(ui->Handsteuerung, SIGNAL(stateChanged(int)), SLOT(setHandsteuerung()));

    connect(ui->vor, SIGNAL(clicked()), SLOT(vor()));
    connect(ui->back, SIGNAL(clicked()), SLOT(back()));
    connect(ui->links, SIGNAL(clicked()), SLOT(links()));
    connect(ui->rechts, SIGNAL(clicked()), SLOT(rechts()));
    connect(ui->stop, SIGNAL(clicked()), SLOT(stop()));
    connect(ui->hoch, SIGNAL(clicked()), SLOT(hoch()));
    connect(ui->runter, SIGNAL(clicked()), SLOT(runter()));
    connect(ui->abwurf, SIGNAL(clicked()), SLOT(abwurf()));

    //ENDE Connectoren ------------------------------------------------------------------------------------------------

    setup();


}