#include "canusb.h" #include "ui_canusb.h" #include #include #include #include #include "ui_send_cmd.h" #include "ProjectSettings.h" CanUsb *target; CB_FLAGS cb_flags; CanUsb::CanUsb(QWidget *parent) : QWidget(parent) , ui(new Ui::CanUsb) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); init(); } CanUsb::~CanUsb() { delete ui; } void CanUsb::init() { target=this; Refresh(); ui->dataBitsBox->setEditText("1CE0E1"); } unsigned CanUsb::div_up(unsigned x, unsigned y) { return (x - 1) / y + 1; } void CanUsb::Refresh() { ui->serialPortInfoListBox->setDisabled(TRUE); int count = SlCan_GetDeviceCount(); QString currPort = ui->serialPortInfoListBox->currentText(); ui->serialPortInfoListBox->clear(); for (int i = 0; i < count; ++i) { HSLCAN device = SlCan_GetDevice(i); char* buff = new char[30]; SlCan_DeviceGetProperty(device, 0x0000000D, buff, 30); QString str(buff); ui->serialPortInfoListBox->addItem(str); delete[] buff; } ui->serialPortInfoListBox->setCurrentText(currPort); ui->serialPortInfoListBox->setDisabled(FALSE); } static QString DeviceGetPropety(HSLCAN hDevice, DWORD dwIndex) { char pBuf[256]; SlCan_DeviceGetProperty(hDevice, dwIndex, pBuf, 256); return QString(pBuf); } void CanUsb::on_serialPortInfoListBox_currentIndexChanged(int index) { device = SlCan_GetDevice(ui->serialPortInfoListBox->currentIndex()); ui->descriptionLabel->setText(tr("Description: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_DEVICEDESC))); ui->descriptionLabel->setToolTip(QString("Description: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_DEVICEDESC))); ui->manufacturerLabel->setText(tr("Manufacturer: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_MFG))); ui->manufacturerLabel->setToolTip((QString("Manufacturer: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_MFG)))); ui->serialNumberLabel->setText(tr("Serial number: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_SERIAL))); ui->serialNumberLabel->setToolTip(QString("Serial number: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_SERIAL))); ui->locationLabel->setText(tr("Location: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_PORTNAME))); ui->locationLabel->setToolTip(QString("Location: %1").arg(DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_PORTNAME))); QString VBuf = DeviceGetPropety(device, SLCAN_PROPERTY_INDEX_INSTANCEID); QString VID; QString PID; bool FirstFlag = FALSE; bool SecondFlag = FALSE; for(int i = 0; i < VBuf.size(); i++) { if(VBuf[i]=='_') { FirstFlag=TRUE; i++; } if(FirstFlag) { if(VBuf[i]=='&') { FirstFlag=FALSE; SecondFlag=TRUE; } else if(SecondFlag!=TRUE) { VID+=VBuf[i]; } else { if(VBuf[i]==0x5C) { break; } else { PID+=VBuf[i]; } } } } ui->vidLabel->setText(tr("Vendor Identifier: %1").arg(VID.toLower())); ui->vidLabel->setToolTip(QString("Vendor Identifier: %1").arg(VID.toLower())); ui->pidLabel->setText(tr("Product Identifier: %1").arg(PID.toLower())); ui->pidLabel->setToolTip(QString("Product Identifier: %1").arg(PID.toLower())); } int CanUsb::GetID() { return ui->dataBitsBox->currentText().toInt(nullptr, 16); } int CanUsb::GetBR() { return ui->baudRateBox->currentIndex(); } HSLCAN CanUsb::G_Device() { return device; } int CanUsb::GetMode() { return ui->modeBox->currentIndex()+1; } void CanUsb::AfterConnection() { ui->parametersBox->setEnabled(FALSE); ui->selectBox->setEnabled(FALSE); } void CanUsb::AfterDisconnection() { ui->parametersBox->setEnabled(TRUE); ui->selectBox->setEnabled(TRUE); } int CanUsb::GetCount() { return ui->serialPortInfoListBox->count(); }