281 lines
9.8 KiB
C++
281 lines
9.8 KiB
C++
#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;
|
|
}
|
|
}
|