提交 7d72ea28 作者: zhangyl

显示称重数据

上级 423607f3
#############################################################################
# Makefile for building: QUI_MVC
# Makefile for building: XinHu_WCS
# Generated by qmake (3.1) (Qt 5.13.2)
# Project: QUI_MVC.pro
# Project: XinHu_WCS.pro
# Template: app
# Command: C:\Qt\Qt5.13.2\5.13.2\mingw73_32\bin\qmake.exe -o Makefile QUI_MVC.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
# Command: C:\Qt\Qt5.13.2\5.13.2\mingw73_32\bin\qmake.exe -o Makefile XinHu_WCS.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
#############################################################################
MAKEFILE = Makefile
......@@ -63,7 +63,7 @@ release-install: FORCE
release-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Release uninstall
Makefile: QUI_MVC.pro C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/win32-g++/qmake.conf C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/spec_pre.prf \
Makefile: XinHu_WCS.pro C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/win32-g++/qmake.conf C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/spec_pre.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/qdevice.pri \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/device_config.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/common/sanitize.conf \
......@@ -232,6 +232,7 @@ Makefile: QUI_MVC.pro C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/win32-g++/qmake.c
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/win32/default_pre.prf \
modeller_applog/applogmodel.pri \
sqliteassistant/sqliteassistant.pri \
tcp_controller/tcp_controller.pri \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/resolve_config.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/exclusive_builds_post.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/default_post.prf \
......@@ -250,13 +251,14 @@ Makefile: QUI_MVC.pro C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/win32-g++/qmake.c
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/exceptions.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/yacc.prf \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/lex.prf \
QUI_MVC.pro \
XinHu_WCS.pro \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Widgets.prl \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Gui.prl \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Sql.prl \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Network.prl \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Core.prl \
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/qtmain.prl
$(QMAKE) -o Makefile QUI_MVC.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
$(QMAKE) -o Makefile XinHu_WCS.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/spec_pre.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/qdevice.pri:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/device_config.prf:
......@@ -426,6 +428,7 @@ C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/default_pre.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/win32/default_pre.prf:
modeller_applog/applogmodel.pri:
sqliteassistant/sqliteassistant.pri:
tcp_controller/tcp_controller.pri:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/resolve_config.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/exclusive_builds_post.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/default_post.prf:
......@@ -444,14 +447,15 @@ C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/testcase_targets.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/exceptions.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/yacc.prf:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/mkspecs/features/lex.prf:
QUI_MVC.pro:
XinHu_WCS.pro:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Widgets.prl:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Gui.prl:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Sql.prl:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Network.prl:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/Qt5Core.prl:
C:/Qt/Qt5.13.2/5.13.2/mingw73_32/lib/qtmain.prl:
qmake: FORCE
@$(QMAKE) -o Makefile QUI_MVC.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
@$(QMAKE) -o Makefile XinHu_WCS.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
qmake_all: FORCE
......
QT += core gui sql
QT += core gui sql network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
......@@ -25,6 +25,7 @@ DEFINES += QT_MESSAGELOGCONTEXT
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
bridge.cpp \
frmmessagebox.cpp \
iconhelper.cpp \
logindlg.cpp \
......@@ -32,6 +33,7 @@ SOURCES += \
mainwindow.cpp
HEADERS += \
bridge.h \
frmmessagebox.h \
iconhelper.h \
logindlg.h \
......@@ -46,6 +48,11 @@ FORMS += \
include(modeller_applog/applogmodel.pri)
#添加数据库助手
include(sqliteassistant/sqliteassistant.pri)
#添加波形图
#include(chartPic/chartpic.pri)
#添加仪表
include(tcp_controller/tcp_controller.pri)
#include(tcp_modeller/tcp_modeller.pri)
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
......
No preview for this file type
File:(kernel\qobject.cpp) Line:(778) Function:bool check_parent_thread(QObject*, QThreadData*, QThreadData*) QObject: Cannot create children for a parent that is in a different thread.
(Parent is TCPMeterControl(0x256b7458), parent's thread is QThread(0x256a2798), current thread is QThread(0x23b17980) (2022-02-19 17:02:53 )
File:(kernel\qobject.cpp) Line:(1650) Function:int QObject::startTimer(int, Qt::TimerType) QObject::startTimer: Timers cannot be started from another thread (2022-02-19 17:02:53 )
File:(kernel\qobject.cpp) Line:(778) Function:bool check_parent_thread(QObject*, QThreadData*, QThreadData*) QObject: Cannot create children for a parent that is in a different thread.
(Parent is TCPMeterControl(0x255dbcc8), parent's thread is QThread(0x255c3f68), current thread is QThread(0x23bc7980) (2022-02-19 17:05:49 )
File:(kernel\qobject.cpp) Line:(1650) Function:int QObject::startTimer(int, Qt::TimerType) QObject::startTimer: Timers cannot be started from another thread (2022-02-19 17:05:49 )
File:(kernel\qobject.cpp) Line:(778) Function:bool check_parent_thread(QObject*, QThreadData*, QThreadData*) QObject: Cannot create children for a parent that is in a different thread.
(Parent is TCPMeterControl(0x2567b148), parent's thread is QThread(0x25663c78), current thread is QThread(0x239d7980) (2022-02-19 17:06:25 )
File:(kernel\qobject.cpp) Line:(778) Function:bool check_parent_thread(QObject*, QThreadData*, QThreadData*) QObject: Cannot create children for a parent that is in a different thread.
(Parent is TCPMeterControl(0x2567b148), parent's thread is QThread(0x25663c78), current thread is QThread(0x239d7980) (2022-02-19 17:06:25 )
File:(kernel\qobject.cpp) Line:(778) Function:bool check_parent_thread(QObject*, QThreadData*, QThreadData*) QObject: Cannot create children for a parent that is in a different thread.
(Parent is TCPMeterControl(0x2569afe8), parent's thread is QThread(0x25683cb8), current thread is QThread(0x23be7980) (2022-02-19 17:11:05 )
#include "bridge.h"
Bridge::Bridge(QObject *parent) : QObject(parent)
{
m_TCPMeterControl = new TCPMeterControl();
m_TCPMeterControl_Thread = new QThread;
m_TCPMeterControl->moveToThread(m_TCPMeterControl_Thread);
m_TCPMeterControl_Thread->start();
Func_TCPMeterControl();
}
void Bridge::Func_TCPMeterControl()
{
qDebug()<<"主线程:"<<QThread::currentThreadId();
//仪表操作函数
connect(this,&Bridge::SendToTCPMeterControl_Connect,m_TCPMeterControl,&TCPMeterControl::TCPMeterControl_Connect);
//接受仪表数组
//connect(this,&Bridge::SendToTCPMeterControl_Connect,m_TCPMeterControl,&TCPMeterControl::TCPMeterControl_Connect);
}
/**
* @projectName XinHu_WCS
* @brief 摘要
* 中间类
* @author ZhangYL
* @date 2022-02-19
*/
#ifndef BRIDGE_H
#define BRIDGE_H
#include <QObject>
#include <QThread>
#include <QDebug>
#include "tcp_controller/tcpmetercontrol.h" //添加仪表数据读取模块
class Bridge : public QObject
{
Q_OBJECT
public:
explicit Bridge(QObject *parent = nullptr);
TCPMeterControl *m_TCPMeterControl;
signals:
///仪表信号
void SendToTCPMeterControl_Connect(QString IP,quint16 Prot);
public slots:
private:
void Func_TCPMeterControl();
private:
QThread *m_TCPMeterControl_Thread; //仪表读取线程
};
#endif // BRIDGE_H
HEADERS += \
$$PWD/mychart1.h
SOURCES += \
$$PWD/mychart1.cpp
#include "mychart1.h"
myChart1::myChart1(QWidget *parent) :
QWidget(parent)
{
this->initVariables();
}
void myChart1::initVariables()
{
m_bUseAntialiasing=true;
m_bShowHLine=true;
m_bShowPoint=true;
m_hLineClr=Qt::black;
m_strTitle="";
}
void myChart1::paintEvent(QPaintEvent *e)
{
QPainter painter;
painter.begin(this);
if(m_bUseAntialiasing)
{
painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);
}
resetVariables(&painter);
drawBackground(&painter);
drawBox(&painter);
drawText(&painter);
drawGraph(&painter);
drawTitle(&painter);
}
void myChart1::resetVariables(QPainter *painter)
{
QPointF topRectTopLeftPot(0,0);
QPointF topRectBottomRightPot(width(),height()/3*2);
m_topRect=QRectF(topRectTopLeftPot,topRectBottomRightPot);
QPointF bottomRectTopLeftPot(0,height()/3*2);
QPointF bottomRectBottomRightPot(width(),height());
m_bottomRect=QRectF(bottomRectTopLeftPot,bottomRectBottomRightPot);
m_leftSpace=(qreal)width()/10;
m_topSpace=(qreal)height()/10;
}
void myChart1::drawBackground(QPainter *painter)
{
painter->save();
painter->setPen(Qt::NoPen);
QLinearGradient topGradient(m_topRect.topLeft(),m_topRect.bottomLeft());
topGradient.setColorAt(0.0,QColor(255,255,255));
topGradient.setColorAt(1.0,QColor(255,255,255));
painter->setBrush(topGradient);
painter->drawRect(m_topRect);
QLinearGradient bottomGradient(m_bottomRect.topLeft(),m_bottomRect.bottomLeft());
bottomGradient.setColorAt(0.0,QColor(255,255,255));
bottomGradient.setColorAt(1.0,QColor(255,255,255));
painter->setBrush(bottomGradient);
painter->drawRect(m_bottomRect);
painter->restore();
}
void myChart1::drawBox(QPainter *painter)
{
painter->save();
QPointF topLeftPot(m_leftSpace,m_topSpace);
QPointF bottomRightPot(width()-m_leftSpace,height()-m_topSpace);
painter->setPen(Qt::black);
painter->setBrush(Qt::NoBrush);
m_boxRect=QRectF(topLeftPot,bottomRightPot);
painter->drawRect(m_boxRect);
if(m_bShowHLine)
{
painter->setPen(m_hLineClr);
qreal increment=(qreal)m_boxRect.height()/10;
qreal startY=m_boxRect.topLeft().y();
qreal boxWidth=m_boxRect.width();
for(int i=0;i<9;i++)
{
startY+=increment;
QPointF leftPot(m_boxRect.topLeft().x(),startY);
QPointF rightPot(m_boxRect.topRight().x(),startY);
painter->setPen(Qt::DotLine);
painter->drawLine(leftPot,rightPot);
}
}
painter->restore();
}
void myChart1::drawText(QPainter *painter)
{
painter->save();
int value=100;
qreal increment=(qreal)m_boxRect.height()/10;
qreal startY=m_boxRect.topLeft().y();
QString strValue;
for(int i=0;i<=10;i++)
{
strValue=tr("%1吨").arg(value);
qreal textWidth=fontMetrics().width(strValue);
qreal textHeight=fontMetrics().height();
QPointF textPot(m_boxRect.topLeft().x()-TEXT_BOX_SPACE-textWidth,startY+textHeight/2);
painter->drawText(textPot,strValue);
value-=10;
startY+=increment;
}
painter->restore();
}
void myChart1::drawGraph(QPainter *painter)
{
painter->save();
qreal startX=m_boxRect.topRight().x();
QVector<QPointF> potVec;
painter->save();
painter->setPen(Qt::NoPen);
potVec.push_back(QPointF(startX,m_boxRect.bottomRight().y()));
for(int i=0;i<m_dataVec.count();i++)
{
qreal x=startX;
qreal y=m_boxRect.bottomRight().y()-(qreal)m_dataVec.at(i)*(m_boxRect.height()/100);
QPointF dataPot(x,y);
potVec.push_back(dataPot);
startX-=X_INCREMENT;
}
potVec.push_back(QPointF(startX,m_boxRect.bottomRight().y()));
painter->restore();
QLinearGradient graphGradient(m_boxRect.topLeft(),m_boxRect.bottomLeft());
graphGradient.setColorAt(0.0,QColor(240,67,51));
graphGradient.setColorAt(0.4,QColor(208,94,49));
graphGradient.setColorAt(1.0,QColor(85,255,0));
painter->setBrush(graphGradient);
painter->setPen(Qt::NoPen);
painter->drawConvexPolygon(QPolygonF(potVec));
// draw points
if(m_bShowPoint)
{
painter->setOpacity(2.5);
for(int i=1;i<potVec.count()-1;i++)
{
QPointF dataPot=potVec.at(i);
QRadialGradient potGradient(dataPot,POINT_RADIUS,dataPot);
potGradient.setColorAt(0.0,QColor(180,180,180));
potGradient.setColorAt(0.5,QColor(180,180,43));
potGradient.setColorAt(1.0,QColor(180,180,180));
painter->setBrush(potGradient);
painter->drawEllipse(dataPot,POINT_RADIUS,POINT_RADIUS);
}
}
painter->restore();
}
void myChart1::drawTitle(QPainter *painter)
{
painter->save();
qreal titleX=(qreal)width()/2;
qreal titleY=m_topSpace/2;
qreal textWidth=fontMetrics().width(m_strTitle);
qreal textHeight=fontMetrics().height();
QFont titleFont;
titleFont.setBold(true);
titleFont.setPointSize(20);
painter->setFont(titleFont);
QPointF textPot(titleX-textWidth/2,titleY/2+textHeight/2);
painter->drawText(textPot,m_strTitle);
painter->restore();
}
void myChart1::addData(qreal data)
{
m_dataVec.push_front(data);
updateVector();
}
void myChart1::updateVector()
{
int allowDataCount=m_boxRect.width()/X_INCREMENT;
if(m_dataVec.count()>allowDataCount)
{
m_dataVec.remove(allowDataCount,1);
}
update();
}
#ifndef MYCHART1_H
#define MYCHART1_H
#define TEXT_BOX_SPACE 5
#define X_INCREMENT 5
#define POINT_RADIUS 3
#include <QWidget>
#include <QtGui>
class myChart1 : public QWidget
{
Q_OBJECT
public:
explicit myChart1(QWidget *parent = 0);
public slots:
void addData(qreal data);
void setUseAntialiasing(bool use)
{
m_bUseAntialiasing=use;
update();
}
bool getUseAntialiasing() const
{
return m_bUseAntialiasing;
}
void setHorizontalLineColor(const QColor& clr)
{
m_hLineClr=clr;
update();
}
void setShowPoint(bool show)
{
m_bShowPoint=show;
update();
}
void setTitle(const QString& str)
{
m_strTitle=str;
update();
}
protected:
void paintEvent(QPaintEvent *);
void resizeEvent(QResizeEvent *)
{
updateVector();
}
QSize sizeHint() const
{
return QSize(350,350);
}
QSize minimumSizeHint() const
{
return QSize(280,280);
}
private:
void resetVariables(QPainter* painter);
void drawBackground(QPainter* painter);
void drawBox(QPainter* painter);
void drawText(QPainter* painter);
void drawGraph(QPainter* painter);
void drawTitle(QPainter* painter);
private:
qreal m_leftSpace;
qreal m_topSpace;
QVector<qreal> m_dataVec;
QVector<QPointF> m_potVec;
bool m_bUseAntialiasing;
bool m_bShowHLine;
bool m_bShowPoint;
bool isClicking;
int xOld;
int yOld;
QRectF m_topRect;
QRectF m_bottomRect;
QRectF m_boxRect;
QColor m_hLineClr;
QString m_strTitle;
void initVariables();
void updateVector();
};
#endif // MYCHART1_H
......@@ -39,5 +39,6 @@
<file>image/radio_selected.png</file>
<file>image/sub-line_horizontal.png</file>
<file>image/sub-line_vertical.png</file>
<file>image/navy.qss</file>
</qresource>
</RCC>
QWidget#frmLogin,QWidget#frmPopup,QWidget#frmHostInfo,QWidget#frmLogout,QWidget#frmConfig,QWidget#frmData,QWidget#frmDefence,QWidget#frmHost,QWidget#frmMain,QWidget#frmPwd,QWidget#frmSelect,QWidget#frmMessageBox{
border:1px solid #0F7DBE;
border-radius:0px;
}
.QFrame{
border:1px solid #50A3F0;
border-radius:5px;
}
QWidget#widget_title{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QLabel#lab_Ico,QLabel#lab_Title{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QLineEdit {
border: 1px solid #50A3F0;
border-radius: 5px;
padding: 2px;
background: none;
selection-background-color: #0F7DBE;
}
QLineEdit[echoMode="2"] {
lineedit-password-character: 9679;
}
.QGroupBox{
border: 1px solid #50A3F0;
border-radius: 5px;
}
.QPushButton{
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 5px;
min-height: 20px;
border-radius:5px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
.QPushButton[focusPolicy="0"] {
border-style: none;
border: 0px;
color: #F0F0F0;
padding: 0px;
min-height: 10px;
border-radius:3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
.QPushButton:hover{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
.QPushButton:pressed{
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QPushButton#btnMenu,QPushButton#btnMenu_Min,QPushButton#btnMenu_Max,QPushButton#btnMenu_Close{
border-radius:0px;
color: #F0F0F0;
background-color:rgba(0,0,0,0);
border-style:none;
}
QPushButton#btnMenu:hover,QPushButton#btnMenu_Min:hover,QPushButton#btnMenu_Max:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(25, 134, 199, 0), stop:1 #50A3F0);
}
QPushButton#btnMenu_Close:hover{
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(238, 0, 0, 128), stop:1 rgba(238, 44, 44, 255));
}
QCheckBox {
spacing: 2px;
}
QCheckBox::indicator {
width: 20px;
height: 20px;
}
QCheckBox::indicator:unchecked {
image: url(:/image/checkbox_unchecked.png);
}
QCheckBox::indicator:checked {
image: url(:/image/checkbox_checked.png);
}
QRadioButton {
spacing: 2px;
}
QRadioButton::indicator {
width: 15px;
height: 15px;
}
QRadioButton::indicator::unchecked {
image: url(:/image/radio_normal.png);
}
QRadioButton::indicator::checked {
image: url(:/image/radio_selected.png);
}
QComboBox,QDateEdit{
border-radius: 3px;
padding: 1px 10px 1px 5px;
border: 1px solid #50A3F0;
}
QComboBox::drop-down,QDateEdit::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 1px;
border-left-style: solid;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-left-color: #50A3F0;
}
QComboBox::down-arrow,QDateEdit::down-arrow {
image: url(:/image/array_down.png);
}
QMenu {
background-color:#F0F0F0;
margin: 2px;
}
QMenu::item {
padding: 2px 12px 2px 12px;
}
QMenu::indicator {
width: 13px;
height: 13px;
}
QMenu::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QMenu::separator {
height: 1px;
background: #50A3F0;
}
QProgressBar {
border-radius: 5px;
text-align: center;
border: 1px solid #50A3F0;
}
QProgressBar::chunk {
width: 5px;
margin: 0.5px;
background-color: #0F7DBE;
}
QSlider::groove:horizontal,QSlider::add-page:horizontal {
background: #808080;
height: 8px;
border-radius: 3px;
}
QSlider::sub-page:horizontal {
height: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QSlider::handle:horizontal {
width: 13px;
margin-top: -3px;
margin-bottom: -3px;
border-radius: 6px;
background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5,stop:0.6 #F0F0F0, stop:0.778409 #50A3F0);
}
QSlider::handle:horizontal:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #0F7DBE);
}
QSlider::groove:vertical,QSlider::sub-page:vertical {
background:#808080;
width: 8px;
border-radius: 3px;
}
QSlider::add-page:vertical {
width: 8px;
border-radius: 3px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QSlider::handle:vertical {
height: 14px;
margin-left: -3px;
margin-right: -3px;
border-radius: 6px;
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0, stop:0.778409 #50A3F0);
}
QSlider::handle:vertical:hover {
background: qradialgradient(spread: pad, cx: 0.5, cy: 0.5, radius: 0.5, fx: 0.5, fy: 0.5, stop: 0.6 #F0F0F0,stop:0.778409 #0F7DBE);
}
QScrollBar:vertical {
width:10px;
background-color:rgba(0,0,0,0%);
padding-top:10px;
padding-bottom:10px;
}
QScrollBar:horizontal {
height:10px;
background-color:rgba(0,0,0,0%);
padding-left:10px; padding-right:10px;
}
QScrollBar::handle:vertical {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QScrollBar::handle:horizontal {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QScrollBar::handle:vertical:hover {
width:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QScrollBar::handle:horizontal:hover {
height:10px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QScrollBar::add-line:vertical {
height:10px;
width:10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
border-image:url(:/image/add-line_vertical.png);
}
QScrollBar::add-line:horizontal {
height:10px;
width:10px;
subcontrol-position: right;
subcontrol-origin: margin;
border-image:url(:/image/add-line_horizontal.png);
}
QScrollBar::sub-line:vertical {
height:10px;
width:10px;
subcontrol-position: top;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_vertical.png);
}
QScrollBar::sub-line:horizontal {
height:10px;
width:10px;
subcontrol-position: left;
subcontrol-origin: margin;
border-image:url(:/image/sub-line_horizontal.png);
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical {
width:10px;
background: #C0C0C0;
}
QScrollBar::add-page:horizontal,QScrollBar::sub-page:horizontal {
height:10px;
background: #C0C0C0;
}
QScrollArea {
border: 0px ;
}
QTreeView,QListView,QTableView{
border: 1px solid #50A3F0;
selection-background-color: #0F7DBE;
selection-color: #F0F0F0;
}
QTableView::item:selected, QListView::item:selected, QTreeView::item:selected {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QTableView::item:hover, QListView::item:hover, QTreeView::item:hover {
color: #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTableView::item, QListView::item, QTreeView::item {
padding: 5px;
margin: 0px;
}
QHeaderView::section {
padding:3px;
margin:0px;
color:#F0F0F0;
border: 1px solid #F0F0F0;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTabBar::tab {
border-bottom-left-radius:0px;
border-bottom-right-radius:0px;
color: #F0F0F0;
min-width: 60px;
min-height: 20px;
padding: 3px 8px 3px 8px;
margin:1px;
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #50A3F0, stop:1 #489CEA);
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #0F7DBE, stop:1 #1582C3);
}
QStatusBar::item {
border: 1px solid #50A3F0;
}
......@@ -7,6 +7,14 @@
#include "logindlg.h" //登陆
int LogKeepDay = 0; //日志保存天数,
SqliteAssistant *m_SqliteAssistant;
QString DB_ServerIP; //服务器IP
QString DB_ServerProt;
QString DB_RFIDIP; //读卡器
QString DB_RFIDProt;
QString DB_ScanIP; //扫码器
QString DB_ScanProt;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
......@@ -21,7 +29,17 @@ int main(int argc, char *argv[])
{
qDebug()<<"connectSql ok";
}
myHelper::SetStyle("blue");
///读取配置信息
DB_ServerIP = m_SqliteAssistant->Select_SystemConfigInfo("ServerIP");
DB_ServerProt = m_SqliteAssistant->Select_SystemConfigInfo("ServerProt");
DB_RFIDIP = m_SqliteAssistant->Select_SystemConfigInfo("RFIDIP");
DB_RFIDProt = m_SqliteAssistant->Select_SystemConfigInfo("RFIDProt");
DB_ScanIP = m_SqliteAssistant->Select_SystemConfigInfo("ScanIP");
DB_ScanProt = m_SqliteAssistant->Select_SystemConfigInfo("ScanProt");
myHelper::SetStyle("navy");
LoginDlg login;
login.show();
return a.exec();
......
......@@ -2,46 +2,176 @@
#include "ui_mainwindow.h"
#include <QDateTime>
#include <QDebug>
static QDateTime c_1;
static int timeFlag = 0;
;
#include <QProcess>
#include "sqliteassistant/sqliteassistant.h"
#include "myhelper.h"
///信湖项目
extern QString DB_ServerIP; //服务器IP
extern QString DB_ServerProt;
//extern QString DB_HkIP; //抓拍机IP
//extern QString DB_HkProt;
//extern QString DB_HkUser;
//extern QString DB_HkPwd;
extern QString DB_RFIDIP; //读卡器
extern QString DB_RFIDProt;
extern QString DB_ScanIP; //扫码器
extern QString DB_ScanProt;
//数据库字段
QString ServerIP = "ServerIP";
QString ServerProt = "ServerProt";
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
SoftStart();
dataUpDate();
//m_myChart1 = new myChart1();
m_Bridge = new Bridge();
m_SoftBreath = new QTimer(this);
m_systemTime = new QLabel();
statusBar()->addWidget(m_systemTime);
m_systemTime = new QLabel(this);
m_ServerConnect = new QLabel(this);
m_RFIDStatus = new QLabel(this);
m_ScanStatus = new QLabel(this);
m_EqptStatus = new QLabel(this);
m_MeterStatus = new QLabel(this);
//updateTimer21=new QTimer(this);
//updateTimer21->setInterval(100);
//connect(updateTimer21,SIGNAL(timeout()),this,SLOT(UpdateData21()));
statusBar()->addPermanentWidget(m_ServerConnect);
statusBar()->addPermanentWidget(m_RFIDStatus);
statusBar()->addPermanentWidget(m_ScanStatus);
statusBar()->addPermanentWidget(m_EqptStatus);
statusBar()->addPermanentWidget(m_MeterStatus);
statusBar()->addPermanentWidget(m_systemTime);
m_SoftBreath->start(1000);
SoftInit();
SoftStart();
dataUpDate();
ReadConfigInfo();
CheckEqptIP();
Soft_Pbn_clicked();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::SoftInit()
{
//设置整体布局
setWindowTitle("信湖煤矿");
ui->widget_title->setFixedHeight(this->height()/8);
ui->lab_Title->setText("信湖煤矿——称重控制");
ui->widget_pbn->setFixedHeight(this->height()/10);
ui->stackedWidget->setCurrentWidget(ui->page_1);
ui->pbn_navigation_1->setFixedHeight(this->height()/12);
ui->pbn_navigation_2->setFixedHeight(this->height()/12);
ui->pbn_navigation_3->setFixedHeight(this->height()/12);
ui->pbn_navigation_4->setFixedHeight(this->height()/12);
ui->pbn_navigation_5->setFixedHeight(this->height()/12);
ui->pbn_navigation_6->setFixedHeight(this->height()/12);
//初始化控件名称
ui->pbn_navigation_1->setText("称重管理");
ui->pbn_navigation_2->setText("货场管理");
ui->pbn_navigation_3->setText("数据管理");
ui->pbn_navigation_4->setText("系统管理");
ui->pbn_navigation_5->setText("关于");
ui->pbn_navigation_6->setText("退出");
//
m_ServerConnect->setText("服务器状态");
m_ServerConnect->setStyleSheet("background-color: rgb(255, 0, 0);");
m_RFIDStatus->setText("RFID状态");
m_RFIDStatus->setStyleSheet("background-color: rgb(255, 0, 0);");
m_ScanStatus->setText("扫码器状态");
m_ScanStatus->setStyleSheet("background-color: rgb(255, 0, 0);");
m_EqptStatus->setText("其他硬件状态");
m_EqptStatus->setStyleSheet("background-color: rgb(255, 0, 0);");
m_MeterStatus->setText("仪表状态");
m_MeterStatus->setStyleSheet("background-color: rgb(255, 0, 0);");
//m_myChart1->setParent(ui->chart_widget);
//m_myChart1->setTitle(tr("重量波形图"));
}
void MainWindow::Soft_Pbn_clicked()
{
connect(m_SoftBreath,&QTimer::timeout,this,[=](){
//软件心跳
m_SoftBreath_s = m_SoftBreath_s + 1;
m_SoftBreath_s = m_SoftBreath_s+1;
if(m_SoftBreath_s>59){
m_SoftBreath_s = 0;
m_SoftBreath_m = m_SoftBreath_m+1;
m_SoftBreath_m = m_SoftBreath_m + 1;
if(m_SoftBreath_m>59){
m_SoftBreath_m = 0;
m_SoftBreath_h = m_SoftBreath_h+1;
}
if(m_SoftBreath_h>23){
m_SoftBreath_h = 0;
m_SoftBreath_d = m_SoftBreath_d + 1;
}
}
if(m_SoftBreath_m>59){
m_SoftBreath_m = 0;
m_SoftBreath_h = m_SoftBreath_h + 1;
m_systemTime->setText("系统累计运行时间--"+
QString::number(m_SoftBreath_d)+"天"+":"+
QString::number(m_SoftBreath_h)+"时"+":"+
QString::number(m_SoftBreath_m)+"分"+":"+
QString::number(m_SoftBreath_s)+"秒"+"--");
});
connect(ui->action_Meter,&QAction::triggered,this,[=](){
//连接仪表
if(ui->action_Meter->text() == "连接仪表"){
emit m_Bridge->m_TCPMeterControl->TCPMeterControl_Connect(DB_ServerIP,quint16(DB_ServerProt.toUInt()));
ui->action_Meter->setText("断开仪表");
}else{
ui->action_Meter->setText("连接仪表");
}
if(m_SoftBreath_h >23){
m_SoftBreath_h = 0;
m_SoftBreath_d = m_SoftBreath_d + 1;
});
connect(ui->pbn_navigation_1,&QPushButton::clicked,this,[=](){
//导航1
ui->stackedWidget->setCurrentWidget(ui->page_2);
});
connect(ui->pbn_navigation_2,&QPushButton::clicked,this,[=](){
//导航2
ui->stackedWidget->setCurrentWidget(ui->page_3);
});
connect(ui->pbn_navigation_3,&QPushButton::clicked,this,[=](){
//导航3
ui->stackedWidget->setCurrentWidget(ui->page_4);
});
connect(ui->pbn_navigation_4,&QPushButton::clicked,this,[=](){
//导航4
ui->stackedWidget->setCurrentWidget(ui->page_5);
});
connect(ui->pbn_navigation_5,&QPushButton::clicked,this,[=](){
//导航5--关于
myHelper::ShowMessageBoxInfo("本软件由今迈衡器开发,联系方式:159****8888");
});
connect(ui->pbn_navigation_6,&QPushButton::clicked,this,[=](){
//导航6--退出
this->close();
});
//配置按钮
connect(ui->pbn_Setting_Server,&QPushButton::clicked,this,[=](){
//服务器配置
long a = m_SqliteAssistant->Insert_SystemConfigInfo(ServerIP,ui->lineEdit_ServerIP->text());
long b = m_SqliteAssistant->Insert_SystemConfigInfo(ServerProt,ui->lineEdit_ServerProt->text());
if(!a&&!b){
myHelper::ShowMessageBoxInfo("服务器配置已保存,重启后生效");
}
ui->lcdNumber_second->display(m_SoftBreath_s);
ui->lcdNumber_minute->display(m_SoftBreath_m);
ui->lcdNumber_hour->display(m_SoftBreath_h);
ui->lcdNumber_day->display(m_SoftBreath_d);
});
}
MainWindow::~MainWindow()
{
delete ui;
SoftClose();
}
void MainWindow::SoftStart()
......@@ -58,19 +188,55 @@ void MainWindow::SoftClose()
qDebug()<<"软件关闭时间:"<<str;
}
void MainWindow::CheckEqptIP()
{
if(!QtPing(DB_ServerIP)){
myHelper::ShowMessageBoxError("服务器IP错误,请检查");
}
}
void MainWindow::ReadConfigInfo()
{
ui->lineEdit_ServerIP->setText(DB_ServerIP);
ui->lineEdit_ServerProt->setText(DB_ServerProt);
}
void MainWindow::dataUpDate()
{
if(timeFlag == 0){
c_1 = QDateTime::currentDateTime();
QTimer *timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,[=](){
QDateTime c_2 = QDateTime::currentDateTime();
m_systemTime->setText("系统累计运行时间--"+
QString::number(c_1.msecsTo(c_2)/3600000)+":"+
QString::number(c_1.msecsTo(c_2)%3600000/60000)+":"+
QString::number(c_1.msecsTo(c_2)%60000/1000)+"--");
});
timer->start(1000);
timeFlag = 1;
//connect(m_Bridge->m_TCPMeterControl,&TCPMeterControl::send);
}
bool MainWindow::QtPing(const QString ip)
{
// #Linux指令 "ping -s 1 -c 1 IP"
//QString cmdstr = QString("ping -s 1 -c 1 %1")
// .arg(ip);
// #Windows指令 "ping IP -n 1 -w 超时(ms)"
QString cmdstr = QString("ping %1 -n 1 -w %2")
.arg(ip).arg(1000);
QProcess cmd;
cmd.start(cmdstr);
cmd.waitForReadyRead(1000);
cmd.waitForFinished(1000);
QString response = cmd.readAll();
if (response.indexOf("TTL") == -1)
{
return false;
}
else
{
return true;
}
}
//void MainWindow::UpdateData21()
//{
// if(total>90){
// return;
// }
// int value=qrand()%100;
// m_myChart1->addData(value);
// total = total+1;
//}
......@@ -4,7 +4,8 @@
#include <QLabel>
#include <QMainWindow>
#include <QTimer>
#include "bridge.h"
//#include "chartPic/mychart1.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
......@@ -18,16 +19,34 @@ public:
~MainWindow();
private:
void SoftInit(); //软件初始化
void Soft_Pbn_clicked(); //界面点击事件
void SoftStart();
void SoftClose();
void CheckEqptIP(); //检查配置是否正确
void ReadConfigInfo(); //读取数据库配置信息
void dataUpDate();
bool QtPing(const QString ip); //网络检查
private slots:
//void UpdateData21();
private:
Ui::MainWindow *ui;
QLabel *m_systemTime;
Bridge *m_Bridge;
//myChart1 *m_myChart1; //波形图
QLabel *m_systemTime; //计时器
QLabel *m_ServerConnect; //服务器状态
QLabel *m_RFIDStatus; //射频卡状态
QLabel *m_ScanStatus; //扫码器状态
QLabel *m_EqptStatus; //其他硬件状态
QLabel *m_MeterStatus; //仪表状态
QTimer *m_SoftBreath;
//QTimer *updateTimer21;
int m_SoftBreath_s = 0;
int m_SoftBreath_m = 0;
int m_SoftBreath_h = 0;
int m_SoftBreath_d = 0;
int total = 0;
};
#endif // MAINWINDOW_H
......@@ -41,7 +41,7 @@ public:
//设置皮肤样式
static void SetStyle(const QString &styleName)
{
QFile file(QString(":/image/%1.css").arg(styleName));
QFile file(QString(":/image/%1.qss").arg(styleName));
file.open(QFile::ReadOnly);
QString qss = QLatin1String(file.readAll());
qApp->setStyleSheet(qss);
......
temp/obj/bridge.o
temp/obj/frmmessagebox.o
temp/obj/iconhelper.o
temp/obj/logindlg.o
temp/obj/main.o
temp/obj/mainwindow.o
temp/obj/applog.o
temp/obj/sqliteassistant.o
temp/obj/tcpmetercontrol.o
temp/obj/qrc_image.o
temp/obj/moc_bridge.o
temp/obj/moc_frmmessagebox.o
temp/obj/moc_logindlg.o
temp/obj/moc_mainwindow.o
temp/obj/moc_sqliteassistant.o
temp/obj/moc_tcpmetercontrol.o
temp/obj/bridge.o
temp/obj/frmmessagebox.o
temp/obj/iconhelper.o
temp/obj/logindlg.o
temp/obj/main.o
temp/obj/mainwindow.o
temp/obj/applog.o
temp/obj/sqliteassistant.o
temp/obj/tcpmetercontrol.o
temp/obj/qrc_image.o
temp/obj/moc_bridge.o
temp/obj/moc_frmmessagebox.o
temp/obj/moc_logindlg.o
temp/obj/moc_mainwindow.o
temp/obj/moc_sqliteassistant.o
temp/obj/moc_tcpmetercontrol.o
HEADERS += \
$$PWD/tcpmetercontrol.h
SOURCES += \
$$PWD/tcpmetercontrol.cpp
#include "tcpcontrol.h"
#include <QMutex>
#include <QThread>
#include <QMessageBox>
extern QString MeterIp;
extern QString MeterPort;
TcpControl::TcpControl(QObject *parent) : QObject(parent)
{
}
void TcpControl::Tcp_start()
{
qDebug()<<"Tcp线程:"<<QThread::currentThreadId();
tcphand = new QTcpSocket;
tcphand->abort();
tcphand->connectToHost(MeterIp,MeterPort.toUShort());
connect(tcphand,&QTcpSocket::connected,this,[=](){
qDebug()<<"仪表已连接";
});
connect(tcphand,&QTcpSocket::disconnected,this,[=](){
qDebug()<<"仪表已断开";
});
connect(tcphand,&QTcpSocket::readyRead,this,[=](){
realdata = tcphand->readAll();
});
SendData = new QTimer();
SendData->start(1000);
connect(SendData,&QTimer::timeout,this,[=](){
//加锁
static QMutex SendDatamutex;
SendDatamutex.lock();
emit SendToBridge_data(realdata);
//解锁
SendDatamutex.unlock();
});
}
#ifndef TCPCONTROL_H
#define TCPCONTROL_H
#include <QObject>
#include <QTcpSocket>
#include <QTimer>
class TcpControl : public QObject
{
Q_OBJECT
public:
explicit TcpControl(QObject *parent = nullptr);
signals:
void SendToBridge_data(QByteArray data);
public slots:
void Tcp_start();
private:
QTcpSocket *tcphand;
QTimer *SendData;
QByteArray realdata;
};
#endif // TCPCONTROL_H
#include "tcpmetercontrol.h"
#include <QMutex>
#include <QThread>
TCPMeterControl::TCPMeterControl(QObject *parent) : QObject(parent)
{
}
void TCPMeterControl::TCPMeterControl_Connect(QString IP, quint16 Prot)
{
qDebug()<<"仪表线程:"<<QThread::currentThreadId();
m_TcpSocket = new QTcpSocket();
m_TcpSocket->abort();
m_TcpSocket->connectToHost(IP,Prot);
connect(m_TcpSocket,&QTcpSocket::connected,this,[=](){
qDebug()<<"仪表控制已连接";
emit SendToWindows_ConnectIsOk();
});
connect(m_TcpSocket,&QTcpSocket::readyRead,this,[=](){
m_ReadData = m_TcpSocket->readAll();
});
SendData = new QTimer();
SendData->start(500);
connect(SendData,&QTimer::timeout,this,[=](){
//加锁
static QMutex SendDatamutex;
SendDatamutex.lock();
emit SendToBridgeTCPMeterControl_Data(m_ReadData);
//解锁
SendDatamutex.unlock();
});
}
/**
* @projectName XinHu_WCS
* @brief 摘要
* TCP仪表控制
* @author ZhangYL
* @date 2022-02-19
*/
#ifndef TCPMETERCONTROL_H
#define TCPMETERCONTROL_H
#include <QObject>
#include <QTcpSocket>
#include <QTimer>
class TCPMeterControl : public QObject
{
Q_OBJECT
public:
explicit TCPMeterControl(QObject *parent = nullptr);
signals:
///输入信号
void SendSelf_TrunkUp();
void SendSelf_TrunkDown();
void SendSelf_Snap();
///输出信号
void SendToBridgeTCPMeterControl_Data(QByteArray data);
void SendToWindows_ConnectIsOk();
public slots:
void TCPMeterControl_Connect(QString IP,quint16 Prot);
private:
//QByteArray WriteData(QString order); //组装命令
private:
QTcpSocket *m_TcpSocket;
QByteArray m_ReadData;
QTimer *SendData;
};
#endif // TCPMETERCONTROL_H
#include "bcc.h"
//异或检验
unsigned short getBCC(unsigned char* data,int dataLen)
{
unsigned short i=0;
unsigned short ret=0;
for (i=0;i<dataLen;i++) {
ret=ret^(*(data+i));
}
return ret;
}
#ifndef BCC_H
#define BCC_H
unsigned short getBCC(unsigned char* data,int dataLen);
#endif // BCC_H
#include "metermodel.h"
#include <math.h>
#include <QDebug>
#include <QMutex>
extern bool is_StartWeight;
extern bool is_EPC;
extern float data_Weight;
static QMutex meterData_Mutex;
meterModel::meterModel(QObject *parent) : QObject(parent)
{
connect(this,&meterModel::RecvMeterData,this,[=](float m_MeterData){
if(m_MeterData < 0){
return;
}
if(!is_EPC){
//return;
}
meterDataVector.append(m_MeterData);
if(!is_GraspTheWeight){
//判断是否进入取重
if(meterDataVector.size() == 6){
if(!is_StartWeight){
qDebug()<<"未扫码,不取重";
meterDataVector.clear();
return ;
}
//预设取六次称重数据
if(!StableData(meterDataVector)){
qDebug()<<"不稳定";
meterDataVector.clear();
m_TheSumOfJudge = m_TheSumOfJudge+1;
//meterData_Mutex.unlock();
return;
}else {
///判定之后清除原数据
meterDataVector.clear();
///重置稳定计数
m_TheSumOfJudge = 0;
///启动抓重处理
is_GraspTheWeight = true;
//meterData_Mutex.unlock();
return;
}
if(m_TheSumOfJudge > 10){
qDebug()<<"稳定超时,请下磅";
m_TheSumOfJudge = 0;
meterDataVector.clear();
//meterData_Mutex.unlock();
return;
}
}
}else {
///判断是否扫码取重
if(meterDataVector.size() < 6){
qDebug()<<"已扫码,开始取重 :"<<GraspWeight(meterDataVector);
meterDataVector.clear();
is_GraspTheWeight = false;
is_StartWeight = false;
//meterData_Mutex.unlock();
return;
}
}
});
}
bool meterModel::StableData(QVector<float> data)
{
qDebug()<<"进入稳定判定";
///先升序排序
qSort(data.begin(), data.end());
///去除最大值,最小值
data.remove(0);
data.remove(data.size()-1);
///求总值
float sum_data = std::accumulate(std::begin(data), std::end(data), 0.0);
///均值
float mean = sum_data / data.size();
///求方差参数
float accum = 0.0;
std::for_each (std::begin(data), std::end(data), [&](const double d) {
accum += (d-mean)*(d-mean);
});
///方差
float stdev = sqrt(accum/(data.size()-1)); //方差
qDebug()<<"方差:"<<stdev;
float peak = data.at(data.size()-1) - mean;
if(peak > 1.0){
qDebug()<<"本次波峰为:"<<peak<<"高于给定值1";
return false;
}
if(stdev > 1.0){
qDebug()<<"方差为:"<<stdev<<"不稳定";
return false;
}
//emit SendToBridge(QString::number(stdev));
return true;
}
QString meterModel::GraspWeight(QVector<float> data)
{
qDebug()<<"进入抓重";
///先升序排序
qSort(data.begin(), data.end());
///求总值
float sum_data = std::accumulate(std::begin(data), std::end(data), 0.0);
///均值
float mean = sum_data / data.size();
return QString::number(mean);
}
#ifndef METERMODEL_H
#define METERMODEL_H
#include <QObject>
class meterModel : public QObject
{
Q_OBJECT
public:
explicit meterModel(QObject *parent = nullptr);
signals:
void RecvMeterData(float meterData );
void SendToBridge(QString data);
void SendTometerModelGraspTheWeight();
public slots:
private:
bool StableData(QVector<float> data);
QString GraspWeight(QVector<float> data);
private:
QVector<float> meterDataVector;
///判断稳定次数
int m_TheSumOfJudge = 0;
///是否抓重
bool is_GraspTheWeight = false;
};
#endif // METERMODEL_H
HEADERS += \
$$PWD/bcc.h \ \
$$PWD/metermodel.h
SOURCES += \
$$PWD/bcc.cpp \ \
$$PWD/metermodel.cpp
#include "tcpmodel.h"
#include "bcc.h"
#include <QMutex>
#include <QDebug>
#include <QThread>
TcpModel::TcpModel(QObject *parent) : QObject(parent)
{
}
void TcpModel::RecvFromBridge_data(QByteArray data)
{
qDebug()<<"TcpModel线程:"<<QThread::currentThreadId();
bytedata = data;
//加锁
static QMutex DataByHandlemutex;
DataByHandlemutex.lock();
QByteArray weightdata = bytedata;
float weight_int =0;
float weight_dec =0;
if(weightdata.size()<12)
{
DataByHandlemutex.unlock();
qDebug()<<"仪表数据异常";
emit SendToBridge_MerterError();
return;
}
QByteArray data_mark = weightdata.mid(0,1);
QByteArray tmp_data_bcc = weightdata.mid(1,8);
QByteArray tmp_bcc = weightdata.mid(9,2).toLower();
QByteArray tmp_end = weightdata.mid(11,1);
if(*((unsigned char*)data_mark.data())==0x02)
{
int myBcc =getBCC((unsigned char*)tmp_data_bcc.toStdString().c_str(),tmp_data_bcc.length());
if((*((unsigned char*)tmp_end.data())==0x03))
{
QByteArray tmp_int = weightdata.mid(2,5);
QByteArray tmp_dec = weightdata.mid(7,1);
weight_int = tmp_int.toInt();
weight_dec = tmp_dec.toInt();
float weight = weight_int+weight_dec/10;
QString data = QString::number(weight);
emit DataByHandle(data);
}
}
//解锁
DataByHandlemutex.unlock();
}
#ifndef TCPMODEL_H
#define TCPMODEL_H
#include <QObject>
class TcpModel : public QObject
{
Q_OBJECT
public:
explicit TcpModel(QObject *parent = nullptr);
signals:
void DataByHandle(QString data);
void SendToBridge_MerterError();
public:
public slots:
void RecvFromBridge_data(QByteArray data);
private:
QString strdata;
QByteArray bytedata;
};
#endif // TCPMODEL_H
/****************************************************************************
** Meta object code from reading C++ file 'bridge.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../bridge.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'bridge.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_Bridge_t {
QByteArrayData data[5];
char stringdata0[46];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_Bridge_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_Bridge_t qt_meta_stringdata_Bridge = {
{
QT_MOC_LITERAL(0, 0, 6), // "Bridge"
QT_MOC_LITERAL(1, 7, 29), // "SendToTCPMeterControl_Connect"
QT_MOC_LITERAL(2, 37, 0), // ""
QT_MOC_LITERAL(3, 38, 2), // "IP"
QT_MOC_LITERAL(4, 41, 4) // "Prot"
},
"Bridge\0SendToTCPMeterControl_Connect\0"
"\0IP\0Prot"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_Bridge[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
1, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
1, // signalCount
// signals: name, argc, parameters, tag, flags
1, 2, 19, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QString, QMetaType::UShort, 3, 4,
0 // eod
};
void Bridge::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<Bridge *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->SendToTCPMeterControl_Connect((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< quint16(*)>(_a[2]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (Bridge::*)(QString , quint16 );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&Bridge::SendToTCPMeterControl_Connect)) {
*result = 0;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject Bridge::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_Bridge.data,
qt_meta_data_Bridge,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *Bridge::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *Bridge::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_Bridge.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int Bridge::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 1)
qt_static_metacall(this, _c, _id, _a);
_id -= 1;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 1)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 1;
}
return _id;
}
// SIGNAL 0
void Bridge::SendToTCPMeterControl_Connect(QString _t1, quint16 _t2)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t2))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'mychart1.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../chartPic/mychart1.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mychart1.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_myChart1_t {
QByteArrayData data[13];
char stringdata0[123];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_myChart1_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_myChart1_t qt_meta_stringdata_myChart1 = {
{
QT_MOC_LITERAL(0, 0, 8), // "myChart1"
QT_MOC_LITERAL(1, 9, 7), // "addData"
QT_MOC_LITERAL(2, 17, 0), // ""
QT_MOC_LITERAL(3, 18, 4), // "data"
QT_MOC_LITERAL(4, 23, 18), // "setUseAntialiasing"
QT_MOC_LITERAL(5, 42, 3), // "use"
QT_MOC_LITERAL(6, 46, 18), // "getUseAntialiasing"
QT_MOC_LITERAL(7, 65, 22), // "setHorizontalLineColor"
QT_MOC_LITERAL(8, 88, 3), // "clr"
QT_MOC_LITERAL(9, 92, 12), // "setShowPoint"
QT_MOC_LITERAL(10, 105, 4), // "show"
QT_MOC_LITERAL(11, 110, 8), // "setTitle"
QT_MOC_LITERAL(12, 119, 3) // "str"
},
"myChart1\0addData\0\0data\0setUseAntialiasing\0"
"use\0getUseAntialiasing\0setHorizontalLineColor\0"
"clr\0setShowPoint\0show\0setTitle\0str"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_myChart1[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
6, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 1, 44, 2, 0x0a /* Public */,
4, 1, 47, 2, 0x0a /* Public */,
6, 0, 50, 2, 0x0a /* Public */,
7, 1, 51, 2, 0x0a /* Public */,
9, 1, 54, 2, 0x0a /* Public */,
11, 1, 57, 2, 0x0a /* Public */,
// slots: parameters
QMetaType::Void, QMetaType::QReal, 3,
QMetaType::Void, QMetaType::Bool, 5,
QMetaType::Bool,
QMetaType::Void, QMetaType::QColor, 8,
QMetaType::Void, QMetaType::Bool, 10,
QMetaType::Void, QMetaType::QString, 12,
0 // eod
};
void myChart1::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<myChart1 *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->addData((*reinterpret_cast< qreal(*)>(_a[1]))); break;
case 1: _t->setUseAntialiasing((*reinterpret_cast< bool(*)>(_a[1]))); break;
case 2: { bool _r = _t->getUseAntialiasing();
if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = std::move(_r); } break;
case 3: _t->setHorizontalLineColor((*reinterpret_cast< const QColor(*)>(_a[1]))); break;
case 4: _t->setShowPoint((*reinterpret_cast< bool(*)>(_a[1]))); break;
case 5: _t->setTitle((*reinterpret_cast< const QString(*)>(_a[1]))); break;
default: ;
}
}
}
QT_INIT_METAOBJECT const QMetaObject myChart1::staticMetaObject = { {
&QWidget::staticMetaObject,
qt_meta_stringdata_myChart1.data,
qt_meta_data_myChart1,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *myChart1::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *myChart1::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_myChart1.stringdata0))
return static_cast<void*>(this);
return QWidget::qt_metacast(_clname);
}
int myChart1::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 6)
qt_static_metacall(this, _c, _id, _a);
_id -= 6;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 6)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 6;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'tcpcontrol.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../tcp_controller/tcpcontrol.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'tcpcontrol.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_TcpControl_t {
QByteArrayData data[5];
char stringdata0[45];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_TcpControl_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_TcpControl_t qt_meta_stringdata_TcpControl = {
{
QT_MOC_LITERAL(0, 0, 10), // "TcpControl"
QT_MOC_LITERAL(1, 11, 17), // "SendToBridge_data"
QT_MOC_LITERAL(2, 29, 0), // ""
QT_MOC_LITERAL(3, 30, 4), // "data"
QT_MOC_LITERAL(4, 35, 9) // "Tcp_start"
},
"TcpControl\0SendToBridge_data\0\0data\0"
"Tcp_start"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_TcpControl[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
2, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
1, // signalCount
// signals: name, argc, parameters, tag, flags
1, 1, 24, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
4, 0, 27, 2, 0x0a /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QByteArray, 3,
// slots: parameters
QMetaType::Void,
0 // eod
};
void TcpControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<TcpControl *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->SendToBridge_data((*reinterpret_cast< QByteArray(*)>(_a[1]))); break;
case 1: _t->Tcp_start(); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (TcpControl::*)(QByteArray );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TcpControl::SendToBridge_data)) {
*result = 0;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject TcpControl::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_TcpControl.data,
qt_meta_data_TcpControl,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *TcpControl::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *TcpControl::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_TcpControl.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int TcpControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 2)
qt_static_metacall(this, _c, _id, _a);
_id -= 2;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 2)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 2;
}
return _id;
}
// SIGNAL 0
void TcpControl::SendToBridge_data(QByteArray _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'tcpmetercontrol.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../tcp_controller/tcpmetercontrol.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'tcpmetercontrol.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_TCPMeterControl_t {
QByteArrayData data[11];
char stringdata0[163];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_TCPMeterControl_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_TCPMeterControl_t qt_meta_stringdata_TCPMeterControl = {
{
QT_MOC_LITERAL(0, 0, 15), // "TCPMeterControl"
QT_MOC_LITERAL(1, 16, 16), // "SendSelf_TrunkUp"
QT_MOC_LITERAL(2, 33, 0), // ""
QT_MOC_LITERAL(3, 34, 18), // "SendSelf_TrunkDown"
QT_MOC_LITERAL(4, 53, 13), // "SendSelf_Snap"
QT_MOC_LITERAL(5, 67, 32), // "SendToBridgeTCPMeterControl_Data"
QT_MOC_LITERAL(6, 100, 4), // "data"
QT_MOC_LITERAL(7, 105, 25), // "SendToWindows_ConnectIsOk"
QT_MOC_LITERAL(8, 131, 23), // "TCPMeterControl_Connect"
QT_MOC_LITERAL(9, 155, 2), // "IP"
QT_MOC_LITERAL(10, 158, 4) // "Prot"
},
"TCPMeterControl\0SendSelf_TrunkUp\0\0"
"SendSelf_TrunkDown\0SendSelf_Snap\0"
"SendToBridgeTCPMeterControl_Data\0data\0"
"SendToWindows_ConnectIsOk\0"
"TCPMeterControl_Connect\0IP\0Prot"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_TCPMeterControl[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
6, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
5, // signalCount
// signals: name, argc, parameters, tag, flags
1, 0, 44, 2, 0x06 /* Public */,
3, 0, 45, 2, 0x06 /* Public */,
4, 0, 46, 2, 0x06 /* Public */,
5, 1, 47, 2, 0x06 /* Public */,
7, 0, 50, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
8, 2, 51, 2, 0x0a /* Public */,
// signals: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QByteArray, 6,
QMetaType::Void,
// slots: parameters
QMetaType::Void, QMetaType::QString, QMetaType::UShort, 9, 10,
0 // eod
};
void TCPMeterControl::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<TCPMeterControl *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->SendSelf_TrunkUp(); break;
case 1: _t->SendSelf_TrunkDown(); break;
case 2: _t->SendSelf_Snap(); break;
case 3: _t->SendToBridgeTCPMeterControl_Data((*reinterpret_cast< QByteArray(*)>(_a[1]))); break;
case 4: _t->SendToWindows_ConnectIsOk(); break;
case 5: _t->TCPMeterControl_Connect((*reinterpret_cast< QString(*)>(_a[1])),(*reinterpret_cast< quint16(*)>(_a[2]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (TCPMeterControl::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TCPMeterControl::SendSelf_TrunkUp)) {
*result = 0;
return;
}
}
{
using _t = void (TCPMeterControl::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TCPMeterControl::SendSelf_TrunkDown)) {
*result = 1;
return;
}
}
{
using _t = void (TCPMeterControl::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TCPMeterControl::SendSelf_Snap)) {
*result = 2;
return;
}
}
{
using _t = void (TCPMeterControl::*)(QByteArray );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TCPMeterControl::SendToBridgeTCPMeterControl_Data)) {
*result = 3;
return;
}
}
{
using _t = void (TCPMeterControl::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TCPMeterControl::SendToWindows_ConnectIsOk)) {
*result = 4;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject TCPMeterControl::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_TCPMeterControl.data,
qt_meta_data_TCPMeterControl,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *TCPMeterControl::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *TCPMeterControl::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_TCPMeterControl.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int TCPMeterControl::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 6)
qt_static_metacall(this, _c, _id, _a);
_id -= 6;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 6)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 6;
}
return _id;
}
// SIGNAL 0
void TCPMeterControl::SendSelf_TrunkUp()
{
QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
}
// SIGNAL 1
void TCPMeterControl::SendSelf_TrunkDown()
{
QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
}
// SIGNAL 2
void TCPMeterControl::SendSelf_Snap()
{
QMetaObject::activate(this, &staticMetaObject, 2, nullptr);
}
// SIGNAL 3
void TCPMeterControl::SendToBridgeTCPMeterControl_Data(QByteArray _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 3, _a);
}
// SIGNAL 4
void TCPMeterControl::SendToWindows_ConnectIsOk()
{
QMetaObject::activate(this, &staticMetaObject, 4, nullptr);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
/****************************************************************************
** Meta object code from reading C++ file 'tcpmodel.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../tcp_modeller/tcpmodel.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'tcpmodel.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.13.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_TcpModel_t {
QByteArrayData data[6];
char stringdata0[73];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_TcpModel_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_TcpModel_t qt_meta_stringdata_TcpModel = {
{
QT_MOC_LITERAL(0, 0, 8), // "TcpModel"
QT_MOC_LITERAL(1, 9, 12), // "DataByHandle"
QT_MOC_LITERAL(2, 22, 0), // ""
QT_MOC_LITERAL(3, 23, 4), // "data"
QT_MOC_LITERAL(4, 28, 24), // "SendToBridge_MerterError"
QT_MOC_LITERAL(5, 53, 19) // "RecvFromBridge_data"
},
"TcpModel\0DataByHandle\0\0data\0"
"SendToBridge_MerterError\0RecvFromBridge_data"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_TcpModel[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
3, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: name, argc, parameters, tag, flags
1, 1, 29, 2, 0x06 /* Public */,
4, 0, 32, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
5, 1, 33, 2, 0x0a /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QString, 3,
QMetaType::Void,
// slots: parameters
QMetaType::Void, QMetaType::QByteArray, 3,
0 // eod
};
void TcpModel::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<TcpModel *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->DataByHandle((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 1: _t->SendToBridge_MerterError(); break;
case 2: _t->RecvFromBridge_data((*reinterpret_cast< QByteArray(*)>(_a[1]))); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (TcpModel::*)(QString );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TcpModel::DataByHandle)) {
*result = 0;
return;
}
}
{
using _t = void (TcpModel::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&TcpModel::SendToBridge_MerterError)) {
*result = 1;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject TcpModel::staticMetaObject = { {
&QObject::staticMetaObject,
qt_meta_stringdata_TcpModel.data,
qt_meta_data_TcpModel,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *TcpModel::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *TcpModel::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_TcpModel.stringdata0))
return static_cast<void*>(this);
return QObject::qt_metacast(_clname);
}
int TcpModel::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 3)
qt_static_metacall(this, _c, _id, _a);
_id -= 3;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 3)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 3;
}
return _id;
}
// SIGNAL 0
void TcpModel::DataByHandle(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
// SIGNAL 1
void TcpModel::SendToBridge_MerterError()
{
QMetaObject::activate(this, &staticMetaObject, 1, nullptr);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论