136 lines
4.1 KiB
C++
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;
|
|
} |