Fixed nasty bug in file comparator, fixed minor bug in frame info window, made serial initialization more correct.
This commit is contained in:
+31
-11
@@ -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())
|
||||||
|
|||||||
+2
-2
@@ -210,7 +210,7 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
|
|||||||
dataHistogram[dat][c]++; //add one to count for this
|
dataHistogram[dat][c]++; //add one to count for this
|
||||||
for (int l = 0; l < 8; l++)
|
for (int l = 0; l < 8; l++)
|
||||||
{
|
{
|
||||||
int bit = dat & (1 << l);
|
int bit = dat & (1 << l);
|
||||||
if (bit == (1 << l))
|
if (bit == (1 << l))
|
||||||
{
|
{
|
||||||
bitfieldHistogram[c * 8 + l]++;
|
bitfieldHistogram[c * 8 + l]++;
|
||||||
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user