Adds q2 repos to migrate

This commit is contained in:
torsten committed 2026-07-14 12:07:36 +02:00
1 parent ad1f62c4ee
commit 17f1c61c9e
991 files changed
+178451

No files matched your search

@@ -0,0 +1,25 @@
#
# $Id$
# $HeadURL$
# $Author$
#
SET(lta_SRCS
main.cpp
mainwindow.cpp
)
SET(lta_HDRS
mainwindow.h
)
SET(lta_UICS
mainwindow.ui
)
NGL_WRAP_UI(lta_SRCS ${lta_UICS})
NGL_ADD_EXECUTABLE(AAR SV NO_TRANSLATION LastTestAuswertung ${lta_SRCS} ${lta_HDRS} ${lta_UICS})
NGL_TARGET_LINK_LIBRARIES(LastTestAuswertung
Qt5::Core
Qt5::Widgets
)
@@ -0,0 +1,16 @@
#-------------------------------------------------
#
# Project created by QtCreator 2011-05-13T08:20:33
#
#-------------------------------------------------
TARGET = LastTestAuswertung
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
@@ -0,0 +1,10 @@
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
@@ -0,0 +1,428 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
#include <cmath>
#include <QIntValidator>
#include <QList>
#include <QSet>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
}
MainWindow::~MainWindow()
{
m_files.clear();
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::init()
{
connect(ui->pushButtonOrdnerFinden, &QPushButton::clicked, this, &MainWindow::slot_findFolder);
connect(ui->pushButtonAnalysieren, &QPushButton::clicked, this, &MainWindow::slot_analysieren);
ui->progressBar->setValue(0);
ui->labelResult->setText(QString());
QIntValidator intVal;
intVal.setBottom(0);
intVal.setTop(100000);
ui->lineEditISSI->setValidator(&intVal);
}
void MainWindow::slot_findFolder()
{
QString name = QFileDialog::getExistingDirectory(this, tr("Choose folder"), QDir::homePath(), QFileDialog::DontResolveSymlinks);
ui->lineEditOrdner->setText(name);
ui->labelResult->setText(QString());
}
void MainWindow::slot_analysieren()
{
ui->labelResult->setText(QString());
QString ISSI = ui->lineEditISSI->text();
if (ISSI.isEmpty())
ISSI = QLatin1String("1");
m_logfileList.clear();
QDir folder(ui->lineEditOrdner->text());
m_files = folder.entryList();
folder.~QDir();
ui->progressBar->setValue(1);
const QString paytext = ISSI + QLatin1String("-payload");
const QString issitext = ISSI + QLatin1String("-1");
for (int i = 0; i < m_files.count(); i++)
{
QString name = m_files[i];
if (name.contains(paytext))
{
m_files.removeAt(i);
i--;
}
else
{
if (!name.contains(QLatin1String(".dat")))
{
m_files.removeAt(i);
i--;
}
else
{
if (!name.contains(issitext))
{
m_files.removeAt(i);
i--;
}
}
}
}
ui->progressBar->setValue(10);
if (m_files.count() == 0)
ui->labelResult->setText(tr("no logfiles found"));
else
{
openLogfile(ui->lineEditOrdner->text(), m_files.count());
ui->progressBar->setValue(12);
ui->progressBar->repaint();
readFiles();
ui->progressBar->setValue(90);
ui->progressBar->repaint();
QString ausgabetext = QLatin1String("\tANALYSIS COMPLETED - ") + QString::number(auswerten()) + QLatin1String(" missing messages");
ui->labelResult->setText(ausgabetext);
}
ui->progressBar->setValue(100);
ui->progressBar->repaint();
}
void MainWindow::readFiles()
{
for (int j = 0; j < m_files.count(); j++)
{
QString filename = ui->lineEditOrdner->text();
filename += QLatin1Char('/');
filename += m_files[j];
QFile file(filename);
if (file.open(QIODevice::ReadOnly))
{
QByteArray ar = file.read(150);
file.close();
if (ar.count() > 36)
{
QString issi = getISSI(ar);
QByteArray bytes = ar;
bytes.remove(0, 34);
bytes.remove(2, 150);
uint nr = bytes[0] & 255;
nr *= 256;
nr += bytes[1] & 255;
bytes = ar;
bytes.remove(0, 30);
bytes.remove(4, 150);
const QByteArray test = bytes.toHex();
qint64 zeit = test.toLongLong(nullptr, 16);
const QDateTime timeStart(QDateTime::fromMSecsSinceEpoch(zeit * 1000));
writeToLogfile(issi, timeStart, getTimestamp(m_files[j]), m_files[j], nr);
writeLogZeiten(timeStart, getTimestamp(m_files[j]), issi);
}
}
file.close();
double val = 70;
val /= m_files.count();
val *= (j + 1);
val += 20;
ui->progressBar->setValue(int(val));
}
}
void MainWindow::openLogfile(const QString &folder, int count)
{
m_logfile = folder;
m_logZeiten = folder;
m_logfile += QLatin1String("/logfile_analysis.txt");
QFile file(m_logfile);
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
const QString msg = QStringLiteral("There are %1 logfiles evaluated.\nISSI SENDING TIME RECIEVING TIME FILENAME NO \n").arg(count);
file.write(msg.toUtf8());
file.close();
}
m_logZeiten += QLatin1String("/transmission_times.csv");
file.setFileName(m_logZeiten);
if (file.open(QIODevice::WriteOnly))
{
file.write("ISSI;Sending Time ; Receiving Time\n");
file.close();
}
}
void MainWindow::writeToLogfile(const QString &issi,
const QDateTime &timestamp,
const QString &filename,
uint lfdNr,
const QString &bytes)
{
QString text = issi;
text += QLatin1String(": ");
text += timestamp.toString(QLatin1String("dd.MM.yyyy hh:mm:ss"));
text += QLatin1String(" - ");
text += filename;
text += QLatin1String(" -> ");
text += bytes;
text += QLatin1String(" --> ");
text += QString::number(lfdNr, 10);
text += QLatin1Char('\n');
QFile file(m_logfile);
if (file.open(QIODevice::Append | QIODevice::Text))
{
file.write(text.toLatin1());
file.close();
}
LogfileInfo info;
info.timestamp = timestamp;
info.issi = issi;
info.lfdNr = lfdNr;
m_logfileList.append(info);
}
void MainWindow::writeToLogfile(const QString &issi,
const QDateTime &sendeZeit,
const QDateTime &timestamp,
const QString &filename,
uint lfdNr)
{
QString text = issi;
text += QLatin1String(": ");
text += sendeZeit.toString(QLatin1String("hh:mm:ss"));
text += QLatin1String(" --> ");
text += timestamp.toString(QLatin1String("dd.MM.yyyy hh:mm:ss"));
text += QLatin1String(" - ");
text += filename;
text += QLatin1String(" --> ");
text += QString::number(lfdNr, 10);
text += QLatin1Char('\n');
QFile file(m_logfile);
if (file.open(QIODevice::Append | QIODevice::Text))
{
file.write(text.toLatin1());
file.close();
}
LogfileInfo info;
info.timestamp = timestamp;
info.issi = issi;
info.lfdNr = lfdNr;
m_logfileList.append(info);
}
QDateTime MainWindow::getTimestamp(const QString &filename) const
{
const auto list1 = filename.splitRef(QLatin1Char('-'));
if (list1.size() < 2)
return {};
const QStringRef &fn = list1.at(1);
const auto list2 = fn.split(QLatin1Char('.'));
auto str = list2.at(0).toString();
str.remove(10, 10);
return QDateTime::fromMSecsSinceEpoch(str.toLongLong() * 1000);
}
QString MainWindow::getISSI(QByteArray ar)
{
ar.remove(0, 5);
ar.remove(4, 200);
QByteArray issi = ar.toHex();
if (ar.count() == 4)
{
if (ar[2] == '\0' && ar[3] == '\0')
{
ar.remove(2, 2);
issi = ar.toHex();
int hex[4];
for (int i = 3; i >= 0; i--)
{
char c = issi.at(i);
if (c >= '0' && c <= '9')
hex[i] = c - '0';
else if (c >= 'a' && c <= 'f')
hex[i] = c - 'a' + 10;
}
int sum = 0;
sum += hex[1];
sum += hex[0] * 16;
sum += hex[3] * 256;
sum += hex[2] * 4096;
issi = QByteArray::number(sum);
}
}
return QString::fromLatin1(issi);
}
int MainWindow::auswerten()
{
QFile f(m_logfile);
if (!f.open(QIODevice::Append | QIODevice::Text))
return -1;
f.write("***************************RESULT************************************\n");
QSet<QString> issis;
issis.reserve(100);
for (int i = 0; i < m_logfileList.count(); i++)
{
issis += m_logfileList.at(i).issi;
}
ui->progressBar->setValue(94);
ui->progressBar->repaint();
int fehlcount = 0;
QVector<uint> numList;
int i = 0;
for (const QString &issi : qAsConst(issis))
{
numList.clear();
for (int j = 0; j < m_logfileList.count(); j++)
{
if (issi == m_logfileList.at(j).issi)
numList.append(m_logfileList.at(j).lfdNr);
}
QByteArray text = issi.toLatin1();
text += ":\t";
text += QByteArray::number(numList.count());
text += " messages transmitted\n";
text += "\t";
f.write(text);
fehlcount += fehlendeNumsEintragen(numList, f);
double val = 5;
val /= issis.count();
val *= (i + 1);
val += 94;
ui->progressBar->setValue(qRound(val));
ui->progressBar->repaint();
++i;
}
return fehlcount;
}
int MainWindow::fehlendeNumsEintragen(const QVector<uint> &numList, QFile &f)
{
QVector<uint> fehlendeNums = getFehlendeNums(numList);
QByteArray text = QByteArray::number(fehlendeNums.count());
text += " lost messages\n";
text += "\t\t following messages are missing (";
for (int j = 0; j < fehlendeNums.count(); j++)
{
text += QByteArray::number(fehlendeNums.at(j));
text += ", ";
}
text += ")\n";
f.write(text);
return fehlendeNums.count();
}
QVector<uint> MainWindow::getFehlendeNums(const QVector<uint> &numsDurchgang)
{
uint count = numsDurchgang.count();
uint maxnum = 0;
uint minnum = 999999;
for (uint k = 0; k < count; k++)
{
if (numsDurchgang.at(k) > maxnum)
maxnum = numsDurchgang.at(k);
if (numsDurchgang.at(k) < minnum)
minnum = numsDurchgang.at(k);
}
QVector<uint> fehlendeNum;
for (uint z = minnum; z <= maxnum; z++)
{
bool vorhanden = false;
for (uint j = 0; j < count; j++)
{
if (numsDurchgang.at(j) == z)
{
vorhanden = true;
break;
}
}
if (!vorhanden)
fehlendeNum.append(z);
}
return fehlendeNum;
}
void MainWindow::writeLogZeiten(const QDateTime &beginn, const QDateTime &end, const QString &issi)
{
QString msg = issi;
msg += QLatin1Char(';');
msg += beginn.toString(QLatin1String("hh:mm:ss"));
msg += QLatin1Char(';');
msg += end.toString(QLatin1String("hh:mm:ss"));
msg += QLatin1Char('\n');
QFile file(m_logZeiten);
file.open(QIODevice::Append | QIODevice::Text);
file.write(msg.toUtf8());
file.close();
}
@@ -0,0 +1,69 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDateTime>
#include <QFile>
namespace Ui
{
class MainWindow;
}
struct LogfileInfo
{
QString issi;
QDateTime timestamp;
uint lfdNr;
};
struct ZeitNum
{
uint zeit;
int num;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
void init();
void readFiles();
QStringList m_files;
QDateTime getTimestamp(const QString &filename) const;
QString m_logfile;
QString m_logZeiten;
void openLogfile(const QString &folder, int count);
void writeToLogfile(const QString &issi,
const QDateTime &timestamp,
const QString &filename,
uint lfdNr,
const QString &bytes);
void writeToLogfile(const QString &issi,
const QDateTime &sendeZeit,
const QDateTime &timestamp,
const QString &filename,
uint lfdNr);
QString getISSI(QByteArray ar);
int auswerten();
QVector<uint> getFehlendeNums(const QVector<uint> &numsDurchgang);
int fehlendeNumsEintragen(const QVector<uint> &numList, QFile &file);
void writeLogZeiten(const QDateTime &beginn, const QDateTime &end, const QString &issi);
QVector<LogfileInfo> m_logfileList;
private slots:
void slot_findFolder();
void slot_analysieren();
};
#endif
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>521</width>
<height>234</height>
</rect>
</property>
<property name="windowTitle">
<string>Logfiles analysieren</string>
</property>
<widget class="QWidget" name="centralWidget">
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>501</width>
<height>101</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="pushButtonAnalysieren">
<property name="text">
<string>analyse logfiles</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>24</number>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelResult">
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>9</x>
<y>0</y>
<width>501</width>
<height>65</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="lineEditOrdner"/>
</item>
<item>
<widget class="QPushButton" name="pushButtonOrdnerFinden">
<property name="text">
<string>choose folder</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="lineEditISSI"/>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;ISSI by the central&lt;br /&gt;(if no ISSI is entered, ISSI 1 will be used)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>521</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>