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/tpMain/WheelNet.h

92 lines
3.5 KiB
C

#pragma once
#include "NetProtocol.h"
#include "QThread"
class IMainCallback;
/*
CWheelNet
1IP
2IP
3
4
*/
enum EM_HEAD_TYPE {
emTypePulse = 1, emTypeLib, emTypeResult, emTypeThickness,
emTypeTrig, emTypeClear, emTypeLight, emTypeDetState, emTypeCheckDete,
emTypeInitDone, emTypePLCUpdate, emTypeModelnum, emTypeChangeOnline,
emTypeWriteDisOnlineModels, emTypeReadOnlineModels, emTypeResultChannel, emTypeTriger, emAngleRst , emShutDown
};
class CWheelNet : public QObject, public NetProtocol
{
Q_OBJECT
public:
CWheelNet(QString strRoot);
~CWheelNet();
Q_SLOT void onOpenServer(QString IPAddr, int port);
Q_SLOT void onOpenServer();
Q_SLOT void onCloseServer();
Q_SLOT void onSendDataByType(int nType, QVariantMap nMap);
private:
Q_SLOT void DataRecvByte(QByteArray m_data);
Q_SLOT void onConnect(QVariantMap vMap);
public:
void sendModelInitDone();
void sendPulse(int nInterval, int nState, int nOnline);
void sendModelList(int nIndex, QString strModel, double dDiameter, double dHeight);
void sendDetectResult(QString strModel, double dHeight, double dDiameter);
void sendResultChannel(int nChannelValue, double dHeight, double dDiameter, QString str = QString());
void sendThickness();
void sendTrig();//发送清空触发计数
void sendClearLib();
void sendModelNum(int nCount);
void sendLight(int nLightType, int nTimes, int nUpTimes, int nDownTimes);
void sendDeteStateList(int nIndex, int nIsDetect, QString strModel);
void sendCheckDeteStateList(int nIndex, int nIsDetect, QString strModel);
void sendCheckAllModelState(); //查询检测在线检测状态 10s发一次
void sendClearDisLibs();//清除下位机离线库
void sendDisLibs(int nIndex, QString strModel);
void sendDisLibsDone();
void sendTrigerPara(int nSignal, int nCamTriger, int nCamPulse, int nLight, int nTrigerType = 0, int nResHoldTime=1500);
signals:
void sgRecvTrigPara();
void sgPulseRev();//心跳包应答信号发送
void sgResultRev();//检测结果发送应答发送
void sgRecv(const QString &);
void sgThickness(double);//光栅查询的应答
void sgLibRev(bool);//发送库的应答
void sgClearRev(bool);//发送清空库的应答
void sgDeteState(bool);//发送离线时的检测状态的应答
void sgChangeOnlineState(int);//强制改变离线、在线状态
void sgRecvDetectState(int nIndex, int value);//在线时接收检测状态
void sgCameraTrig(int,double);//PLC触发相机时主动上报
void sgShow2UI(QString str, bool bConnect);
void sgClientConnect(QString addr, bool bConnect);
void sgServerState(QString, int, bool);//用来传送server打开 关闭状态
void sgReadDetectState(int nIndex, QString StrModelName);//在线应答信号
void sgClearDisLibASK();
void sgSendDisLibASK(bool);
void sgReadDetectStateASK();
void sgShutDownComputer();
void sgSendData2Dv(QString,QByteArray);
public:
void onShowIpDlg(QWidget* parent);
QString getIp(EM_NET_TYPE type) const;
QString getPort(EM_NET_TYPE type) const;
private:
bool loadNet();
bool loadIpConfig();
bool saveIpConfig();
void sendData(QString strData);
bool sendDataFrame(QString strData);
private:
class INet4Wheel *m_pNet4Wheel;
class IPConfig *m_pIpConfig;
QString m_strRoot;
};