diff --git a/filecomparatorwindow.cpp b/filecomparatorwindow.cpp index db92cd8..ff8c9e7 100644 --- a/filecomparatorwindow.cpp +++ b/filecomparatorwindow.cpp @@ -81,9 +81,9 @@ void FileComparatorWindow::calculateDetails() { QHash firstFileIDs; QHash secondFileIDs; - uint64_t shiftBase = 1; //stupid hack to ensure that 64 bit shifting is used. QTreeWidgetItem *firstOnlyBase, *secondOnlyBase, *sharedBase, *bitmapBaseFirst, *bitmapBaseSecond; QTreeWidgetItem *valuesBase, *detail, *sharedItem, *valuesFirst, *valuesSecond; + uint64_t tmp; int idx = 0; @@ -105,7 +105,10 @@ void FileComparatorWindow::calculateDetails() for (int y = 0; y < frame.len; y++) { firstFileIDs[frame.ID].values[y][frame.data[y]]++; - firstFileIDs[frame.ID].bitmap |= frame.data[y] << (8 * y); + tmp = frame.data[y]; + tmp = tmp << (8 * y); + firstFileIDs[frame.ID].bitmap |= tmp; + qDebug() << "bitmap: " << QString::number(firstFileIDs[frame.ID].bitmap, 16); } } else //never seen this ID before so add one @@ -127,11 +130,14 @@ void FileComparatorWindow::calculateDetails() for (int y = 0; y < frame.len; y++) { newData->values[y][frame.data[y]] = 1; - newData->bitmap |= frame.data[y] << (8 * y); + tmp = frame.data[y]; + tmp = tmp << (8 * y); + newData->bitmap |= tmp; + qDebug() << "bitmap: " << QString::number(newData->bitmap, 16); } firstFileIDs.insert(frame.ID, *newData); } - } + } for (int x = 0; x < secondFileFrames.count(); x++) { @@ -141,7 +147,10 @@ void FileComparatorWindow::calculateDetails() for (int y = 0; y < frame.len; y++) { secondFileIDs[frame.ID].values[y][frame.data[y]]++; - secondFileIDs[frame.ID].bitmap |= frame.data[y] << (8 * y); + tmp = frame.data[y]; + tmp = tmp << (8 * y); + secondFileIDs[frame.ID].bitmap |= tmp; + qDebug() << "bitmap: " << QString::number(secondFileIDs[frame.ID].bitmap, 16); } } else //never seen this ID before so add one @@ -161,7 +170,10 @@ void FileComparatorWindow::calculateDetails() for (int y = 0; y < frame.len; y++) { newData->values[y][frame.data[y]] = 1; - newData->bitmap |= frame.data[y] << (8 * y); + tmp = frame.data[y]; + tmp = tmp << (8 * y); + newData->bitmap |= tmp; + qDebug() << "bitmap: " << QString::number(newData->bitmap, 16); } secondFileIDs.insert(frame.ID, *newData); } @@ -197,19 +209,27 @@ void FileComparatorWindow::calculateDetails() sharedItem->addChild(bitmapBaseFirst); sharedItem->addChild(bitmapBaseSecond); + uint64_t firstBits = first.bitmap; + uint64_t secondBits = second.bitmap; + + //qDebug() << "ID: " << first.ID; + //first up, which bits were set in one file but not the other for (int b = 0; b < (8 * first.dataLen); b++) { detail = new QTreeWidgetItem(); detail->setText(0, QString::number(b) + " (" + QString::number(b / 8) + ":" + QString::number(b % 8) + ")"); - if ( (first.bitmap & (shiftBase<addChild(detail); } - if ( !(first.bitmap & (shiftBase<addChild(detail); } + qDebug() << b << " " << QString::number(firstBits, 16) << " " << QString::number(secondBits, 16); + firstBits = firstBits >> 1; + secondBits = secondBits >> 1; } for (int i = 0; i < qMax(first.dataLen, second.dataLen); i++) @@ -227,11 +247,11 @@ void FileComparatorWindow::calculateDetails() { detail = new QTreeWidgetItem(); detail->setText(0, Utility::formatHexNum(j)); - if (first.values[i][j] > 0 && second.values[i][j] == 0) + if ((first.values[i][j] > 0) && (second.values[i][j] == 0) ) { valuesFirst->addChild(detail); } - if (second.values[i][j] > 0 && first.values[i][j] == 0) + if ((second.values[i][j] > 0) && (first.values[i][j] == 0) ) { valuesSecond->addChild(detail); } @@ -256,8 +276,8 @@ void FileComparatorWindow::calculateDetails() ui->treeDetails->addTopLevelItem(secondOnlyBase); ui->treeDetails->addTopLevelItem(sharedBase); - ui->treeDetails->setSortingEnabled(true); - ui->treeDetails->sortByColumn(0, Qt::AscendingOrder); + //ui->treeDetails->setSortingEnabled(true); + //ui->treeDetails->sortByColumn(0, Qt::AscendingOrder); QSettings settings; if (settings.value("InfoCompare/AutoExpand", false).toBool()) diff --git a/frameinfowindow.cpp b/frameinfowindow.cpp index 4f46225..8040779 100644 --- a/frameinfowindow.cpp +++ b/frameinfowindow.cpp @@ -210,7 +210,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID) dataHistogram[dat][c]++; //add one to count for this for (int l = 0; l < 8; l++) { - int bit = dat & (1 << l); + int bit = dat & (1 << l); if (bit == (1 << l)) { bitfieldHistogram[c * 8 + l]++; @@ -260,7 +260,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID) dataBase = new QTreeWidgetItem(); dataBase->setText(0, tr("Bitfield Histogram")); - for (int c = 0; c < 64; c++) + for (int c = 0; c < 8 * maxLen; c++) { tempItem = new QTreeWidgetItem(); tempItem->setText(0, QString::number(c) + " (Byte " + QString::number(c / 8) + " Bit " diff --git a/serialworker.cpp b/serialworker.cpp index 3238fff..b1e7dcb 100644 --- a/serialworker.cpp +++ b/serialworker.cpp @@ -70,10 +70,13 @@ void SerialWorker::setSerialPort(QSerialPortInfo *port) serial = new QSerialPort(*port); qDebug() << "Serial port name is " << port->portName(); - serial->setBaudRate(10000000); //more speed! probably does nothing for USB serial + //serial->setBaudRate(10000000); //more speed! probably does nothing for USB serial serial->setDataBits(serial->Data8); serial->setFlowControl(serial->HardwareControl); //this is important though - serial->open(QIODevice::ReadWrite); + if (!serial->open(QIODevice::ReadWrite)) + { + qDebug() << serial->errorString(); + } serial->setDataTerminalReady(true); //you do need to set these or the fan gets dirty serial->setRequestToSend(true); QByteArray output;