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.

105 lines
2.8 KiB
C++

#pragma once
#define ACTION_OPENFILE (CString)"OPEN_FILE;"//打开文件
#define ACTION_TANSPRODUCTINFO (CString)"TRANS_PRODUCT;" //传Product
#define ACTION_COLLECT (CString)"COLLECT_DATA;" //收集数据
#define ACTION_STARTWORK (CString)"START_WORK;" //标刻指定区域
#define ACTION_PAUSEWORK (CString)"PAUSE_WORK;" //标刻指定区域
#define ACTION_RESUMEWORK (CString)"RESUME_WORK;" //标刻指定区域
#define ACTION_EXITWORK (CString)"EXIT_WORK;" //标刻指定区域
//#define ACTION_TRANSFILE (CString)"TRANS_FILE;"//传文件
#define ACTION_SETSPECAILOBJ (CString)"SET_SPECAILOBJ;"//设置特殊对象
#define ACTION_BMARKSELOBJMODE (CString)"MARK_SELOBJMODE;"//设置选择加工模式
#define ACTION_SELECTOBJ (CString)"SELECT_OBJ;"//选择OBJ
#define TRACK_1 (CString)"TRACK1;"
#define TRACK_2 (CString)"TRACK2;"
#define NetData_MaxLen 1024*1024
enum CurRcvDataType//当前要接收的数据类型
{
DataType_String = 1, //接收文本
DataType_DXF, //接收DXF文件
DataType_MAK, //接收MAK文件
DataType_PAR, //接收MAK文件
DataType_CPRODUCT//接收Product对象
};
class CNetData
{
public:
CNetData ();
~CNetData ();
CurRcvDataType m_dataType;
bool SetData(CurRcvDataType DataType, int datalen, void* data);
char* m_Realdata;
int m_dataLen;
};
CNetData ::CNetData ()
{
m_Realdata = new char[NetData_MaxLen];
memset(m_Realdata, 0, NetData_MaxLen);
}
bool CNetData::SetData(CurRcvDataType DataType, int datalen,void* data)
{
m_dataType = DataType;
if (datalen>NetData_MaxLen)
{
return false;
}
memcpy(m_Realdata, data, datalen);
return true;
}
CNetData ::~CNetData ()
{
if (m_Realdata!=NULL)
{
delete[]m_Realdata;
m_Realdata = NULL;
}
}
// CServerMgr 命令目标
#include "DlgSW_XL_Flow.h"
#include "Product.h"
#include <vector>
#include <thread>
using namespace std;
class CServerMgr : public CSocket
{
public:
CServerMgr();
virtual ~CServerMgr();
bool StartServer(int ListenPort = 2404);//启动服务
bool StopServer();//启动服务
void SetDlg(CDlgSW_XL_Flow * pdlg) { m_Dlg = pdlg; };
void BroadCast(CString msg);//广播,向所有连接对象发送此消息
CString m_RcvFileName=NULL; //接收到的文件名
CProduct m_RcvProduct; //接收到的CProduct对象
int m_RcvAreaIndex; //接收到的当前加工区域
int m_RcvCurTrackIndex; //接收到的当前加工轨道
int m_curAreaDataCnt = 0; //当前加工区域数据量.
static vector<CServerMgr*> ServerVec;//服务员的容器
private:
virtual void OnAccept(int nErrorCode);
virtual void OnClose(int nErrorCode);
virtual void OnReceive(int nErrorCode);
static void DeleteClientObject(CServerMgr* pConn);
CurRcvDataType m_CurRcvDataType = DataType_String;//当前要接收的数据类型
CDlgSW_XL_Flow * m_Dlg;
thread m_workThread;
void StartMarkArea();
void PauseMark();
void ResumeMark();
void ExitMark();
};
extern CServerMgr * gServer;