void MainWindow::onDataRecieved() { QByteArray dataIncomming = _socket->read(4); while( dataIncomming.size() > 0 ) { char byte00_Command = QChar(dataIncomming[0]).toUpper().toLatin1(); quint8 byte01_SensorId = static_cast<quint8>(dataIncomming[1]); qint8 byte02 = static_cast<qint8>(dataIncomming[2]); quint8 byte03 = static_cast<quint8>(dataIncomming[3]); qDebug()<< QString("[%1]").arg(QTime::currentTime().toString()) << byte00_Command << byte01_SensorId << byte02 << byte03; switch(byte00_Command) { case COMMAND_SET: { qreal integralPart = static_cast<qreal>(byte02); qreal fractionalPart = static_cast<qreal>(byte03) / FRACTIONAL_BASE; qreal temperature; temperature = integralPart + fractionalPart; setTemperatureIndicator(byte01_SensorId, temperature); break; } case COMMAND_ERROR: { // on error read additional 8 bytes of sensor's mac id setTemperatureSensorDisconnected(byte01_SensorId); QByteArray mac = _socket->read(8); QString mac_hex = QString::fromLatin1(mac.toHex()); qDebug() << "0x" << mac_hex; break; } default: qDebug()<< "Error: Unknown command byte!"; break; } dataIncomming = _socket->read(4); } } // onDataRecieved()
// Private slots void MainWindow::onDataRecieved() { QByteArray dataIncomming = _socket->read(4); while( dataIncomming.size() > 0 ) { qDebug()<< QString::fromLatin1(dataIncomming.toHex(), dataIncomming.size()); char byte00_Command = QChar(dataIncomming[0]).toUpper().toLatin1(); quint8 byte01_SensorId = static_cast<quint8>(dataIncomming[1]); qint8 byte02 = static_cast<qint8>(dataIncomming[2]); quint8 byte03 = static_cast<quint8>(dataIncomming[3]); switch(byte00_Command) { case COMMAND_SET: { qDebug()<< "SET"; qreal integralPart = static_cast<qreal>(byte02); qreal fractionalPart = static_cast<qreal>(byte03) / FRACTIONAL_BASE; qreal temperature; if (0 > integralPart) { temperature = integralPart - fractionalPart; } else { temperature = integralPart + fractionalPart; } setTemperatureIndicator(byte01_SensorId, temperature); } break; case COMMAND_ERROR: qDebug()<< "ERROR"; break; default: qDebug()<< "Error:Unknown command byte!"; } dataIncomming = _socket->read(4); } }