Я использую
QMap < int, QByteArray> RegTable; (Seprate Class Variable)
для хранения адреса регистра Modbus и данных, полученных из последовательного порта. Все работает нормально, данные читаются из последовательного порта и правильно заполняются в QByteArray.
qDebug() << Modbus->RegTable[RegAddr].toHex(' ');
распечатайте правильные данные. Но если вы хотите записать переменную, используя ее, то в этой переменной всегда хранится одно и то же значение / мусор.
unsigned int unixTimeStamp = 0;
qDebug() << Modbus->RegTable[RegAddr].toHex(' ');
unixTimeStamp = static_cast <unsigned int>Modbus->RegTable[RegAddr].at(4);
unixTimeStamp |= static_cast <unsigned int>Modbus->RegTable[RegAddr].at(5)<<8;
unixTimeStamp |= static_cast <unsigned int>Modbus->RegTable[RegAddr].at(6)<<16;
unixTimeStamp |= static_cast <unsigned int>Modbus->RegTable[RegAddr].at(7)<<24;
QDateTime timestamp;
timestamp.setTime_t(unixTimeStamp );
qDebug() << timestamp.toString(Qt::SystemLocaleShortDate); //wrong time
RegTable - это переменная класса Modbus, и я использовал ее для основного класса, но всегда получаю неправильные данные или значения.