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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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