|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "NetProtocol.h"
|
|
|
|
|
|
#include "QThread"
|
|
|
|
|
|
class IMainCallback;
|
|
|
|
|
|
/*
|
|
|
|
|
|
CWheelNet 网络通讯模块,解析和发送数据
|
|
|
|
|
|
调用框架的接口,接收数据进行解析,对需要发送的数据进行打包和发送
|
|
|
|
|
|
框架需要支持的网络通讯功能:
|
|
|
|
|
|
(1)支持获取当前服务器的IP地址和开放端口
|
|
|
|
|
|
(2)支持获取当前连接到服务器的客户端的IP地址和源端口
|
|
|
|
|
|
(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;
|
|
|
|
|
|
};
|
|
|
|
|
|
|