Files
952-15-chicun/HanddleAI/HanddleAIUI/FrontendBackendBridge.cpp
T
2024-02-27 14:55:36 +08:00

136 lines
4.1 KiB
C++

#include <FrontendBackendBridge.h>
fbBridge bridge;
//INIT
backEnd::backEnd(QObject* parent)
{
Init();
}
void backEnd::Init()
{
//
for (auto data : json.LightSources.LightSourceList)
{
QSerialPort* serialPort = new QSerialPort;//光源串口
//serialPort->clear();
serialPort->close();
serialPort->setPortName(data.comPort);
serialPort->open(QIODevice::ReadWrite);
serialPort->setBaudRate(data.baudRate);
serialPort->setDataBits(QSerialPort::Data8);
serialPort->setParity(QSerialPort::NoParity);
serialPort->setStopBits(QSerialPort::OneStop);
serialPort->setFlowControl(QSerialPort::NoFlowControl);
serialPort->write(data.initStr.toUtf8());
serialPort->waitForBytesWritten();
if (serialPort->isOpen() != true)
qDebug() << data.comPort << "open failure!!";
QSerialPorts.append(serialPort);
QSerialPortsName.append(data.name);
}
}
void backEnd::setFins(Base* finsPtr)
{
finstcp_ptr = finsPtr;
}
//WIDGET
void frontEnd::showImg(QString name, cv::Mat mtx, int showindex)
{
try
{
if (!mtx.empty())
{
cv::Mat rgb;
QImage* itemImage = nullptr;
if (mtx.type() == CV_8UC1)
{
mtx.copyTo(rgb);
itemImage = new QImage(QSize(rgb.cols, rgb.rows), QImage::Format_Grayscale8);
QImage qim((const unsigned char*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_Grayscale8);
*itemImage = qim.copy();
}
else if (mtx.type() == CV_16U) // 双通道转单通道显示
{
cv::normalize(mtx, mtx, 0, 255, cv::NORM_MINMAX);
cv::convertScaleAbs(mtx, rgb);
itemImage = new QImage(QSize(rgb.cols, rgb.rows), QImage::Format_Grayscale8);
QImage qim((const unsigned char*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_Grayscale8);
*itemImage = qim.copy();
}
else if (mtx.type() == CV_8UC3)
{
cv::cvtColor(mtx, rgb, cv::COLOR_BGR2RGB);
itemImage = new QImage(QSize(rgb.cols, rgb.rows), QImage::Format_RGB888);
QImage qim((const unsigned char*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
*itemImage = qim.copy();
}
else if (mtx.type() == CV_8UC4)
{
cv::cvtColor(mtx, rgb, cv::COLOR_BGRA2RGBA);
itemImage = new QImage(QSize(rgb.cols, rgb.rows), QImage::Format_ARGB32);
QImage qim((const unsigned char*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_ARGB32);
*itemImage = qim.copy();
}
emit showImgSingal(name, itemImage, showindex);
}
}
catch (QString ev)
{
qCritical() << "[Error] " << " ev:" << ev;
//return false;
}
//return true;
}
//FINS
bool backEnd::sendFinsMsg(QString cmdx)
{
if (!finstcp_ptr->reciveData(vec_mat, cmdx.toUtf8()))
{
qCritical() << "[TCP Error] " << QString::fromUtf8("Fins数据发送失败!") << cmdx;
return false;
}
return true;
}
bool backEnd::sendFinsMsg(const char* cmdx)
{
QString str = cmdx;
if (!finstcp_ptr->reciveData(vec_mat, str.toUtf8()))
{
qCritical() << "[TCP Error] " << QString::fromUtf8("Fins数据发送失败!") << cmdx;
return false;
}
return true;
}
bool backEnd::sendFinsMsg(QByteArray write_byte)
{
if (!finstcp_ptr->reciveData(vec_mat, write_byte))
{
qCritical() << "[TCP Error] " << QString::fromUtf8("Fins数据发送失败!") << write_byte;
return false;
}
return true;
}
bool backEnd::reciveFinsMsg(QByteArray &readByte)
{
if (!finstcp_ptr->sendData(vec_mat, readByte))
{
qCritical() << "[TCP] " << " finstcp_ptr sendData error!";
return false;
}
return true;
}
//
QSerialPort* backEnd::getSerialPort(QString Name)
{
for (int i = 0; i < QSerialPortsName.size();i++)
{
if (QSerialPortsName[i] == Name)
{
return QSerialPorts[i];
}
}
return NULL;
}