コード例 #1
0
QByteArray BaseStateAbstract::readByteArray(QStringRef data)
{
    if (data.size() > 10000000) {
        emit log(tr("Restoring %1 bytes of data. That's a fat cat you have here, it will take some time to reconstitute.").arg(data.size()), "Save state",Pip3lineConst::LWARNING );
    }
    return stringToByteArray(data.toString());;
}
コード例 #2
0
/*!
** @brief   Load colour profiles from configuration
*/
bool ClassicPrint::loadColourProfiles() {
    QDomDocument doc("ColourLevels");
    QFile file(":/classicPrintData/colour_profile/colour_profiles.xml");
    if (!file.open(QIODevice::ReadOnly)) {
        return false;
    }
    if (!doc.setContent(&file)) {
        return false;
    }

    // Get the root element
    QDomElement root = doc.documentElement();
    if (root.tagName() != "ColourLevels") {
        return false;
    }
    // Iterate through all elements
    QDomNode n = root.firstChild();
    while (!n.isNull()) {
        // Try to convert the node to an element.
        QDomElement e = n.toElement();
        if (!e.isNull()) {
            if (e.tagName() == "Levels") {
                QString			name;
                QList<QVariant> levels;
                QString			red;
                QString			green;
                QString			blue;

                QDomNode child = e.firstChild();
                while (!child.isNull()) {
                    // Try to convert the node to an element.
                    QDomElement child_elem = child.toElement();
                    if (!child_elem.isNull()) {
                        if (child_elem.tagName() == "Name") {
                            name = child_elem.text();
                        }
                        else if (child_elem.tagName() == "Red") {
                            red = child_elem.text();
                        }
                        else if (child_elem.tagName() == "Green") {
                            green = child_elem.text();
                        }
                        else if (child_elem.tagName() == "Blue") {
                            blue = child_elem.text();
                        }
                    }
                    child = child.nextSibling();
                }
                if (!name.isNull() && !red.isNull() && !green.isNull() && !blue.isNull()) {
                    // Convert the strings to byte arrays and then on to the list
                    QByteArray ba_red, ba_green, ba_blue;
                    ba_red = stringToByteArray(red);
                    ba_green = stringToByteArray(green);
                    ba_blue = stringToByteArray(blue);
                    if ((ba_red.size() == 256) &&
                            (ba_green.size() == 256) &&
                            (ba_blue.size() == 256)) {
                        // Still OK if here
                        for (int i = 0; i < 256; ++i) {
                            levels.push_back((qlonglong)qRgb(ba_red[i], ba_green[i], ba_blue[i]));
                        }
                        m_colour_profiles[name] = levels;
                    }
                }
            }
        }
        n = n.nextSibling();
    }

    return true;
}
コード例 #3
0
QByteArray BaseStateAbstract::readByteArray(QString data)
{
    return stringToByteArray(data);
}
コード例 #4
0
void PSerialPort::run()
{
    reinitPort = true;
    mutex.lock();
//    cond.wait(&mutex);
    QString currentRequest = request;
    mutex.unlock();

    QSerialPort serial;

    while (!quit) {

        if (reinitPort) {
            serial.close();
            mutex.lock();
//            cond.wait(&mutex);
            serial.setPortName(portName);

            if (!serial.open(QIODevice::ReadWrite)) {
                emit error(tr("Не удалось подключиться к порту %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }

            if (!serial.setBaudRate(baudRate)) {
                emit error(tr("Не удалось установить скорость для порта %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }

            if (!serial.setDataBits(dataBits)) {
                emit error(tr("Не удалось установить количество бит для порта %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }

            if (!serial.setParity(parity)) {
                emit error(tr("Не удалось установить четность для порта %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }

            if (!serial.setStopBits(stopBits)) {
                emit error(tr("Не удалось установить стоповый бит для порта %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }

            if (!serial.setFlowControl(flowControl)) {
                emit error(tr("Не удалось установить контроль четности для порта %1, код ошибки %2")
                           .arg(portName).arg(serial.error()));
                return;
            }
            reinitPort = false;
            mutex.unlock();
        }

        QByteArray requestData = 0;

        stringToByteArray(currentRequest, requestData);

        if (serial.write(requestData) == -1)
            reinitPort = true;
//        else
//            qDebug() << "Write" << requestData;
        serial.write(requestData);
        if (serial.waitForBytesWritten(PORT_WAIT_TIMEOUT)) {
//            qDebug() << "START" << adress;
            if (serial.waitForReadyRead(PORT_WAIT_TIMEOUT)) {
                QByteArray responseData = serial.readAll();
                while (serial.waitForReadyRead(10))
                    responseData += serial.readAll();

                 QString response;

                 byteArrayToString(responseData, response);
                emit this->response(response);
            } else {
                emit timeout(tr("Время ожидания ответа истекло: %1")
                             .arg(QTime::currentTime().toString()));
            }
        } else {
            emit timeout(tr("Время ожидания записи истекло: %1")
                         .arg(QTime::currentTime().toString()));
        }
        mutex.lock();
        cond.wait(&mutex);
        currentRequest = request;
        mutex.unlock();
    }
    //! [13]
}