You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/src/RasterSDG20/rastersdg20.cpp

175 lines
4.5 KiB
C++

#include "rastersdg20.h"
#include "muban.h"
#include "CMySerialPort.h"
#include "Raster.h"
#include "QIcon"
#pragma execution_character_set("utf-8")
RASTERSDG20_EXPORT IRasterSDG20* RasterSDG20Create(const QString filepath){
return new RasterSDG20(filepath);
}
RASTERSDG20_EXPORT void RasterSDG20Delete(IRasterSDG20* p){
if (p){
delete p;
}
p = NULL;
}
RasterSDG20::RasterSDG20(const QString filepath)
{
m_SerialPort = new CMySerialPort();
m_pmuBan = new muban();
// Qt::WindowFlags flags = Qt::Dialog;
// m_pmuBan->setWindowFlags(flags);
m_pmuBan->setWindowFlags(Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint | Qt::WindowCloseButtonHint);
m_pRaster = new CRaster(filepath);
connect(m_SerialPort, SIGNAL(sendShowData(QByteArray)), this, SLOT(onRecvData(QByteArray)));
connect(this, SIGNAL(sgSendData(QByteArray)), m_SerialPort, SLOT(onSendData(QByteArray)));
connect(m_pmuBan, SIGNAL(SignalByteData2Parent(QByteArray)), this, SIGNAL(sgSendData(QByteArray)));
connect(m_SerialPort, SIGNAL(sendShowData(QByteArray)), m_pmuBan, SLOT(SlotRecvDataByParent(QByteArray)));
connect(m_pmuBan, SIGNAL(sgThress(int)), this, SLOT(onRecvThress(int)));
connect(m_pmuBan, SIGNAL(sgSaveData(int)), this, SLOT(onSaveRaster(int)));
connect(this, SIGNAL(sgShowComState(QString, int)), m_pmuBan, SLOT(onShowComState(QString, int)));
connect(m_pmuBan, SIGNAL(sgCtrolDevice(int)), this, SLOT(onCtrolDevice(int)));
//connect(this, SIGNAL(sgShowThress(QString)), m_pmuBan, SLOT(onShowThrenss(QString)));
m_pmuBan->setWindowTitle(tr("光栅标定和设置"));
m_pmuBan->setWindowIcon(QIcon(":/image/leaper"));
RasterCom* m_pRasterCom = m_pRaster->getRasterCom();
if (m_pRasterCom->m_UseRaster){
onCtrolDevice(0);
}
else{
QString str = tr("未打开任何串口设备!!!");// .arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute);
emit(sgShowComState(str, 3));
}
}
RasterSDG20::~RasterSDG20()
{
if (m_pmuBan){
delete m_pmuBan;
m_pmuBan = NULL;
}
if (m_SerialPort){
delete m_SerialPort;
m_SerialPort = NULL;
}
if (m_pRaster){
delete m_pRaster;
m_pRaster = NULL;
}
}
Q_SLOT void RasterSDG20::onRecvData(QByteArray m_RecvData)
{
int a = 0;
}
Q_SLOT void RasterSDG20::onRecvThress(int value)
{
if (m_pRaster){
m_pRaster->addThicknessValue(value);
}
}
void RasterSDG20::onStartSampling()
{
m_pmuBan->onStartSampling();
}
void RasterSDG20::onShowWidget(QWidget* parent)
{
m_pmuBan->setParent(parent);
m_pmuBan->SetData2UI(m_pRaster->getRasterSt());
m_pmuBan->SetData2UI(m_pRaster->getRasterCom());
m_pmuBan->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
m_pmuBan->setWindowIcon(QIcon(":/image/leaper"));
m_pmuBan->setAttribute(Qt::WA_ShowModal, true);
m_pmuBan->setWindowModality(Qt::ApplicationModal);
m_pmuBan->show();
}
void RasterSDG20::addThicknessValue(double dValue)
{
if (m_pRaster){
m_pRaster->addThicknessValue(dValue);
}
}
QString RasterSDG20::getThicknessValueStr() const{
return m_pRaster->getThicknessListStr();
}
double RasterSDG20::getThicknessValue() const
{
if (m_pRaster){
return m_pRaster->getThicknessValue();
}
else
return 0;
}
Q_SLOT void RasterSDG20::onSaveRaster(int ntype)
{
if (m_pRaster){
switch (ntype)
{
case EMTYPE_RASTER:
m_pRaster->saveRasterJson(EMTYPE_RASTER);
break;
case EMTYPE_COM:
m_pRaster->saveRasterJson(EMTYPE_COM);
break;
default:
break;
}
}
}
Q_SLOT void RasterSDG20::onCtrolDevice(int nValue)
{
RasterCom* m_pRasterCom = m_pRaster->getRasterCom();
if (nValue == int(EMTYPE_OPENCOM)){
if (m_SerialPort->OpenCom(m_pRasterCom->m_ComName, m_pRasterCom->m_Baute)){
QString str = tr("串口%1 %2 打开成功 ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute);
emit(sgShowComState(str, int(EMTYPE_OPENCOM)));
}
else{
QString str = tr("串口%1 %2 打开失败!!! ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute);
emit(sgShowComState(str, int(EMTYPE_OPENERROR)));
}
}
else if(nValue==int(EMTYPE_CLOSECOM)){
m_SerialPort->CloseCom();
QString str = tr("串口%1 %2 关闭!!! ").arg(m_pRasterCom->m_ComName).arg(m_pRasterCom->m_Baute);
emit(sgShowComState(str, int(EMTYPE_CLOSECOM)));
}
}
double RasterSDG20::getDiameterValue()
{
double dDiameter = 0.0;
if (getfunc_)
{
Dia2ThPara st = getfunc_();
float mK = st.mk_, mB = st.mb_;
dDiameter = getThicknessValue()*mK + mB;
}
return dDiameter;
}
void RasterSDG20::setSetDiaParaFunc(SetDiaParaFunc func)
{
setfunc_ = func;
if (m_pmuBan)
m_pmuBan->setSetDiaParaFunc(func);
}
void RasterSDG20::setGetDiaParaFunc(GetDiaParaFunc func)
{
getfunc_ = func;
if (m_pmuBan)
m_pmuBan->setGetDiaParaFunc(func);
}