|
|
|
@@ -7,12 +7,12 @@ CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
|
|
|
|
ui(new Ui::CCANViewerPage)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
mMsgList = 0;
|
|
|
|
|
//mMsgList = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
ui->mCANDataTableWidget->setColumnCount(6);
|
|
|
|
|
ui->mCANDataTableWidget->setHorizontalHeaderLabels(QStringList() << "Time" << "Channel" << "Msg ID" << "Msg Type" << "Msg Length" << "Data");
|
|
|
|
|
ui->mCANDataTableWidget->setHorizontalHeaderLabels(QStringList() << "Device" << "Channel" << "Msg ID" << "Msg Type" << "Msg Length" << "Data");
|
|
|
|
|
|
|
|
|
|
ui->mCANDataTableWidget->clearContents();
|
|
|
|
|
ui->mCANDataTableWidget->setRowCount(0);
|
|
|
|
@@ -32,22 +32,22 @@ CCANViewerPage::~CCANViewerPage()
|
|
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int CCANViewerPage::InitCANTable(QList<CCANMessage *> *MsgList)
|
|
|
|
|
int CCANViewerPage::InitCANTable(QList<CCANMessage *> *MsgList, QString DeviceName)
|
|
|
|
|
{
|
|
|
|
|
if(MsgList == 0)
|
|
|
|
|
{
|
|
|
|
|
return RET_GENERAL_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mMsgList = MsgList;
|
|
|
|
|
mMsgList.append(MsgList);
|
|
|
|
|
|
|
|
|
|
int row = ui->mCANDataTableWidget->rowCount();
|
|
|
|
|
ui->mCANDataTableWidget->setRowCount(MsgList->size());
|
|
|
|
|
ui->mCANDataTableWidget->setRowCount(MsgList->size() + row);
|
|
|
|
|
for(int Msg = 0; Msg < MsgList->size(); Msg++)
|
|
|
|
|
{
|
|
|
|
|
QTableWidgetItem *NewItem;
|
|
|
|
|
|
|
|
|
|
NewItem = new QTableWidgetItem("Time");
|
|
|
|
|
NewItem = new QTableWidgetItem(DeviceName);
|
|
|
|
|
ui->mCANDataTableWidget->setItem(row,0,NewItem);
|
|
|
|
|
|
|
|
|
|
//Set Msg name
|
|
|
|
@@ -98,8 +98,9 @@ int CCANViewerPage::UpdateCANTable(QList<CCANMessage *> *MsgList)
|
|
|
|
|
int row = 0;
|
|
|
|
|
for(row = 0; row < ui->mCANDataTableWidget->rowCount(); row++)
|
|
|
|
|
{
|
|
|
|
|
// if(ui->mCANDataTableWidget->item(row,2)->text() == QString("0x%1").arg(MsgList->at(msg)->mCANMsgID,0,16))
|
|
|
|
|
if(ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt() == MsgList->at(msg)->mCANMsgID)
|
|
|
|
|
//Match device and message ID
|
|
|
|
|
if(ui->mCANDataTableWidget->item(row,0)->text() == MsgList->at(msg)->mOwnerDeviceName &&
|
|
|
|
|
ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt() == MsgList->at(msg)->mCANMsgID)
|
|
|
|
|
{
|
|
|
|
|
//Set message length value
|
|
|
|
|
ui->mCANDataTableWidget->item(row,4)->setText(QString("%1").arg(MsgList->at(msg)->mCANMsgLength));
|
|
|
|
@@ -123,7 +124,12 @@ int CCANViewerPage::UpdateCANTable(QList<CCANMessage *> *MsgList)
|
|
|
|
|
|
|
|
|
|
void CCANViewerPage::MessageSelectionChanged()
|
|
|
|
|
{
|
|
|
|
|
if(mMsgList == 0)
|
|
|
|
|
// if(mMsgList == 0)
|
|
|
|
|
// {
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
if(mMsgList.isEmpty())
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@@ -133,27 +139,31 @@ void CCANViewerPage::MessageSelectionChanged()
|
|
|
|
|
int row = ui->mCANDataTableWidget->currentRow();
|
|
|
|
|
if(row == -1)
|
|
|
|
|
return;
|
|
|
|
|
for (int msg = 0; msg < mMsgList->size(); msg++)
|
|
|
|
|
for(int MsgList = 0; MsgList < mMsgList.size(); MsgList++)
|
|
|
|
|
{
|
|
|
|
|
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
|
|
|
|
if(ID == mMsgList->at(msg)->mCANMsgID)
|
|
|
|
|
for (int msg = 0; msg < mMsgList.at(MsgList)->size(); msg++)
|
|
|
|
|
{
|
|
|
|
|
CCANMessage *Msg = mMsgList->at(msg);
|
|
|
|
|
ui->mCANSignalTableWidget->clearContents();
|
|
|
|
|
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
|
|
|
|
|
|
|
|
|
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
|
|
|
|
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
|
|
|
|
QString Device = ui->mCANDataTableWidget->item(row,0)->text();
|
|
|
|
|
if(Device == mMsgList.at(MsgList)->at(msg)->mOwnerDeviceName &&
|
|
|
|
|
ID == mMsgList.at(MsgList)->at(msg)->mCANMsgID)
|
|
|
|
|
{
|
|
|
|
|
//Signal name
|
|
|
|
|
QTableWidgetItem *NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalName);
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,0,NewItem);
|
|
|
|
|
CCANMessage *Msg = mMsgList.at(MsgList)->at(msg);
|
|
|
|
|
ui->mCANSignalTableWidget->clearContents();
|
|
|
|
|
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
|
|
|
|
|
|
|
|
|
//Phys value
|
|
|
|
|
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
|
|
|
|
{
|
|
|
|
|
//Signal name
|
|
|
|
|
QTableWidgetItem *NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalName);
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,0,NewItem);
|
|
|
|
|
|
|
|
|
|
//JFM 2023-06-13 changé pour forcer toujours à float
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
//Phys value
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
//JFM 2023-06-13 changé pour forcer toujours à float
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
|
|
|
|
{
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
|
|
|
@@ -168,16 +178,17 @@ void CCANViewerPage::MessageSelectionChanged()
|
|
|
|
|
{
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
}*/
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,1,NewItem);
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,1,NewItem);
|
|
|
|
|
|
|
|
|
|
//Raw value
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,2,NewItem);
|
|
|
|
|
//Raw value
|
|
|
|
|
NewItem = new QTableWidgetItem(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,2,NewItem);
|
|
|
|
|
|
|
|
|
|
//Units
|
|
|
|
|
NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalUnit);
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,3,NewItem);
|
|
|
|
|
//Units
|
|
|
|
|
NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalUnit);
|
|
|
|
|
ui->mCANSignalTableWidget->setItem(signal,3,NewItem);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -186,51 +197,51 @@ void CCANViewerPage::MessageSelectionChanged()
|
|
|
|
|
|
|
|
|
|
int CCANViewerPage::UpdateSignalsTable()
|
|
|
|
|
{
|
|
|
|
|
int row = ui->mCANDataTableWidget->currentRow();
|
|
|
|
|
for (int msg = 0; msg < mMsgList->size(); msg++)
|
|
|
|
|
{
|
|
|
|
|
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
|
|
|
|
if(ID == mMsgList->at(msg)->mCANMsgID)
|
|
|
|
|
{
|
|
|
|
|
CCANMessage *Msg = mMsgList->at(msg);
|
|
|
|
|
ui->mCANSignalTableWidget->clearContents();
|
|
|
|
|
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
|
|
|
|
// int row = ui->mCANDataTableWidget->currentRow();
|
|
|
|
|
// for (int msg = 0; msg < mMsgList->size(); msg++)
|
|
|
|
|
// {
|
|
|
|
|
// unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
|
|
|
|
// if(ID == mMsgList->at(msg)->mCANMsgID)
|
|
|
|
|
// {
|
|
|
|
|
// CCANMessage *Msg = mMsgList->at(msg);
|
|
|
|
|
// ui->mCANSignalTableWidget->clearContents();
|
|
|
|
|
// ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
|
|
|
|
|
|
|
|
|
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
|
|
|
|
{
|
|
|
|
|
//Signal name
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(Msg->mSignalsList.at(signal).mSignalName);
|
|
|
|
|
// for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
|
|
|
|
// {
|
|
|
|
|
// //Signal name
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(Msg->mSignalsList.at(signal).mSignalName);
|
|
|
|
|
|
|
|
|
|
//Phys value
|
|
|
|
|
//JFM 2023-06-13 changé pour forcer toujours à float
|
|
|
|
|
//Mais cette fonciton n'est jamais appelée et NE FONCTIONNE PAS.
|
|
|
|
|
//TODO: Corriger les index des colonnes des items à afficher
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
// //Phys value
|
|
|
|
|
// //JFM 2023-06-13 changé pour forcer toujours à float
|
|
|
|
|
// //Mais cette fonciton n'est jamais appelée et NE FONCTIONNE PAS.
|
|
|
|
|
// //TODO: Corriger les index des colonnes des items à afficher
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
|
|
|
|
{
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
|
|
|
|
}
|
|
|
|
|
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
|
|
|
|
{
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg((qint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
|
|
|
|
}
|
|
|
|
|
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
|
|
|
|
Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
|
|
|
|
{
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
}*/
|
|
|
|
|
// /*
|
|
|
|
|
// if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
|
|
|
|
// {
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
|
|
|
|
// }
|
|
|
|
|
// else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
|
|
|
|
// {
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg((qint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
|
|
|
|
// }
|
|
|
|
|
// else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_32_BIT_FLOAT ||
|
|
|
|
|
// Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_64_BIT_DOUBLE)
|
|
|
|
|
// {
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
|
|
|
|
// }*/
|
|
|
|
|
|
|
|
|
|
//Raw value
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
|
|
|
|
// //Raw value
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(QString("0x%1").arg(Msg->mSignalsList.at(signal).mRawValue,0,16));
|
|
|
|
|
|
|
|
|
|
//Units
|
|
|
|
|
ui->mCANSignalTableWidget->item(row,0)->setText(Msg->mSignalsList.at(signal).mSignalUnit);
|
|
|
|
|
// //Units
|
|
|
|
|
// ui->mCANSignalTableWidget->item(row,0)->setText(Msg->mSignalsList.at(signal).mSignalUnit);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
return RET_OK;
|
|
|
|
|
}
|
|
|
|
|