Add Tcpip Server
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#ifndef SO7_TCPIP_SERVER_H_INCLUDED_
|
||||
#define SO7_TCPIP_SERVER_H_INCLUDED_
|
||||
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#include <afxwin.h>
|
||||
#include <afxcmn.h>
|
||||
#include <Winsock2.h>
|
||||
#include "So7_TCPIP.h"
|
||||
|
||||
#define MAX_SOCKET 56
|
||||
#define PLC_MAX_SENSOR_STATE 20
|
||||
#define MAX_CCD_ADDR 120
|
||||
|
||||
enum OMRON_PLC_SENSOR
|
||||
{
|
||||
OMRON_PLC_CCD1_CAMERA1=0,
|
||||
OMRON_PLC_CCD1_CAMERA2,
|
||||
OMRON_PLC_CCD2_CAMERA1,
|
||||
OMRON_PLC_CCD2_CAMERA2,
|
||||
OMRON_PLC_CCD3_CAMERA1,
|
||||
OMRON_PLC_CCD3_CAMERA2,
|
||||
OMRON_PLC_CCD4_CAMERA1,
|
||||
OMRON_PLC_CCD4_CAMERA2,
|
||||
OMRON_PLC_CCD5_CAMERA1,
|
||||
OMRON_PLC_CCD5_CAMERA2,
|
||||
OMRON_PLC_LASER1_HEADA,
|
||||
OMRON_PLC_LASER1_HEADB,
|
||||
OMRON_PLC_LASER2_HEADA,
|
||||
OMRON_PLC_LASER2_HEADB,
|
||||
OMRON_PLC_LASER3_HEADA,
|
||||
OMRON_PLC_LASER3_HEADB,
|
||||
OMRON_PLC_LASER4_HEADA,
|
||||
OMRON_PLC_LASER4_HEADB,
|
||||
OMRON_PLC_LASER5_HEADA,
|
||||
OMRON_PLC_LASER5_HEADB,
|
||||
OMRON_PLC_SENSOR_TOTAL=PLC_MAX_SENSOR_STATE
|
||||
};
|
||||
struct s_tcpip_state
|
||||
{
|
||||
TCPIP_RETURN_CODE _SendReturnCode;
|
||||
TCPIP_RETURN_CODE _RecvReturnCode;
|
||||
bool _ConnectionSuccessful;
|
||||
bool _HandshakeSuccessful;
|
||||
bool _WriteDataCompleted;
|
||||
bool _ReadDataCompleted;
|
||||
int _PLCRunningState;
|
||||
BYTE _PLCSensorState[10];
|
||||
bool _PLCSensorTrigged[10];
|
||||
int _PCState;
|
||||
int _PCMeasureResult;
|
||||
s_tcpip_state()
|
||||
{
|
||||
_SendReturnCode=TCPIP_CONNECT_OK;
|
||||
_RecvReturnCode=TCPIP_CONNECT_OK;
|
||||
_ConnectionSuccessful=false;
|
||||
_HandshakeSuccessful=false;
|
||||
_WriteDataCompleted=true;
|
||||
_ReadDataCompleted=true;
|
||||
_PLCRunningState=0;
|
||||
for(int i=0;i<PLC_MAX_SENSOR_STATE;i++)
|
||||
{
|
||||
_PLCSensorState[i]=0;
|
||||
_PLCSensorTrigged[i]=false;
|
||||
}
|
||||
_PCState=0;
|
||||
_PCMeasureResult=0;
|
||||
};
|
||||
};
|
||||
//======================================================================================
|
||||
class CSo7_TCPIP_Server
|
||||
{
|
||||
public:
|
||||
CSo7_TCPIP_Server();
|
||||
virtual ~CSo7_TCPIP_Server();
|
||||
|
||||
static struct_so7_tcpip_buff m_TCPIPBuf[lChannelSize];
|
||||
s_tcpip_state m_TCPIPServerState;
|
||||
int m_CCDData[MAX_CCD_ADDR];
|
||||
|
||||
BOOL StartServer(HWND _hWnd,short _nPort);
|
||||
BOOL StopServer();
|
||||
BOOL _Send_Cmd_Write_State();
|
||||
BOOL Response_Handshake();
|
||||
BOOL Response_PLC_State(short _datasize);
|
||||
BOOL Response_Sensor_State(short _datasize);
|
||||
BOOL Response_CCD_DATA(short _Addr,short _datasize);
|
||||
|
||||
|
||||
LRESULT OnSocket(WPARAM wParam, LPARAM lParam);
|
||||
private:
|
||||
HWND m_hMsgWnd;
|
||||
|
||||
SOCKET m_Socket;
|
||||
SOCKET m_ClientSocket[MAX_SOCKET];
|
||||
int m_nClients;
|
||||
int m_nActiveClient;
|
||||
in_addr m_SreverIPAddress;
|
||||
u_short m_iServerPortNumber;
|
||||
int Init_Winsock();
|
||||
BOOL GetHostIPAddr(in_addr& _IPAddress);
|
||||
BOOL CreateAndListen();
|
||||
void CloseAllSocket();
|
||||
BOOL AddClient(SOCKET s);
|
||||
void RemoveClient(SOCKET s);
|
||||
BOOL UpdateActiveClient(SOCKET s);
|
||||
|
||||
void SendBuffer();
|
||||
void m_ClearSendBuf();
|
||||
|
||||
|
||||
|
||||
void m_ProcessSocketWriteEvent();
|
||||
void m_ProcessSocketReadEvent(SOCKET s);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user