cotton_double/widget.cpp

126 lines
2.6 KiB
C++

#include "widget.h"
#include "ui_widget.h"
#include <iostream>
#include <QTcpSocket>
#include <QPushButton>
#include <QTimer>
#include <QEventLoop>
#include <QElapsedTimer>
// #include <windows.h>
#include <QApplication>
#include <QLabel>
#include <QImage>
#include <QPixmap>
#include <QDateTime>
#include <img_utils.h>
using namespace std;
// 硬编码参数值
int file_delay = 1270; // 延迟时间(毫秒)
int file_encoder = 12000; // 编码器值++
int file_valve = 200; // 阀门通道
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->camera_0_img->setScaledContents(true);
iniColor();
iniLowMac();
iniCamera();
// 启动显示定时器,每秒检查一次
QTimer* timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &Widget::refreshImage);
timer->start(50); // 每50毫秒秒刷新一次界面
}
Widget::~Widget()
{
// DestoryCamera();
}
void Widget::refreshImage()
{
refreshSingleImage(0);
refreshSingleImage(1);
}
void Widget::refreshSingleImage(int camera_id)
{
// 更新当前的图片0
MIL_ID current_id = 0;
if (camera_id == 0)
{
{
QMutexLocker locker(&gDispPicMutex0);
current_id = gDispCurrentPicId0;
}
if (current_id == 0)
return;
// 获取 QPixmap 并设置到 QLabel
QPixmap pixmap0 = ImageUtils::mat2QPixmap(ImageUtils::mil2Mat(current_id));
if (!pixmap0.isNull())
{
ui->camera_0_img->setPixmap(pixmap0);
}
}
// 更新当前的图片1
else if (camera_id == 1)
{
{
QMutexLocker locker(&gDispPicMutex1);
current_id = gDispCurrentPicId1;
}
if (current_id == 0)
return;
// 获取 QPixmap 并设置到 QLabel
QPixmap pixmap1 = ImageUtils::mat2QPixmap(ImageUtils::mil2Mat(current_id));
if (!pixmap1.isNull())
{
ui->camera_1_img->setPixmap(pixmap1);
}
}
else
{
qWarning() << "The given Camera ID is wrong!";
}
}
void Widget::on_pushButton_clicked()
{
Start_camera();
}
void Widget::on_pushButton_2_clicked()
{
SaveImg_Flag = 1;
}
void Widget::on_btn_goto_sort_clicked()
{
// 回复显示的图片
{
QMutexLocker locker(&gDispPicMutex0);
gDispCurrentPicId0 = 0;
}
ui->camera_0_img->clear();
{
QMutexLocker locker(&gDispPicMutex1);
gDispCurrentPicId1 = 0;
}
ui->camera_1_img->clear();
DestoryCamera();
DestoryLowMac();
}