You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

764 lines
24 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma execution_character_set("utf-8")
#include "TmsKey.h"
#include "ui_TmsKey.h"
#include <QListView>
#include <QMessageBox>
#include <QApplication>
#include <QTimer>
// 自适应分辨率
#include <QScreen>
#include <QDesktopWidget>
// 设备管理
#include "device/DeviceManager.h"
// 日志
#include "logger/Logger.h"
#include "logger/LogManager.h"
// 特性 - 取字节序
#include "Utils.h"
// 基础设置和高级设置tab页及设置服务
#include "BaseSetupWidget.h"
#include "AdvanceSetupWidget.h"
#include "SetupService.h"
#include <fstream>
#include "auth/Auth.h"
#include <QTextCursor>
// 系统屏幕分辨率 -- 可用窗口大小,去除了任务栏高度
int gAvailableScreenWidth = 0;
int gAvailableScreenHeight = 0;
// 实际屏幕分辨率
int gScreenWidth = 0;
int gScreenHeight = 0;
// 屏幕个数
int gScreenCount = 0;
// dpi
// 100% - 96
// 125% - 120
// 150% - 144
// 175% - 168
qreal gDotsPerInch = 0;
qreal gDotsPerInchX = 0;
qreal gDotsPerInchY = 0;
double gZoomValue = 0.0;
unsigned char m_currType; // 当前类型
void GetScreenInfo5()
{
QScreen *screen=QGuiApplication::primaryScreen();
QRect mm = screen->availableGeometry();
gAvailableScreenWidth = mm.width();
gAvailableScreenHeight = mm.height();
gDotsPerInch = screen->logicalDotsPerInch();
gDotsPerInchX = screen->logicalDotsPerInchX();
gDotsPerInchY = screen->logicalDotsPerInchY();
}
void GetScreenInfo4()
{
QDesktopWidget* desktopWidget = QApplication::desktop();
//获取设备屏幕大小
QRect screenRect = desktopWidget->screenGeometry();
gScreenWidth = screenRect.width();
gScreenHeight = screenRect.height();
//获取可用桌面大小
//QRect deskRect = desktopWidget->availableGeometry();
//g_nActScreenX = deskRect.width();
//g_nActScreenY = deskRect.height();
//获取系统设置的屏幕个数屏幕拷贝方式该值为1
gScreenCount = desktopWidget->screenCount();
}
// 获取放大倍数
double GetZoomValue()
{
QScreen *screen=QGuiApplication::primaryScreen();
qreal dotsPerInch = screen->logicalDotsPerInch();
double zoonValue = dotsPerInch / 96;
if(zoonValue < 1.1999999999)
{
zoonValue = 1.0;
}
else if(zoonValue < 1.4999999999)
{
zoonValue = 1.2;
}
else if(zoonValue < 1.9999999999)
{
zoonValue = 1.5;
}
else if(zoonValue < 2.4999999999)
{
zoonValue = 2.0;
}
else if(zoonValue < 2.9999999999)
{
zoonValue = 2.5;
}
else if(zoonValue < 3.4999999999)
{
zoonValue = 3.0;
}
else if(zoonValue < 3.9999999999)
{
zoonValue = 3.5;
}
else
{
zoonValue = 4.0;
}
return zoonValue;
}
/*
****************************************
*
* 构造/析构函数
*
*
*****************************************
*/
//
// 构造函数
//
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
// , m_bOpen(false)
, m_bAuthority(false)
// , m_sysStatus(SYS_STATUS_IDLE)
// , m_recordFlag(false)
// , m_recordAllCount(0)
// , m_recordCurrCount(0)
, m_cfgFileName("tmskey.cfg")
{
ui->setupUi(this);
#ifdef USE_AUTH
// 读取配置文件
if(!Auth::GetInstance()->readFile())
{
QMessageBox::warning(this, "错误", "程序授权异常!\nAuthorization Exception!", QMessageBox::Ok, QMessageBox::Ok);
exit(-1);
}
//QMessageBox::warning(this, "Warning", QString::fromStdString(Auth::GetInstance()->toMessage()), QMessageBox::Ok, QMessageBox::Ok);
if(!Auth::GetInstance()->bIsValidate())
{
QMessageBox::warning(this, "错误", "程序授权异常!\nAuthorization Exception!", QMessageBox::Ok, QMessageBox::Ok);
exit(-1);
}
m_bElectric = (Utils::charBit(Auth::GetInstance()->getProductType(), 0) == 1);
m_bCharged = (Utils::charBit(Auth::GetInstance()->getProductType(), 1) == 1);
m_bHydraulic = (Utils::charBit(Auth::GetInstance()->getProductType(), 2) == 1);
m_bPneumatic = (Utils::charBit(Auth::GetInstance()->getProductType(), 3) == 1);
#else
m_bElectric = true;
m_bCharged = true;
m_bHydraulic = true;
m_bPneumatic = true;
#endif
// 屏幕分辨率
GetScreenInfo5();
GetScreenInfo4();
gZoomValue = GetZoomValue();
// QMessageBox::warning(this, "Screen Size",
// tr("available : 5: %1 * %2\nrealize : 4: %3 * %4 : %5\ndpi : %6 * %7 : %8\nZoom : %9")
// .arg(gAvailableScreenWidth).arg(gAvailableScreenHeight)
// .arg(gScreenWidth).arg(gScreenHeight).arg(gScreenCount)
// .arg(gDotsPerInchX).arg(gDotsPerInchY).arg(gDotsPerInch)
// .arg(gZoomValue));
// 设置系统标题
setWindowTitle(tr("TMS-KEY V1.1"));
// 设置基础字体
this->setStyleSheet(gstrStyleSheetStatic.arg(gnFontSizeStatic * gZoomValue));
// 初始化串口区域
initSerialPortArea();
// 初始化业务区域
initServiceArea();
// 初始化日志区域
initLogArea();
// 显示版本信息
logInfo(tr("Welcome to TMS-KEY %1.%2").arg(MAIN_VERSION).arg(SUB_VERSION));
// 显示字节序
#ifdef _DEBUG
logDebug(tr("系统字节序: %1").arg(Utils::byteOrder() == LITTLE_ENDIA ? "LITTLE" : "BIG"));
#endif
}
//
// 析构函数
//
Widget::~Widget()
{
ui->tabWidgetServiceSetup->removeTab(1);
ui->tabWidgetServiceSetup->removeTab(0);
if(m_baseSetupWidget != nullptr)
{
delete m_baseSetupWidget;
m_baseSetupWidget = nullptr;
}
if(m_advanceSetupWidget != nullptr)
{
delete m_advanceSetupWidget;
m_advanceSetupWidget = nullptr;
}
delete ui;
}
void Widget::slot_logAdded(QString log)
{
//QMessageBox::warning(this, "Warning!", log, QMessageBox::Ok, QMessageBox::Ok);
ui->textEdit->append(log);
// 自动滚动
// QTextCursor cursor = ui->textEdit->textCursor();
// cursor.movePosition(QTextCursor::End);
// ui->textEdit->setTextCursor(cursor);
LOG_INFO("%s", log.toStdString().c_str());
}
/*
****************************************
*
* 界面设置
*
*
*****************************************
*/
//
// 初始化串口区域
//
void Widget::initSerialPortArea()
{
// 串口区域宽度初始化
ui->tabWidgetSerialPortSetup->setFixedWidth(256 * gZoomValue);
// 控件大小
//ui->widget_4->layout()->setSpacing(12 * gZoomValue);
ui->tabWidgetSerialPortSetup->setStyleSheet(tr("QTabBar:tab{height:%1;}").arg(gnDefaultTabBarHeight * gZoomValue));
int nLabelHeight = gnDefaultLabelHeight * gZoomValue;
ui->labelPortName->setFixedHeight(nLabelHeight);
ui->labelBaudRate->setFixedHeight(nLabelHeight);
ui->labelDataBits->setFixedHeight(nLabelHeight);
ui->labelParity->setFixedHeight(nLabelHeight);
ui->labelStopBits->setFixedHeight(nLabelHeight);
int nComboBoxHeight = gnDefaultComboBoxHeight * gZoomValue;
ui->comboBoxPortName->setFixedHeight(nComboBoxHeight);
ui->comboBoxBaudRate->setFixedHeight(nComboBoxHeight);
ui->comboBoxDataBits->setFixedHeight(nComboBoxHeight);
ui->comboBoxParity->setFixedHeight(nComboBoxHeight);
ui->comboBoxStopBits->setFixedHeight(nComboBoxHeight);
int nPushButtonHeight = gnDefaultPushButtonHeight * gZoomValue;
ui->pushButtonSearchSerial->setFixedHeight(nPushButtonHeight);
ui->pushButtonOpenSerial->setFixedHeight(nPushButtonHeight);
// 控件字体属性
QString strStyleSheet = gstrStyleSheet.arg(gnFontSize * gZoomValue);
ui->comboBoxPortName->setStyleSheet(strStyleSheet);// background-color: green; color: rgb(241, 70, 62);红色
ui->comboBoxBaudRate->setStyleSheet(strStyleSheet);
ui->comboBoxDataBits->setStyleSheet(strStyleSheet);
ui->comboBoxStopBits->setStyleSheet(strStyleSheet);
ui->comboBoxParity->setStyleSheet(strStyleSheet);
// 初始化串口设置信息
initComboBoxBaudRate();
initComboBoxDataBits();
initComboBoxStopBits();
initComboBoxParity();
updateComboBoxPortName();
connect(ui->comboBoxPortName, SIGNAL(currentIndexChanged(QString)), this, SLOT(slot_comboBoxPortName_currentIndexChanged(QString)));
connect(ui->comboBoxBaudRate, SIGNAL(currentIndexChanged(QString)), this, SLOT(slot_comboBoxBaudRate_currentIndexChanged(QString)));
connect(ui->comboBoxDataBits, SIGNAL(currentIndexChanged(QString)), this, SLOT(slot_comboBoxDataBits_currentIndexChanged(QString)));
connect(ui->comboBoxStopBits, SIGNAL(currentIndexChanged(QString)), this, SLOT(slot_comboBoxStopBits_currentIndexChanged(QString)));
connect(ui->comboBoxParity, SIGNAL(currentIndexChanged(QString)), this, SLOT(slot_comboBoxParity_currentIndexChanged(QString)));
// portName的设置在updateComboBoxPortName中
DeviceManager::GetInstance()->setCurrBaudRate(ui->comboBoxBaudRate->currentText().toStdString());
DeviceManager::GetInstance()->setCurrDataBits(ui->comboBoxDataBits->currentText().toStdString());
DeviceManager::GetInstance()->setCurrStopBits(ui->comboBoxStopBits->currentText().toStdString());
DeviceManager::GetInstance()->setCurrParity(ui->comboBoxParity->currentText().toStdString());
// 设置搜索串口按钮和打开串口按钮
ui->pushButtonOpenSerial->setText(gstrOpenSerialPort);
ui->pushButtonSearchSerial->setText(gstrSearchSerialPort);
connect(ui->pushButtonSearchSerial, SIGNAL(clicked()), this, SLOT(slot_SearchSerial()));
connect(ui->pushButtonOpenSerial, SIGNAL(clicked()), this, SLOT(slot_OpenSerial()));
}
//
// 初始化业务区域,业务区域包括基础设置和高级设置
//
void Widget::initServiceArea()
{
// 控件大小
//ui->widget_5->layout()->setSpacing(12 * gZoomValue);
ui->tabWidgetServiceSetup->setStyleSheet(tr("QTabBar:tab{height:%1;}").arg(gnDefaultTabBarHeight * gZoomValue));
// 右上角扳手类型选择
m_typeComboBox.setObjectName(tr("typeComboBox"));
if(m_bElectric) m_typeComboBox.addItem("电动扳手", 1);
if(m_bCharged) m_typeComboBox.addItem("充电扳手", 2);
if(m_bHydraulic) m_typeComboBox.addItem("液压扳手", 4);
if(m_bPneumatic) m_typeComboBox.addItem("气动扳手", 8);
QString styleSheet;
styleSheet.append(tr("QComboBox { width:%1px; height:%2px; }").arg(60 * gZoomValue).arg(24 * gZoomValue));
styleSheet.append(tr("QComboBox QAbstractItemView::item { min-height:%1px; } ").arg(24 * gZoomValue));
m_typeComboBox.setStyleSheet(styleSheet);
m_typeComboBox.setView(new QListView());
ui->tabWidgetServiceSetup->setCornerWidget(&m_typeComboBox, Qt::TopRightCorner);
// 获取当前扳手类型
m_typeComboBox.setCurrentIndex(0);
m_currType = m_typeComboBox.itemData(m_typeComboBox.currentIndex()).toChar().toLatin1(); // 获取当前扳手类型
connect(&m_typeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_tabComboBox_currentIndexChanged(int)));
// 加入基础设置和高级设置tab页
m_baseSetupWidget = new BaseSetupWidget();
ui->tabWidgetServiceSetup->insertTab(0, m_baseSetupWidget, "基础设置(base setup)");
m_advanceSetupWidget = new AdvanceSetupWidget();
ui->tabWidgetServiceSetup->insertTab(1, m_advanceSetupWidget, "高级设置(advance setup)");
m_advanceSetupWidget->setType(getCurrentType());
// 高级功能切换,授权定时器
initAuthorityTimer();
// 选定当前为基数功能设置
ui->tabWidgetServiceSetup->setCurrentIndex(0);
// 功能tab切换事件
connect(ui->tabWidgetServiceSetup, SIGNAL(currentChanged(int)), this, SLOT(slot_changeTab(int)));
// tab bar点击事件
connect(ui->tabWidgetServiceSetup, SIGNAL(tabBarClicked(int)), this, SLOT(slot_clickTabBar(int)));
}
void Widget::slot_tabComboBox_currentIndexChanged(int index)
{
//m_currType = m_typeComboBox.itemData(m_typeComboBox.currentIndex()).toChar().toLatin1();
m_currType = getCurrentType();
// 切换tab页
m_advanceSetupWidget->setType(m_currType);
}
unsigned char Widget::getCurrentType()
{
return m_typeComboBox.itemData(m_typeComboBox.currentIndex()).toChar().toLatin1();
}
void Widget::initLogArea()
{
ui->pushButtonClearTextEdit->setFixedWidth(80 * gZoomValue);
ui->pushButtonClearTextEdit->setFixedHeight(gnDefaultPushButtonHeight * gZoomValue);
ui->textEdit->setReadOnly(true);
ui->widgetClear->setStyleSheet("QWidget#widgetClear{background:#92D050;}");
// 清空按钮
connect(ui->pushButtonClearTextEdit, SIGNAL(clicked()), this, SLOT(slot_clearTextEdit()));
connect(LogManager::GetInstance(), &LogManager::logAdded, this, &Widget::slot_logAdded);
}
/*
****************************************
*
* 授权定时器模块
*
* 暂时未使用,考虑点击高级功能后,超过一定时间,使授权失效
*
*****************************************
*/
//
// 初始化授权定时器
//
void Widget::initAuthorityTimer(int msec)
{
QDEBUGMSG("initAuthorityTimer");
m_authorityTimer.stop();
m_authorityTimer.setInterval(msec);
connect(&m_authorityTimer, SIGNAL(timeout()), this, SLOT(slot_autorityTimer()));
}
//
// 授权定时器
//
void Widget::startAuthorityTimer()
{
QDEBUGMSG("startAuthorityTimer");
m_authorityTimer.start();
}
//
// 停止授权定时器
//
void Widget::stopAuthorityTimer()
{
QDEBUGMSG("stopAuthorityTimer");
m_authorityTimer.stop();
}
//
// 授权定时器的功能:
//
void Widget::slot_autorityTimer()
{
QDEBUGMSG("slot_autorityTimer");
//ui->tabWidgetServiceSetup->setCurrentIndex(0);
}
/*
****************************************
*
* 串口设置模块
*
*
*****************************************
*/
//
// 初始化串口设置信息
//
void Widget::updateComboBoxPortName()
{
//m_serialPortMonitor->StopMonitor();
ui->pushButtonOpenSerial->setDisabled(true);
ui->pushButtonSearchSerial->setDisabled(true);
initComboBoxPortName();
ui->pushButtonSearchSerial->setEnabled(true);
if(ui->comboBoxPortName->count() > 0)
{
ui->pushButtonOpenSerial->setEnabled(true);
ui->comboBoxPortName->setCurrentIndex(0);
DeviceManager::GetInstance()->setCurrDeviceName(ui->comboBoxPortName->currentText().toStdString());
}
else
{
ui->pushButtonOpenSerial->setDisabled(true);
}
//m_serialPortMonitor->StartMonitor();
}
//
// 初始化串口名
//
void Widget::initComboBoxPortName()
{
const auto infos = QSerialPortInfo::availablePorts();
ui->comboBoxPortName->clear();
for(const QSerialPortInfo &info : infos)
{
//QSerialPort serial;
//serial.setPort(info);
//if(serial.open(QIODevice::ReadWrite))
{
ui->comboBoxPortName->addItem(info.portName());
//serial.close();
}
}
}
void Widget::slot_comboBoxPortName_currentIndexChanged(QString text)
{
DeviceManager::GetInstance()->setCurrDeviceName(text.toStdString());
//QMessageBox::warning(this, "Warning!", QString::fromStdString(DeviceManager::GetInstance()->getCurrDeviceName()), QMessageBox::Ok, QMessageBox::Ok);
}
void Widget::slot_comboBoxBaudRate_currentIndexChanged(QString text)
{
DeviceManager::GetInstance()->setCurrBaudRate(text.toStdString());
//QMessageBox::warning(this, "Warning!", QString::fromStdString(DeviceManager::GetInstance()->getCurrBaudRate()), QMessageBox::Ok, QMessageBox::Ok);
}
void Widget::slot_comboBoxDataBits_currentIndexChanged(QString text)
{
DeviceManager::GetInstance()->setCurrDataBits(text.toStdString());
//QMessageBox::warning(this, "Warning!", QString::fromStdString(DeviceManager::GetInstance()->getCurrDataBits()), QMessageBox::Ok, QMessageBox::Ok);
}
void Widget::slot_comboBoxStopBits_currentIndexChanged(QString text)
{
DeviceManager::GetInstance()->setCurrStopBits(text.toStdString());
//QMessageBox::warning(this, "Warning!", QString::fromStdString(DeviceManager::GetInstance()->getCurrStopBits()), QMessageBox::Ok, QMessageBox::Ok);
}
void Widget::slot_comboBoxParity_currentIndexChanged(QString text)
{
DeviceManager::GetInstance()->setCurrParity(text.toStdString());
//QMessageBox::warning(this, "Warning!", QString::fromStdString(DeviceManager::GetInstance()->getCurrParity()), QMessageBox::Ok, QMessageBox::Ok);
}
//
// 初始化波特率
//
void Widget::initComboBoxBaudRate()
{
ui->comboBoxBaudRate->addItem("115200");
ui->comboBoxBaudRate->addItem("57600");
ui->comboBoxBaudRate->addItem("38400");
ui->comboBoxBaudRate->addItem("19200");
ui->comboBoxBaudRate->addItem("9600");
ui->comboBoxBaudRate->addItem("4800");
ui->comboBoxBaudRate->addItem("2400");
ui->comboBoxBaudRate->addItem("1200");
//ui->comboBoxBaudRate->setCurrentIndex(0);
}
//
// 初始化数据位
//
void Widget::initComboBoxDataBits()
{
ui->comboBoxDataBits->addItem("8");
ui->comboBoxDataBits->addItem("7");
ui->comboBoxDataBits->addItem("6");
ui->comboBoxDataBits->addItem("5");
//ui->comboBoxDataBits->setCurrentIndex(0);
}
//
// 初始化停止位
//
void Widget::initComboBoxStopBits()
{
ui->comboBoxStopBits->addItem("1");
ui->comboBoxStopBits->addItem("1.5");
ui->comboBoxStopBits->addItem("2");
//ui->comboBoxStopBits->setCurrentIndex(0);
}
//
// 初始化校验位
//
void Widget::initComboBoxParity()
{
ui->comboBoxParity->addItem("None");
ui->comboBoxParity->addItem("Odd");
ui->comboBoxParity->addItem("Even");
//ui->comboBoxParity->setCurrentIndex(0);
}
/*
****************************************
*
* 信号槽 -- 串口操作
*
*
*****************************************
*/
//
// 打开或关闭串口按钮点击事件
//
void Widget::slot_OpenSerial()
{
if(ui->pushButtonOpenSerial->text() == gstrOpenSerialPort)
{
ui->pushButtonOpenSerial->setDisabled(true);
Device *device = new Device(ui->comboBoxPortName->currentText(),
ui->comboBoxBaudRate->currentText(),
ui->comboBoxDataBits->currentText(),
ui->comboBoxStopBits->currentText(),
ui->comboBoxParity->currentText());
// 在SetupService中处理接收数据
connect(device, SIGNAL(recv_data(QString, unsigned char, QByteArray)), (QObject *)SetupService::GetInstance(), SLOT(slot_recvData(QString, unsigned char, QByteArray)));
// SetupService中将数据分发至BaseSetupService和AdvanceSetupService
connect((QObject *)SetupService::GetInstance(), SIGNAL(recv_base_setup_rsp(QString, unsigned char, QByteArray)),
m_baseSetupWidget, SLOT(slot_recvData(QString, unsigned char, QByteArray)));
connect(m_baseSetupWidget, SIGNAL(get_record_finish(int)),
(QObject *)SetupService::GetInstance(), SLOT(slot_getRecordFinish(int)));
connect((QObject *)SetupService::GetInstance(), SIGNAL(recv_advance_setup_rsp(QString, unsigned char, QByteArray)),
m_advanceSetupWidget, SLOT(slot_recvData(QString, unsigned char, QByteArray)));
// 设备接收消息超时事件
connect(device, SIGNAL(recv_timeout(QString)), (QObject *)SetupService::GetInstance(), SLOT(slot_recvTimeout(QString)));
if(device->Open())
{
DeviceManager::GetInstance()->AddDevice(ui->comboBoxPortName->currentText(), device);
device->startParseThread();
// 设置控件状态
ui->pushButtonOpenSerial->setText(gstrCloseSerialPort);
ui->pushButtonOpenSerial->setEnabled(true);
ui->comboBoxPortName->setDisabled(true);
ui->comboBoxBaudRate->setDisabled(true);
ui->comboBoxDataBits->setDisabled(true);
ui->comboBoxStopBits->setDisabled(true);
ui->comboBoxParity->setDisabled(true);
ui->pushButtonSearchSerial->setDisabled(true);
logInfo(tr("打开串口成功"));
// // 串口打开成功,立即请求设备出厂编号、用户设备名称、 用户设备编号、操作人
// SendData(FRAME_CMD_GET_SERIAL_NUMBER);
// waitForIdle();
// SendData(FRAME_CMD_GET_DEVICE_NAME);
// waitForIdle();
// SendData(FRAME_CMD_GET_DEVICE_NUMBER);
// waitForIdle();
// SendData(FRAME_CMD_GET_OPERATOR);
}
else
{
ui->pushButtonOpenSerial->setEnabled(true);
logInfo(tr("打开串口失败"));
}
}
else
{
ui->pushButtonOpenSerial->setDisabled(true);
Device *device = DeviceManager::GetInstance()->GetDevice(ui->comboBoxPortName->currentText());
if(device == nullptr)
{
return;
}
device->stopParseThread();
// 在SetupService中处理接收数据
disconnect(device, SIGNAL(recv_data(QString, unsigned char, QByteArray)), (QObject *)SetupService::GetInstance(), SLOT(slot_recvData(QString, unsigned char, QByteArray)));
// SetupService中将数据分发至BaseSetupService和AdvanceSetupService
disconnect((QObject *)SetupService::GetInstance(), SIGNAL(recv_base_setup_rsp(QString, unsigned char, QByteArray)),
m_baseSetupWidget, SLOT(slot_recvData(QString, unsigned char, QByteArray)));
disconnect((QObject *)SetupService::GetInstance(), SIGNAL(recv_advance_setup_rsp(QString, unsigned char, QByteArray)),
m_advanceSetupWidget, SLOT(slot_recvData(QString, unsigned char, QByteArray)));
// 设备接收消息超时事件
disconnect(device, SIGNAL(recv_timeout(QString)), (QObject *)SetupService::GetInstance(), SLOT(slot_recvTimeout(QString)));
device->Close();
DeviceManager::GetInstance()->RemoveDevice(ui->comboBoxPortName->currentText());
// 设置控件状态
ui->comboBoxPortName->setEnabled(true);
ui->comboBoxBaudRate->setEnabled(true);
ui->comboBoxDataBits->setEnabled(true);
ui->comboBoxStopBits->setEnabled(true);
ui->comboBoxParity->setEnabled(true);
ui->pushButtonOpenSerial->setText(gstrOpenSerialPort);
ui->pushButtonOpenSerial->setEnabled(true);
ui->pushButtonSearchSerial->setEnabled(true);
logInfo(tr("关闭串口"));
}
}
//
// 搜索串口按钮点击事件
//
void Widget::slot_SearchSerial()
{
updateComboBoxPortName();
}
/*
****************************************
*
* 信号槽 -- 切换高级Tab
*
*
*****************************************
*/
//
// tab切换
//
void Widget::slot_changeTab(int index)
{
if(index == 1)
{
if(!m_bAuthority)
{
ui->tabWidgetServiceSetup->setCurrentIndex(0);
}
}
}
//
// 点击基础设置/高级设置
//
void Widget::slot_clickTabBar(int index)
{
// 如果当前为基础设置,点击的是高级设置
// 弹出授权验证框,输入密码正确则通过验证
if(ui->tabWidgetServiceSetup->currentIndex() == 0 && index == 1 && m_bAuthority == false)
{
//m_authorityDialog.resize(180 * gZoomValue, 112 * gZoomValue);
if(m_authorityDialog.exec() == QDialog::Accepted)
{
m_bAuthority = m_authorityDialog.isAuthorized();
}
}
}
/*
****************************************
*
* 信号槽 -- 高级操作
*
*
*****************************************
*/
/* ****************************************
*
* 版本信息
*
*
* **************************************** */
QString Widget::version()
{
//ui->textEdit->append(tr("makeVersion:%1:%2->%3").arg(MAIN_VERSION).arg(SUB_VERSION).arg(v));
return tr("%1").arg(VERSION);
}
/* ****************************************
*
* 日志区域
*
*
* **************************************** */
// 清空按钮
void Widget::slot_clearTextEdit()
{
ui->textEdit->clear();
}
void Widget::showEvent(QShowEvent *event)
{
//QMessageBox::warning(this, "Warning!", "showEvent", QMessageBox::Ok, QMessageBox::Ok);
QWidget::showEvent(event);
}
void Widget::closeEvent(QCloseEvent *event)
{
//QMessageBox::warning(this, "Warning!", "closeEvent", QMessageBox::Ok, QMessageBox::Ok);
QWidget::closeEvent(event);
}