void MainWindow::connectPixy(bool state)
{
    if (state) // connect
    {
        try
        {
            if (m_pixyDFUConnected) // we're in programming mode
            {
                m_flash = new Flash();
                if (m_firmwareFile!="")
                    program(m_firmwareFile);
                else
                {
                    QString dir;
                    QFileDialog fd(this);
                    dir = m_settings->value("fw_dialog").toString();
                    fd.setWindowTitle("Select a Firmware File");
                    fd.setDirectory(QDir(dir));
                    fd.setNameFilter("Firmware (*.hex)");
                    if (fd.exec())
                    {
                        QStringList slist = fd.selectedFiles();
                        if (slist.size()==1 && m_flash)
                        {
                            program(slist.at(0));
                        }
                    }
                    dir = fd.directory().absolutePath();
                    m_settings->setValue("fw_dialog", QVariant(dir));
                }
            }
            else
            {
                m_console->print("Pixy detected.\n");
                m_interpreter = new Interpreter(m_console, m_video);

                m_initScriptExecuted = false; // reset so we'll execute for this instance
                connect(m_interpreter, SIGNAL(runState(uint)), this, SLOT(handleRunState(uint)));
                connect(m_interpreter, SIGNAL(finished()), this, SLOT(interpreterFinished()));
                connect(m_interpreter, SIGNAL(connected(Device,bool)), this, SLOT(handleConnected(Device,bool)));
                connect(m_interpreter, SIGNAL(actionScriptlet(int,QString,QStringList)), this, SLOT(handleActionScriptlet(int,QString,QStringList)));
                clearActions();
                m_interpreter->getAction(0);  // start action query process
            }
            m_pixyConnected = true;
        }
        catch (std::runtime_error &exception)
        {
            m_console->error(QString(exception.what())+"\n");
            m_flash = NULL;
            m_pixyDFUConnected = false;
            m_pixyConnected = false;
        }
    }
    else // disconnect
    {
Beispiel #2
0
void MainWindow::connectPixy(bool state)
{
    if (state) // connect
    {
        try
        {
            if (m_pixyDFUConnected) // we're in programming mode
            {
                m_flash = new Flash();
                if (m_argvFirmwareFile!="")
                    program(m_argvFirmwareFile);
                else if (m_firmwareFile!="")
                {
                    program(m_firmwareFile);
                    m_firmwareFile = "";
                }
                else
                {
                    QString dir;
                    QFileDialog fd(this);
                    dir = m_settings->value("fw_dialog").toString();
                    fd.setWindowTitle("Select a Firmware File");
                    fd.setDirectory(QDir(dir));
                    fd.setNameFilter("Firmware (*.hex)");
                    if (fd.exec())
                    {
                        QStringList slist = fd.selectedFiles();
                        if (slist.size()==1 && m_flash)
                        {
                            program(slist.at(0));
                        }
                    }
                    dir = fd.directory().absolutePath();
                    m_settings->setValue("fw_dialog", QVariant(dir));
                }
            }
            else if (m_interpreter==NULL)
            {
                m_console->print("Pixy detected.\n");
                clearActions();
                m_interpreter = new Interpreter(m_console, m_video, &m_parameters, m_initScript);

                connect(m_interpreter, SIGNAL(runState(int)), this, SLOT(handleRunState(int)));
                connect(m_interpreter, SIGNAL(finished()), this, SLOT(interpreterFinished())); // thread will send finished event when it exits
                connect(m_interpreter, SIGNAL(connected(Device,bool)), this, SLOT(handleConnected(Device,bool)));
                connect(m_interpreter, SIGNAL(actionScriptlet(QString,QStringList)), this, SLOT(handleActionScriptlet(QString,QStringList)));
                connect(m_interpreter, SIGNAL(paramLoaded()), this, SLOT(handleLoadParams()));
                connect(m_interpreter, SIGNAL(version(ushort,ushort,ushort)), this, SLOT(handleVersion(ushort,ushort,ushort)));
                m_interpreter->start();
            }
            m_pixyConnected = true;
        }
        catch (std::runtime_error &exception)