Я использую
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, и я использовал ее для основного класса, но всегда получаю неправильные данные или значения.