Fixed nasty bug in file comparator, fixed minor bug in frame info window, made serial initialization more correct.

This commit is contained in:
Collin Kidder
2015-08-07 22:09:13 -04:00
parent 53ecb2d02a
commit 89da3421f9
3 changed files with 39 additions and 16 deletions
+31 -11
View File
@@ -81,9 +81,9 @@ void FileComparatorWindow::calculateDetails()
{ {
QHash<int, FrameData> firstFileIDs; QHash<int, FrameData> firstFileIDs;
QHash<int, FrameData> secondFileIDs; QHash<int, FrameData> secondFileIDs;
uint64_t shiftBase = 1; //stupid hack to ensure that 64 bit shifting is used.
QTreeWidgetItem *firstOnlyBase, *secondOnlyBase, *sharedBase, *bitmapBaseFirst, *bitmapBaseSecond; QTreeWidgetItem *firstOnlyBase, *secondOnlyBase, *sharedBase, *bitmapBaseFirst, *bitmapBaseSecond;
QTreeWidgetItem *valuesBase, *detail, *sharedItem, *valuesFirst, *valuesSecond; QTreeWidgetItem *valuesBase, *detail, *sharedItem, *valuesFirst, *valuesSecond;
uint64_t tmp;
int idx = 0; int idx = 0;
@@ -105,7 +105,10 @@ void FileComparatorWindow::calculateDetails()
for (int y = 0; y < frame.len; y++) for (int y = 0; y < frame.len; y++)
{ {
firstFileIDs[frame.ID].values[y][frame.data[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 else //never seen this ID before so add one
@@ -127,7 +130,10 @@ void FileComparatorWindow::calculateDetails()
for (int y = 0; y < frame.len; y++) for (int y = 0; y < frame.len; y++)
{ {
newData->values[y][frame.data[y]] = 1; 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); firstFileIDs.insert(frame.ID, *newData);
} }
@@ -141,7 +147,10 @@ void FileComparatorWindow::calculateDetails()
for (int y = 0; y < frame.len; y++) for (int y = 0; y < frame.len; y++)
{ {
secondFileIDs[frame.ID].values[y][frame.data[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 else //never seen this ID before so add one
@@ -161,7 +170,10 @@ void FileComparatorWindow::calculateDetails()
for (int y = 0; y < frame.len; y++) for (int y = 0; y < frame.len; y++)
{ {
newData->values[y][frame.data[y]] = 1; 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); secondFileIDs.insert(frame.ID, *newData);
} }
@@ -197,19 +209,27 @@ void FileComparatorWindow::calculateDetails()
sharedItem->addChild(bitmapBaseFirst); sharedItem->addChild(bitmapBaseFirst);
sharedItem->addChild(bitmapBaseSecond); 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 //first up, which bits were set in one file but not the other
for (int b = 0; b < (8 * first.dataLen); b++) for (int b = 0; b < (8 * first.dataLen); b++)
{ {
detail = new QTreeWidgetItem(); detail = new QTreeWidgetItem();
detail->setText(0, QString::number(b) + " (" + QString::number(b / 8) + ":" + QString::number(b % 8) + ")"); detail->setText(0, QString::number(b) + " (" + QString::number(b / 8) + ":" + QString::number(b % 8) + ")");
if ( (first.bitmap & (shiftBase<<b)) && !(second.bitmap & (shiftBase<<b)) ) if ( (firstBits & 1) && !(secondBits & 1) )
{ {
bitmapBaseFirst->addChild(detail); bitmapBaseFirst->addChild(detail);
} }
if ( !(first.bitmap & (shiftBase<<b)) && (second.bitmap & (shiftBase<<b)) ) else if ( !(firstBits & 1) && (secondBits & 1) )
{ {
bitmapBaseSecond->addChild(detail); bitmapBaseSecond->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++) for (int i = 0; i < qMax(first.dataLen, second.dataLen); i++)
@@ -227,11 +247,11 @@ void FileComparatorWindow::calculateDetails()
{ {
detail = new QTreeWidgetItem(); detail = new QTreeWidgetItem();
detail->setText(0, Utility::formatHexNum(j)); 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); 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); valuesSecond->addChild(detail);
} }
@@ -256,8 +276,8 @@ void FileComparatorWindow::calculateDetails()
ui->treeDetails->addTopLevelItem(secondOnlyBase); ui->treeDetails->addTopLevelItem(secondOnlyBase);
ui->treeDetails->addTopLevelItem(sharedBase); ui->treeDetails->addTopLevelItem(sharedBase);
ui->treeDetails->setSortingEnabled(true); //ui->treeDetails->setSortingEnabled(true);
ui->treeDetails->sortByColumn(0, Qt::AscendingOrder); //ui->treeDetails->sortByColumn(0, Qt::AscendingOrder);
QSettings settings; QSettings settings;
if (settings.value("InfoCompare/AutoExpand", false).toBool()) if (settings.value("InfoCompare/AutoExpand", false).toBool())
+1 -1
View File
@@ -260,7 +260,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
dataBase = new QTreeWidgetItem(); dataBase = new QTreeWidgetItem();
dataBase->setText(0, tr("Bitfield Histogram")); 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 = new QTreeWidgetItem();
tempItem->setText(0, QString::number(c) + " (Byte " + QString::number(c / 8) + " Bit " tempItem->setText(0, QString::number(c) + " (Byte " + QString::number(c / 8) + " Bit "
+5 -2
View File
@@ -70,10 +70,13 @@ void SerialWorker::setSerialPort(QSerialPortInfo *port)
serial = new QSerialPort(*port); serial = new QSerialPort(*port);
qDebug() << "Serial port name is " << port->portName(); 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->setDataBits(serial->Data8);
serial->setFlowControl(serial->HardwareControl); //this is important though 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->setDataTerminalReady(true); //you do need to set these or the fan gets dirty
serial->setRequestToSend(true); serial->setRequestToSend(true);
QByteArray output; QByteArray output;