Corrections et développement. V1.01
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
#include "CANViewerPage.h"
|
||||
#include "ui_CANViewerPage.h"
|
||||
#include "defines.h"
|
||||
#include "CANDevice.h"
|
||||
#include "MQTTMessage.h"
|
||||
#include <QClipboard>
|
||||
|
||||
CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
@@ -21,10 +24,8 @@ CCANViewerPage::CCANViewerPage(QWidget *parent) :
|
||||
ui->mCANSignalTableWidget->setColumnCount(4);
|
||||
ui->mCANSignalTableWidget->setHorizontalHeaderLabels(QStringList() << "Nom du signal" << "Val. physique" << "Val. brute" << "Unités");
|
||||
|
||||
|
||||
|
||||
|
||||
connect(ui->mCANDataTableWidget,&QTableWidget::itemSelectionChanged,this,&CCANViewerPage::MessageSelectionChanged);
|
||||
connect(ui->mCopyJSonToClipboardBtn,&QPushButton::pressed,this,&CCANViewerPage::CopyJSONToClipboardButtonPressed);
|
||||
}
|
||||
|
||||
CCANViewerPage::~CCANViewerPage()
|
||||
@@ -32,60 +33,54 @@ CCANViewerPage::~CCANViewerPage()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
int CCANViewerPage::InitCANTable(QList<CCANMessage *> *MsgList, QString DeviceName)
|
||||
int CCANViewerPage::InitCANTable(QList<CCANDevice *> *CANDevicesList)
|
||||
{
|
||||
if(MsgList == 0)
|
||||
//if(MsgList == 0)
|
||||
if(CANDevicesList == 0)
|
||||
{
|
||||
return RET_GENERAL_ERROR;
|
||||
}
|
||||
|
||||
mMsgList.append(MsgList);
|
||||
ResetPage();
|
||||
|
||||
int row = ui->mCANDataTableWidget->rowCount();
|
||||
ui->mCANDataTableWidget->setRowCount(MsgList->size() + row);
|
||||
for(int Msg = 0; Msg < MsgList->size(); Msg++)
|
||||
mCANDevicesList = CANDevicesList;
|
||||
|
||||
for(int Dev = 0; Dev < mCANDevicesList->size(); Dev++)
|
||||
{
|
||||
QTableWidgetItem *NewItem;
|
||||
QList<CCANMessage *> *MsgList = mCANDevicesList->at(Dev)->GetCANMessagesList();
|
||||
|
||||
NewItem = new QTableWidgetItem(DeviceName);
|
||||
ui->mCANDataTableWidget->setItem(row,0,NewItem);
|
||||
int row = ui->mCANDataTableWidget->rowCount();
|
||||
ui->mCANDataTableWidget->setRowCount(MsgList->size() + row);
|
||||
for(int Msg = 0; Msg < MsgList->size(); Msg++)
|
||||
{
|
||||
QTableWidgetItem *NewItem;
|
||||
|
||||
//Set Msg name
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg(MsgList->at(Msg)->mCANMsgName));
|
||||
ui->mCANDataTableWidget->setItem(row,1,NewItem);
|
||||
NewItem = new QTableWidgetItem(mCANDevicesList->at(Dev)->mDeviceConfigInfo.mDeviceName);
|
||||
ui->mCANDataTableWidget->setItem(row,0,NewItem);
|
||||
|
||||
//Set message ID value
|
||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgID,0,16));
|
||||
ui->mCANDataTableWidget->setItem(row,2,NewItem);
|
||||
NewItem->setData(Qt::UserRole,MsgList->at(Msg)->mCANMsgID); //Set message ID as reference to easily find the row when updating...
|
||||
//Set Msg name
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg(MsgList->at(Msg)->mCANMsgName));
|
||||
ui->mCANDataTableWidget->setItem(row,1,NewItem);
|
||||
|
||||
//Set message type value
|
||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgType,0,16));
|
||||
ui->mCANDataTableWidget->setItem(row,3,NewItem);
|
||||
//Set message ID value
|
||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgID,0,16));
|
||||
ui->mCANDataTableWidget->setItem(row,2,NewItem);
|
||||
NewItem->setData(Qt::UserRole,MsgList->at(Msg)->mCANMsgID); //Set message ID as reference to easily find the row when updating...
|
||||
|
||||
//Set message length value
|
||||
NewItem = new QTableWidgetItem(QString(" "));
|
||||
ui->mCANDataTableWidget->setItem(row,4,NewItem);
|
||||
//Set message type value
|
||||
NewItem = new QTableWidgetItem(QString("0x%1").arg(MsgList->at(Msg)->mCANMsgType,0,16));
|
||||
ui->mCANDataTableWidget->setItem(row,3,NewItem);
|
||||
|
||||
NewItem = new QTableWidgetItem(QString(" "));
|
||||
ui->mCANDataTableWidget->setItem(row,5,NewItem);
|
||||
//Set message length value
|
||||
NewItem = new QTableWidgetItem(QString(" "));
|
||||
ui->mCANDataTableWidget->setItem(row,4,NewItem);
|
||||
|
||||
row++;
|
||||
NewItem = new QTableWidgetItem(QString(" "));
|
||||
ui->mCANDataTableWidget->setItem(row,5,NewItem);
|
||||
|
||||
|
||||
|
||||
// //Set data value
|
||||
// QString Data;
|
||||
// for(unsigned int i = 0; i < MsgList->at(Msg)->mCANMsgLength; i++)
|
||||
// {
|
||||
// unsigned char DataByte = MsgList->at(Msg)->mCANMsgData.at(i);
|
||||
// Data.append(QString("%1 ").arg(DataByte,2,16,QLatin1Char('0')));
|
||||
// }
|
||||
// NewItem = new QTableWidgetItem(Data);
|
||||
// ui->mCANDataTableWidget->setItem(Msg,5,NewItem);
|
||||
row++;
|
||||
}
|
||||
}
|
||||
// ui->mCANSignalTableWidget->setCurrentItem(ui->mCANDataTableWidget->item(0,0));
|
||||
// MessageSelectionChanged();
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
@@ -124,75 +119,94 @@ int CCANViewerPage::UpdateCANTable(QList<CCANMessage *> *MsgList)
|
||||
|
||||
void CCANViewerPage::MessageSelectionChanged()
|
||||
{
|
||||
// if(mMsgList == 0)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
if(mMsgList.isEmpty())
|
||||
if(mCANDevicesList->isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ui->mCANSignalTableWidget->clearContents();
|
||||
|
||||
//Find message based on current table selection
|
||||
int row = ui->mCANDataTableWidget->currentRow();
|
||||
if(row == -1)
|
||||
return;
|
||||
for(int MsgList = 0; MsgList < mMsgList.size(); MsgList++)
|
||||
|
||||
for(int Dev = 0; Dev < mCANDevicesList->size(); Dev++)
|
||||
{
|
||||
for (int msg = 0; msg < mMsgList.at(MsgList)->size(); msg++)
|
||||
QString DeviceName = ui->mCANDataTableWidget->item(row,0)->text();
|
||||
if(mCANDevicesList->at(Dev)->mDeviceConfigInfo.mDeviceName == DeviceName) //Find the device corresponding to the selected line
|
||||
{
|
||||
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)
|
||||
QList<CCANMessage *> *MsgList = mCANDevicesList->at(Dev)->GetCANMessagesList();
|
||||
for (int msg = 0; msg < MsgList->size(); msg++)
|
||||
{
|
||||
CCANMessage *Msg = mMsgList.at(MsgList)->at(msg);
|
||||
ui->mCANSignalTableWidget->clearContents();
|
||||
ui->mCANSignalTableWidget->setRowCount(Msg->mSignalsList.size());
|
||||
unsigned int ID = ui->mCANDataTableWidget->item(row,2)->data(Qt::UserRole).toUInt();
|
||||
|
||||
for(int signal = 0; signal < Msg->mSignalsList.size(); signal++)
|
||||
if(ID == MsgList->at(msg)->mCANMsgID) //Find the message in the list corresponding to the selected line
|
||||
{
|
||||
//Signal name
|
||||
QTableWidgetItem *NewItem = new QTableWidgetItem(Msg->mSignalsList.at(signal).mSignalName);
|
||||
ui->mCANSignalTableWidget->setItem(signal,0,NewItem);
|
||||
CCANMessage *Msg = 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
|
||||
#ifdef FORCE_FLOAT_REPRESENTATION
|
||||
//JFM 2023-06-13 changé pour forcer toujours à float
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
||||
#else
|
||||
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
||||
{
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
||||
}
|
||||
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
||||
{
|
||||
|
||||
/*
|
||||
if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_UNSIGNED_INT)
|
||||
{
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg((quint64)Msg->mSignalsList.at(signal).mPhysicalValue));
|
||||
}
|
||||
else if(Msg->mSignalsList.at(signal).mValueType == CCANSignal::CAN_SIGNAL_TYPE_SIGNED_INT)
|
||||
{
|
||||
NewItem = new QTableWidgetItem(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)
|
||||
{
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
||||
}
|
||||
#endif
|
||||
ui->mCANSignalTableWidget->setItem(signal,1,NewItem);
|
||||
|
||||
NewItem = new QTableWidgetItem(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)
|
||||
{
|
||||
NewItem = new QTableWidgetItem(QString("%1").arg(Msg->mSignalsList.at(signal).mPhysicalValue,0,'f',1));
|
||||
}*/
|
||||
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);
|
||||
}
|
||||
|
||||
ui->mJSonSignalViewTxtEdit->clear();
|
||||
CMQTTMessage MQTTMsg = mCANDevicesList->at(Dev)->mCANDataLogger.GetMQTTMessage(Msg,true);
|
||||
QString MQTTMsgDisplay = QString("Topic: %1\n\nPayload:\n%2").arg(MQTTMsg.mMessageTopic).arg(MQTTMsg.mMessagePayload);
|
||||
ui->mJSonSignalViewTxtEdit->insertPlainText(MQTTMsgDisplay);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
int CCANViewerPage::ResetPage()
|
||||
{
|
||||
ui->mCANDataTableWidget->clearContents();
|
||||
ui->mCANDataTableWidget->setRowCount(0);
|
||||
ui->mCANSignalTableWidget->clearContents();
|
||||
ui->mCANSignalTableWidget->setRowCount(0);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
int CCANViewerPage::UpdateSignalsTable()
|
||||
@@ -245,3 +259,10 @@ int CCANViewerPage::UpdateSignalsTable()
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
void CCANViewerPage::CopyJSONToClipboardButtonPressed()
|
||||
{
|
||||
// QApplication::clipboard()->setText(ui->mJSonSignalViewTxtEdit->);
|
||||
ui->mJSonSignalViewTxtEdit->selectAll();
|
||||
ui->mJSonSignalViewTxtEdit->copy();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user