#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowIcon(QIcon(":"));
// 串口状态改变事件
connect(&comm, SIGNAL(onPortStateChange(bool)), this, SLOT(onPortStateChange(bool)));
// 接收到 CAN 消息
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), this, SLOT(onCanMsgRecv(CanMsg&)));
// qDebug() << "JTTest";
// 温区监控面板
tempView = new TempView();
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), tempView, SLOT(onCanMsgRecv(CanMsg&)));
}
MainWindow::~MainWindow()
{
delete ui;
}
// 打开串口
void MainWindow::on_pushButton_OpenSerialPort_clicked()
{
QString port = ui->comboBox_SerialPort->currentText().split(':').at(0);
// 允许选择串口号说明没有打开串口
if(ui->comboBox_SerialPort->isEnabled()) {
comm.open(port);
} else {
comm.close();
}
}
// 串口状态变化
void MainWindow::onPortStateChange(bool isOpen)
{
if(isOpen) {
qDebug() << "串口已打开";
ui->comboBox_SerialPort->setEnabled(false);
ui->pushButton_OpenSerialPort->setText("关闭");
} else {
qDebug() << "串口已关闭";
ui->pushButton_OpenSerialPort->setText("打开");
ui->comboBox_SerialPort->setEnabled(true);
}
}
// 接收到 CAN 消息
void MainWindow::onCanMsgRecv(CanMsg &canMsg)
{
// 接收到温度数据
if(canMsg.msgType == MSG_TEMP_MEASURE) {
// int tempMeasureId = canMsg.addr;
// int tempMeasureCh = canMsg.index;
// float value = canMsg.getFloat();
// 写日志
// tempLog.writeLog(tempMeasureId, tempMeasureCh, value);
}
// 接收到温度错误信息
else if(canMsg.msgType == MSG_TEMP_MEASURE_ERROR) {
// int tempMeasureId = canMsg.addr;
// int tempMeasureCh = canMsg.index;
// 温度错误则写入 -999
// tempLog.writeLog(tempMeasureId, tempMeasureCh, -999);
}
}
// 温控板卡
void MainWindow::on_pushButton_TempCtrlBoard_clicked()
{
TempCtrlBoard* obj = new TempCtrlBoard();
// 发送消息接口
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
// 添加到面板列表
viewListMutex.lock();
QVariant var;
var.setValue(obj);
viewList.append(var);
viewListMutex.unlock();
// 显示窗口
obj->show();
}
// 数字量输入板卡
void MainWindow::on_pushButton_DigitalInputBoard_clicked()
{
DigitalInputBoard* obj = new DigitalInputBoard();
// 发送消息接口
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
// 添加到面板列表
viewListMutex.lock();
QVariant var;
var.setValue(obj);
viewList.append(var);
viewListMutex.unlock();
obj->show();
}
// 继电器控制板卡
void MainWindow::on_pushButton_RelayCtrlBoard_clicked()
{
RelayCtrlBoard* obj = new RelayCtrlBoard();
// 发送消息接口
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
obj->show();
}
// CAN协议运控电机控制
void MainWindow::on_pushButton_HDChianSpeedCtrl_clicked()
{
hd_chian_ctrl* obj = new hd_chian_ctrl();
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
obj->show();
}
// CAN协议直流风机控制
void MainWindow::on_pushButton_HDFanSpeedCtrl_clicked()
{
hd_fan_ctrl* obj = new hd_fan_ctrl();
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
obj->show();
}
void MainWindow::on_pushButton_CommDetect_clicked()
{
CommDetect* obj = new CommDetect();
//can消息收发信号绑定
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
obj->show();
}
void MainWindow::on_actionTemp_Zone_Watching_triggered()
{
tempView->show();
}
void MainWindow::on_actionDelete_Temp_Record_Database_triggered()
{
QMessageBox::StandardButton result =
QMessageBox::question(NULL, "警告", "是否删除数据记录?", QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if(result == QMessageBox::Yes) {
// tempLog.deleteLog();
qDebug() << "数据记录已删除";
}
}
void MainWindow::on_pushButton_RS485Board_clicked()
{
RS485Board* obj = new RS485Board();
// 发送消息接口
connect(obj, SIGNAL(canMsgSend(CanMsg&)), &comm, SLOT(canMsgSend(CanMsg&)));
// 接收消息接口
connect(&comm, SIGNAL(onCanMsgRecv(CanMsg&)), obj, SLOT(onCanMsgRecv(CanMsg&)));
obj->show();
}
如何添加呢?