#include 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; }