This commit is contained in:
2023-01-21 15:31:49 -05:00
parent c6abea01d5
commit ed0678081f
35 changed files with 2750 additions and 1034 deletions
+1 -1
View File
@@ -14,7 +14,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Otracik</string>
<string>Otarcik</string>
</property>
<property name="windowOpacity">
<double>3.000000000000000</double>
@@ -1,14 +1,280 @@
#include "ProgramSettingsPage.h"
#include "ui_ProgramSettingsPage.h"
#include "CANDevice.h"
//#include "CANMessage.h"
//#include "CANSignal.h"
//#include "PCANBasic.h"
CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::CProgramSettingsPage)
{
ui->setupUi(this);
mDevicesList = 0;
ui->mDBSignalDetailsTable->setColumnCount(10);
ui->mDBSignalDetailsTable->setHorizontalHeaderLabels(QStringList() << "Signal" << "Bit No" << "Length" << "Type" << "Max Val" << "Min Val" << "Offset" << "Scale factor" << "Unit" << "Byte order");
ui->mCANBaudrateComboBx->clear();
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_1M",QVariant(PCAN_BAUD_1M));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_800K",QVariant(PCAN_BAUD_800K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_500K",QVariant(PCAN_BAUD_500K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_250K",QVariant(PCAN_BAUD_250K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_125K",QVariant(PCAN_BAUD_125K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_100K",QVariant(PCAN_BAUD_100K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_95K",QVariant(PCAN_BAUD_95K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_83K",QVariant(PCAN_BAUD_83K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_50K",QVariant(PCAN_BAUD_50K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_47K",QVariant(PCAN_BAUD_47K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_33K",QVariant(PCAN_BAUD_33K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_20K",QVariant(PCAN_BAUD_20K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_10K",QVariant(PCAN_BAUD_10K));
ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_5K",QVariant(PCAN_BAUD_5K));
ui->mCANIDComboBx->addItem("PCAN_USBBUS1",QVariant(PCAN_USBBUS1));
ui->mCANIDComboBx->addItem("PCAN_USBBUS2",QVariant(PCAN_USBBUS2));
ui->mCANIDComboBx->addItem("PCAN_USBBUS3",QVariant(PCAN_USBBUS3));
ui->mCANIDComboBx->addItem("PCAN_USBBUS4",QVariant(PCAN_USBBUS4));
ui->mCANIDComboBx->addItem("PCAN_USBBUS5",QVariant(PCAN_USBBUS5));
ui->mCANIDComboBx->addItem("PCAN_USBBUS6",QVariant(PCAN_USBBUS6));
ui->mCANIDComboBx->addItem("PCAN_USBBUS7",QVariant(PCAN_USBBUS7));
ui->mCANIDComboBx->addItem("PCAN_USBBUS8",QVariant(PCAN_USBBUS8));
ui->mCANIDComboBx->addItem("PCAN_USBBUS9",QVariant(PCAN_USBBUS9));
ui->mCANIDComboBx->addItem("PCAN_USBBUS10",QVariant(PCAN_USBBUS10));
ui->mCANIDComboBx->addItem("PCAN_USBBUS11",QVariant(PCAN_USBBUS11));
ui->mCANIDComboBx->addItem("PCAN_USBBUS12",QVariant(PCAN_USBBUS12));
ui->mCANIDComboBx->addItem("PCAN_USBBUS13",QVariant(PCAN_USBBUS13));
ui->mCANIDComboBx->addItem("PCAN_USBBUS14",QVariant(PCAN_USBBUS14));
ui->mCANIDComboBx->addItem("PCAN_USBBUS15",QVariant(PCAN_USBBUS15));
ui->mCANIDComboBx->addItem("PCAN_USBBUS16",QVariant(PCAN_USBBUS16));
ui->mDeviceDescriptionTxtEdit->setEnabled(false);
ui->mDatabaseFileSelectBtn->hide();
ui->mCANBaudrateComboBx->setEnabled(false);
ui->mCANIDComboBx->setEnabled(false);
connect(ui->mDevicesList,&QListWidget::itemSelectionChanged,this,&CProgramSettingsPage::DeviceSelectionChanged);
connect(ui->mDBMessagesListWidget,&QListWidget::itemSelectionChanged,this,&CProgramSettingsPage::MessageSelectionChanged);
connect(ui->mModifyDevParamsBtn,&QPushButton::clicked,this,&CProgramSettingsPage::ModifyDeviceBtnPressed);
// connect(ui->mDBSignalDetailsTable,&QTableWidget::itemSelectionChanged,this,&CProgramSettingsPage::SignalSelectionChanged);
}
CProgramSettingsPage::~CProgramSettingsPage()
{
delete ui;
}
int CProgramSettingsPage::SetDevicesList(QList<CCANDevice *> *DevicesList)
{
if(DevicesList == 0)
{
return RET_GENERAL_ERROR;
}
mDevicesList = DevicesList;
if(mDevicesList == 0)
{
return RET_GENERAL_ERROR;
}
ui->mDevicesList->clear();
for(int i = 0; i < mDevicesList->size(); i++)
{
QString name = mDevicesList->at(i)->mDeviceName;
if(name.isEmpty())
{
name = QString("Device %1").arg(i+1);
}
ui->mDevicesList->addItem(name);
}
ui->mDevicesList->setCurrentRow(0);
return RET_OK;
}
int CProgramSettingsPage::ClearDatabaseData()
{
ui->mDBMessagesListWidget->clear();
return RET_OK;
}
int CProgramSettingsPage::UpdatePage()
{
int index = ui->mDevicesList->currentRow();
if(index < 0 || index >= mDevicesList->size())
{
return RET_GENERAL_ERROR;
}
CCANDevice *Device = mDevicesList->at(index);
if(Device != 0)
{
//update device information
ui->mCANBaudrateComboBx->setCurrentIndex(ui->mCANBaudrateComboBx->findData(Device->mCANDeviceBaudrate));
ui->mCANIDComboBx->setCurrentIndex(ui->mCANIDComboBx->findData(Device->mCANDeviceID));
ui->mDeviceDescriptionTxtEdit->setPlainText(Device->mDeviceDescription);
ui->mDatabaseFileNameLbl->setText(QString("Database: %1").arg(Device->mCANDeviceDatabaseFilename));
//update device database information
ui->mDBMessagesListWidget->clear();
ui->mDBSignalDetailsTable->clearContents();
ui->mDBSignalDetailsTable->setRowCount(0);
if(Device->mMessageList.isEmpty())
{
ui->mDBMessagesListWidget->insertItem(0,"Aucun message");
ui->mDBMessageIDLbl->setText("Message ID: ");
ui->mDBMessageLengthLbl->setText("Message Length: ");
ui->mDBMessageNameLbl->setText("Message Name: ");
ui->mDBMessageNbSignalsLbl->setText("Number of signals: ");
}
else
{
ui->mDBMessagesListWidget->clear();
for(int msg = 0; msg < Device->mMessageList.size(); msg++)
{
ui->mDBMessagesListWidget->insertItem(msg,Device->mMessageList.at(msg)->mCANMsgName);
}
ui->mDBMessagesListWidget->setCurrentRow(0);
}
}
}
int CProgramSettingsPage::UpdateMessageInformation()
{
int index = ui->mDevicesList->currentRow();
if(index < 0 || index >= mDevicesList->size())
{
return RET_GENERAL_ERROR;
}
CCANDevice *Device = mDevicesList->at(index);
if(Device != 0)
{
int MsgIndex = ui->mDBMessagesListWidget->currentRow();
if(MsgIndex < 0 || MsgIndex >= Device->mMessageList.size())
{
return RET_GENERAL_ERROR;
}
CCANMessage *Message = Device->mMessageList.at(MsgIndex);
ui->mDBMessageIDLbl->setText(QString("Message ID: 0x%1").arg(Message->mCANMsgID,0,16));
ui->mDBMessageLengthLbl->setText(QString("Message Length: %1").arg(Message->mCANMsgLength));
ui->mDBMessageNameLbl->setText(QString("Message Name: %1").arg(Message->mCANMsgName));
ui->mDBMessageNbSignalsLbl->setText(QString("Number of signals: %1").arg(Message->mSignalsList.size()));
ui->mDBSignalDetailsTable->clearContents();
ui->mDBSignalDetailsTable->setRowCount(0);
ui->mDBSignalDetailsTable->setRowCount(Message->mSignalsList.size());
for(int Sig = 0; Sig < Message->mSignalsList.size(); Sig++)
{
CCANSignal *Signal = Message->mSignalsList.at(Sig);
QTableWidgetItem *NewItem;
//Signal name
NewItem = new QTableWidgetItem(Signal->mSignalName);
ui->mDBSignalDetailsTable->setItem(Sig,0,NewItem);
//Bit No
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mStartBit));
ui->mDBSignalDetailsTable->setItem(Sig,1,NewItem);
//Length
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mSignalSize));
ui->mDBSignalDetailsTable->setItem(Sig,2,NewItem);
//Type
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueType));
ui->mDBSignalDetailsTable->setItem(Sig,3,NewItem);
//Max Val
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mMaxValue,0,'f',1));
ui->mDBSignalDetailsTable->setItem(Sig,4,NewItem);
//Min Val
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mMinValue,0,'f',1));
ui->mDBSignalDetailsTable->setItem(Sig,5,NewItem);
//Offset
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueOffset));
ui->mDBSignalDetailsTable->setItem(Sig,6,NewItem);
//Scale Factor
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueFactor,0,'f',1));
ui->mDBSignalDetailsTable->setItem(Sig,7,NewItem);
//Unit
NewItem = new QTableWidgetItem(Signal->mSignalUnit);
ui->mDBSignalDetailsTable->setItem(Sig,8,NewItem);
//Endian
NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueType));
ui->mDBSignalDetailsTable->setItem(Sig,9,NewItem);
}
ui->mDBSignalDetailsTable->resizeColumnsToContents();
}
}
void CProgramSettingsPage::DeviceSelectionChanged()
{
UpdatePage();
}
void CProgramSettingsPage::SignalSelectionChanged()
{
}
void CProgramSettingsPage::MessageSelectionChanged()
{
UpdateMessageInformation();
}
void CProgramSettingsPage::ModifyDeviceBtnPressed()
{
if(mDeviceChangeModeEnabled)
{
ui->mDeviceDescriptionTxtEdit->setEnabled(false);
ui->mDatabaseFileSelectBtn->hide();
ui->mCANBaudrateComboBx->setEnabled(false);
ui->mCANIDComboBx->setEnabled(false);
ui->mDevicesList->setEnabled(true);
ui->mModifyDevParamsBtn->setText("Modifier");
mDeviceChangeModeEnabled = false;
}
else
{
ui->mDeviceDescriptionTxtEdit->setEnabled(true);
ui->mDatabaseFileSelectBtn->show();
ui->mCANBaudrateComboBx->setEnabled(true);
ui->mCANIDComboBx->setEnabled(true);
ui->mDevicesList->setEnabled(false);
ui->mModifyDevParamsBtn->setText("Sauvegarder");
mDeviceChangeModeEnabled = true;
}
}
@@ -3,6 +3,11 @@
#include <QWidget>
class CCANDevice;
class CCANMessage;
class CCANSignal;
namespace Ui {
class CProgramSettingsPage;
}
@@ -15,8 +20,22 @@ public:
explicit CProgramSettingsPage(QWidget *parent = 0);
~CProgramSettingsPage();
int SetDevicesList(QList<CCANDevice *> *DevicesList);
int ClearDatabaseData();
int UpdatePage();
int UpdateMessageInformation();
private:
Ui::CProgramSettingsPage *ui;
QList<CCANDevice *> *mDevicesList;
bool mDeviceChangeModeEnabled;
public slots:
void DeviceSelectionChanged();
void SignalSelectionChanged();
void MessageSelectionChanged();
void ModifyDeviceBtnPressed();
};
#endif // PROGRAMSETTINGSPAGE_H
+298 -21
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>929</width>
<height>529</height>
<width>1475</width>
<height>604</height>
</rect>
</property>
<property name="windowTitle">
@@ -16,9 +16,9 @@
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>350</x>
<y>70</y>
<width>161</width>
<x>370</x>
<y>20</y>
<width>231</width>
<height>21</height>
</rect>
</property>
@@ -28,37 +28,314 @@
</font>
</property>
<property name="text">
<string>Otarcik CAN settings</string>
<string>Paramètres de la station Otarcik</string>
</property>
</widget>
<widget class="QSpinBox" name="spinBox">
<widget class="QListWidget" name="mDevicesList">
<property name="geometry">
<rect>
<x>320</x>
<y>160</y>
<width>43</width>
<height>22</height>
<x>50</x>
<y>120</y>
<width>191</width>
<height>301</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>140</x>
<y>162</y>
<width>171</width>
<height>20</height>
<x>52</x>
<y>100</y>
<width>81</width>
<height>16</height>
</rect>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The PCAN USB module CAN ID that is communicating with the Parker module&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Parker Module CAN device ID:</string>
<string>Dispositifs CAN</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</widget>
<widget class="QGroupBox" name="mDeviceParamsGroupBox">
<property name="geometry">
<rect>
<x>280</x>
<y>100</y>
<width>311</width>
<height>331</height>
</rect>
</property>
<property name="title">
<string>Paramètres</string>
</property>
<widget class="QLabel" name="mCANIDLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Driver CAN ID:</string>
</property>
</widget>
<widget class="QComboBox" name="mCANIDComboBx">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>100</x>
<y>39</y>
<width>131</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="mCANBaudrateLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>CAN Baudrate:</string>
</property>
</widget>
<widget class="QComboBox" name="mCANBaudrateComboBx">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>100</x>
<y>70</y>
<width>131</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="mDeviceDatabaseLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>111</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Fichier database:</string>
</property>
</widget>
<widget class="QLabel" name="mDatabaseFileNameLbl">
<property name="geometry">
<rect>
<x>10</x>
<y>120</y>
<width>301</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Fichier...</string>
</property>
</widget>
<widget class="QPushButton" name="mDatabaseFileSelectBtn">
<property name="geometry">
<rect>
<x>280</x>
<y>120</y>
<width>31</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QPushButton" name="mModifyDevParamsBtn">
<property name="geometry">
<rect>
<x>20</x>
<y>300</y>
<width>80</width>
<height>22</height>
</rect>
</property>
<property name="text">
<string>Modifier</string>
</property>
</widget>
<widget class="QTextEdit" name="mDeviceDescriptionTxtEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>291</width>
<height>101</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>10</x>
<y>160</y>
<width>81</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Description</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="mDatabaseGroupBox">
<property name="geometry">
<rect>
<x>620</x>
<y>100</y>
<width>851</width>
<height>491</height>
</rect>
</property>
<property name="title">
<string>Database</string>
</property>
<widget class="QLabel" name="mDBMessageNameLbl">
<property name="geometry">
<rect>
<x>270</x>
<y>30</y>
<width>381</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Message Name: </string>
</property>
</widget>
<widget class="QLabel" name="mDBMessageIDLbl">
<property name="geometry">
<rect>
<x>270</x>
<y>50</y>
<width>171</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Message ID: </string>
</property>
</widget>
<widget class="QLabel" name="mDBMessageLengthLbl">
<property name="geometry">
<rect>
<x>270</x>
<y>70</y>
<width>191</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Message Length</string>
</property>
</widget>
<widget class="QLabel" name="mDBMessageNbSignalsLbl">
<property name="geometry">
<rect>
<x>270</x>
<y>90</y>
<width>171</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Number of signals: </string>
</property>
</widget>
<widget class="QListWidget" name="mDBMessagesListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>40</y>
<width>251</width>
<height>201</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="mDBMessageNameLbl_2">
<property name="geometry">
<rect>
<x>1</x>
<y>23</y>
<width>171</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>Messages</string>
</property>
</widget>
<widget class="QTableWidget" name="mDBSignalDetailsTable">
<property name="geometry">
<rect>
<x>0</x>
<y>250</y>
<width>851</width>
<height>241</height>
</rect>
</property>
</widget>
</widget>
</widget>
<resources/>