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());; }
/*! ** @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; }
QByteArray BaseStateAbstract::readByteArray(QString data) { return stringToByteArray(data); }
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] }