Exemplo n.º 1
0
/**
 * QThread::run()
 *
 * Open the serial port and set it up, then starts polling.
 *
 */
void MonarkConnection::run()
{
    // Open and configure serial port
    m_serial = new QSerialPort();
    m_serial->setPortName(m_serialPortName);

    m_timer = new QTimer();
    QTimer *startupTimer = new QTimer();

    if (!m_serial->open(QSerialPort::ReadWrite))
    {
        qDebug() << "Error opening serial";
        this->exit(-1);
    } else {
        configurePort(m_serial);

        // Discard any existing data
        QByteArray data = m_serial->readAll();

        // Set up polling
        connect(m_timer, SIGNAL(timeout()), this, SLOT(requestAll()),Qt::DirectConnection);

        // Set up initial model detection
        connect(startupTimer, SIGNAL(timeout()), this, SLOT(identifyModel()),Qt::DirectConnection);
    }

    m_timer->setInterval(1000);
    m_timer->start();

    startupTimer->setSingleShot(true);
    startupTimer->setInterval(0);
    startupTimer->start();

    exec();
}
Exemplo n.º 2
0
ModelItemProperties ModelsScriptingInterface::getModelProperties(ModelItemID modelID) {
    ModelItemProperties results;
    ModelItemID identity = identifyModel(modelID);
    if (!identity.isKnownID) {
        results.setIsUnknownID();
        return results;
    }
    if (_modelTree) {
        _modelTree->lockForRead();
        const ModelItem* model = _modelTree->findModelByID(identity.id, true);
        if (model) {
            results.copyFromModelItem(*model);
        } else {
            results.setIsUnknownID();
        }
        _modelTree->unlock();
    }
    
    return results;
}