Add Tcpip Server

This commit is contained in:
TAO Cheng
2014-11-11 16:40:22 +08:00
parent 0e4bb3e352
commit 70f6305ec7
11 changed files with 1076 additions and 24 deletions
@@ -12,6 +12,7 @@
#include <Winsock2.h>
#define WM_SOCKET WM_USER + 0x060
#define WM_TCPIP_RECV_DATA WM_USER + 0x061
#define WM_TCPIP_MSG WM_USER + 0x062
#define lChannelSize 2
#define CH_SEND 0
@@ -0,0 +1,529 @@
#include "StdAfx.h"
#include <WinDef.h>
#include <WinBase.h>
#include "So7_TCPIP_Server.h"
const int WSA_MAJOR_VERSION = 1;
const int WSA_MINOR_VERSION = 1;
#define WSA_VERSION MAKEWORD(WSA_MAJOR_VERSION, WSA_MINOR_VERSION)
#define SOCKADDR_LEN sizeof(SOCKADDR_IN)
const BYTE CommHeader[]={0x46,0x49,0x4E,0x53};
const BYTE HandShaking[]={0X46,0X49,0X4E,0X53,0X00,0X00,0X00,0X10,0X00,0X00,0X00,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,0X00,0X00,0X05};
const BYTE DRW_SData[]={0X46,0X49,0X4E,0X53,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X02,0X00,0X00,0X00,0X00,0XC0,0X00,0X02,0X00,0X03,0X00,0X00,0X05,0X00,0XFF,0X01,0X01,0X00,0X00};
const int DRW_SDataIndexDataSize=7;
const int DRW_SDataIndexData=30;
const int DRW_RDataIndexDA1=20;
const int DRW_RDataIndexSA1=23;
const int DRW_RDataIndexCMD1=26;
const int DRW_RDataIndexCMD2=27;
const int DRW_RDataIndexAddr1=29;
const int DRW_RDataIndexAddr2=30;
const int DRW_RDataIndexCh1=32;
const int DRW_RDataIndexCh2=33;
const int DRW_RDataIndexData=34;
const int DRW_RDataCCLen=0x1A;
const int DRW_RSDataIndexBufSize1=6;
const int DRW_RSDataIndexBufSize2=7;
struct_so7_tcpip_buff CSo7_TCPIP_Server::m_TCPIPBuf[lChannelSize];
//================================================================
CSo7_TCPIP_Server::CSo7_TCPIP_Server()
{
m_hMsgWnd=NULL;
m_Socket=INVALID_SOCKET;
m_SreverIPAddress;
m_iServerPortNumber=static_cast<u_short>(0);
for (int i=0;i<MAX_SOCKET;i++)
{
m_ClientSocket[i]=INVALID_SOCKET;
}
m_nClients=0;
for (int i=0;i<lChannelSize;i++)
{
m_TCPIPBuf[i]._size = 0;
m_TCPIPBuf[i]._CompletedSize = 0;
m_TCPIPBuf[i]._save_send_cmd = 99;
m_TCPIPBuf[i]._buffer = (char *)malloc(TCPIP_MAX_BUFF_SIZE);
m_TCPIPBuf[i]._hProtoPending = false;
m_TCPIPBuf[i]._event = NULL;
};
for(int i=0;i<MAX_CCD_ADDR;i++)
{
m_CCDData[i]=0;
}
}
//================================================================
CSo7_TCPIP_Server::~CSo7_TCPIP_Server()
{
StopServer();
for (int i=0;i<lChannelSize;i++)
{
free(m_TCPIPBuf[i]._buffer);
m_TCPIPBuf[i]._buffer=NULL;
}
}
//================================================================
int CSo7_TCPIP_Server::Init_Winsock()
{
int nRet;
static int first = TRUE;
if (first)
{
WSADATA stWSAData; /* WinSock DLL Info */
nRet = WSAStartup(WSA_VERSION, &stWSAData);
if (nRet)
{
return FALSE;
}
first = FALSE;
}
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::StartServer(HWND _hWnd,short _nPort)
{
int retVal=Init_Winsock();
retVal=Init_Winsock();
if(!retVal)
{
return FALSE;
}
m_iServerPortNumber=_nPort;
GetHostIPAddr(m_SreverIPAddress);
m_hMsgWnd=_hWnd;
CreateAndListen();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::StopServer()
{
if(m_Socket == INVALID_SOCKET)
{
return TCPIP_INVAILD_SOCKET;
}
closesocket(m_Socket);
m_Socket = INVALID_SOCKET;
return TCPIP_CONNECT_OK;
}
//================================================================
BOOL CSo7_TCPIP_Server::GetHostIPAddr(in_addr& _IPAddress)
{
static int first = TRUE;
if (first)
{
if(m_Socket == INVALID_SOCKET)
{
return TCPIP_INVAILD_SOCKET;
}
char HostName[100];
gethostname(HostName,sizeof(HostName));
hostent *pAddr;
pAddr=gethostbyname(HostName);
memcpy(&m_SreverIPAddress,pAddr->h_addr_list[0],sizeof(in_addr));
_IPAddress=m_SreverIPAddress;
first = FALSE;
}
_IPAddress=m_SreverIPAddress;
return TCPIP_CONNECT_OK;
}
//================================================================
BOOL CSo7_TCPIP_Server::CreateAndListen()
{
if(m_Socket == INVALID_SOCKET)
::closesocket(m_Socket);
// 创建套节字
m_Socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(m_Socket == INVALID_SOCKET)
return FALSE;
// 填写要关联的本地地址
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(m_iServerPortNumber);
sin.sin_addr.s_addr = INADDR_ANY;
// 绑定端口
if(::bind(m_Socket, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
{
return FALSE;
}
// 设置socket为窗口通知消息类型
::WSAAsyncSelect(m_Socket, m_hMsgWnd, WM_SOCKET, FD_ACCEPT|FD_CLOSE);
// 进入监听模式
::listen(m_Socket, 5);
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::AddClient(SOCKET s)
{
if(m_nClients < MAX_SOCKET)
{
m_ClientSocket[m_nClients++] = s;
return TRUE;
}
return FALSE;
}
//================================================================
void CSo7_TCPIP_Server::RemoveClient(SOCKET s)
{
BOOL bFind = FALSE;
int i(0);
for(i=0; i<m_nClients; i++)
{
if(m_ClientSocket[i] == s)
{
bFind = TRUE;
break;
}
}
// 如果找到就将此成员从列表中移除
if(bFind)
{
m_nClients--;
// 将此成员后面的成员都向前移动一个单位
for(int j=i; j<m_nClients; j++)
{
m_ClientSocket[j] = m_ClientSocket[j+1];
}
}
}
//================================================================
BOOL CSo7_TCPIP_Server::UpdateActiveClient(SOCKET s)
{
BOOL bFind = FALSE;
int i(0);
m_nActiveClient=0;
for(i=0; i<m_nClients; i++)
{
if(m_ClientSocket[i] == s)
{
bFind = TRUE;
m_nActiveClient=i;
break;
}
}
return bFind;
}
//================================================================
void CSo7_TCPIP_Server::CloseAllSocket()
{
// 关闭监听套节字
if(m_Socket != INVALID_SOCKET)
{
::closesocket(m_Socket);
m_Socket = INVALID_SOCKET;
}
// 关闭所有客户的连接
for(int i=0; i<m_nClients; i++)
{
::closesocket(m_ClientSocket[i]);
}
m_nClients = 0;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_Handshake()
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
memcpy(m_TCPIPBuf[CH_SEND]._buffer,HandShaking,sizeof(HandShaking));
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_PLC_State(short _datasize)
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
int iData=m_TCPIPServerState._PLCRunningState;
for (int i=0;i<_datasize;i++)
{
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(iData>>8) & 0x0ff;
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=iData & 0x0ff;
}
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData+2*_datasize);
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_Sensor_State(short _datasize)
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
for (int i=0;i<_datasize;i++)
{
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+i]=m_TCPIPServerState._PLCSensorState[i];
}
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData+2*_datasize);
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_CCD_DATA(short _Addr,short _datasize)
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
int iData(0);
for (int i=_Addr;i<_Addr+_datasize;i++)
{
iData=m_CCDData[i];
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(iData>>8) & 0x0ff;
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=iData & 0x0ff;
}
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData+2*_datasize);
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::_Send_Cmd_Write_State()
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
SendBuffer();
return TRUE;
}
//================================================================
LRESULT CSo7_TCPIP_Server::OnSocket(WPARAM wParam, LPARAM lParam)
{
// 取得有事件发生的套节字句柄
SOCKET s = wParam;
// 查看是否出错
int errorCode = WSAGETSELECTERROR(lParam);
if(errorCode)
{
RemoveClient(s);
::closesocket(s);
return errorCode;
}
int event = WSAGETSELECTEVENT(lParam);
switch(event)
{
case FD_ACCEPT:
{
if(m_nClients < MAX_SOCKET)
{
SOCKET client = ::accept(s, NULL, NULL);
::WSAAsyncSelect(client,m_hMsgWnd, WM_SOCKET, FD_READ|FD_WRITE|FD_CLOSE);
AddClient(client);
}
else
{
AfxMessageBox(_T("连接客户太多!"));
};
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_ACCEPT,0);
}
break;
case FD_READ:
{
UpdateActiveClient(s);
m_ProcessSocketReadEvent(s);
}
break;
case FD_WRITE:
//This event happens when the tcp buffers are ready for another send.
//So if there is not enough room for the first write the event will happen
//and then the buffers are ready for more.
m_ProcessSocketWriteEvent();
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_WRITE,0);
break;
case FD_CLOSE:
{
RemoveClient(s);
::closesocket(s);
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_CLOSE,0);
}
break;
}
return 0;
}
//================================================================
void CSo7_TCPIP_Server::m_ClearSendBuf(void)
{
int i;
for(i=0;i<TCPIP_MAX_BUFF_SIZE;i++)
{
m_TCPIPBuf[CH_SEND]._buffer[i] = 0x0;
}
m_TCPIPBuf[CH_SEND]._CompletedSize=0;
m_TCPIPBuf[CH_SEND]._size=0;
m_TCPIPBuf[CH_RECV]._CompletedSize=0;
m_TCPIPBuf[CH_RECV]._size=0;
}
//================================================================
void CSo7_TCPIP_Server::SendBuffer()
{
int errorCode, numBytesSent;
bool bInfinite=true;
while(bInfinite)
{
numBytesSent = send(m_ClientSocket[m_nActiveClient], &(m_TCPIPBuf[CH_SEND]._buffer[m_TCPIPBuf[CH_SEND]._CompletedSize]), m_TCPIPBuf[CH_SEND]._size-m_TCPIPBuf[CH_SEND]._CompletedSize, 0);
if(numBytesSent == SOCKET_ERROR)
{
errorCode = WSAGetLastError();
if(errorCode == WSAEWOULDBLOCK)
{
m_TCPIPBuf[CH_SEND]._hProtoPending=FALSE;
return; //Should get a FD_WRITE event if this happens. Send the rest from there.
}
m_TCPIPBuf[CH_SEND]._hProtoPending=FALSE;
return; //should check for other errors here, and set an error code or something.
}
else
{
m_TCPIPBuf[CH_SEND]._CompletedSize += numBytesSent;
}
if(m_TCPIPBuf[CH_SEND]._CompletedSize>=m_TCPIPBuf[CH_SEND]._size)
{
m_TCPIPBuf[CH_SEND]._size = 0;
m_TCPIPBuf[CH_SEND]._CompletedSize = 0;
m_TCPIPBuf[CH_SEND]._hProtoPending=FALSE;
break;
}
}
}
//================================================================
void CSo7_TCPIP_Server::m_ProcessSocketWriteEvent(void)
{
int errorCode, numBytesSent;
SOCKET s = m_Socket;
if(m_TCPIPBuf[CH_SEND]._size <= 0)
return;
char* sendBuf = m_TCPIPBuf[CH_SEND]._buffer;
while(1)
{
numBytesSent = send(s, &(sendBuf[m_TCPIPBuf[CH_SEND]._CompletedSize]), m_TCPIPBuf[CH_SEND]._size-m_TCPIPBuf[CH_SEND]._CompletedSize, 0);
if(numBytesSent == SOCKET_ERROR)
{
errorCode = WSAGetLastError();
if(errorCode == WSAEWOULDBLOCK)
{
return; //Should get a FD_WRITE event if this happens. Send the rest from there.
}
else
{
//showSocketError(errorCode);
return;
}
}
else
{
m_TCPIPBuf[CH_SEND]._CompletedSize += numBytesSent;
}
if(m_TCPIPBuf[CH_SEND]._CompletedSize>=m_TCPIPBuf[CH_SEND]._size)
{
m_TCPIPBuf[CH_SEND]._CompletedSize = 0;
m_ClearSendBuf();
break;
}
}
}
//================================================================
void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
{
int bytesReceived=0;
int errorCode;
bytesReceived = recv(s, &(m_TCPIPBuf[CH_RECV]._buffer[0]), TCPIP_MAX_BUFF_SIZE, 0);
if(bytesReceived == SOCKET_ERROR)
{
errorCode = WSAGetLastError();
if (errorCode == WSAEWOULDBLOCK)
{
//have to wait for the next receive event
return;
}
else
{
//showSocketError(errorCode);
return;
}
}
m_TCPIPBuf[CH_RECV]._CompletedSize += bytesReceived;
m_TCPIPBuf[CH_RECV]._size = m_TCPIPBuf[CH_RECV]._CompletedSize;
if (strstr(m_TCPIPBuf[CH_RECV]._buffer, "FINS"))
{
if (m_TCPIPBuf[CH_RECV]._buffer[7]==0x0C)//handshake
{
Response_Handshake();
}
else if (m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD1]==0x01
&&m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD2]==0x01)
{
short iAddr=(m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr1]<<8)+m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr2];
short iDataSize=(m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh1]<<8)+m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh2];
if (iAddr>=20000)
{
;//errcode
}
else if (iAddr>=10000)
{
Response_CCD_DATA((iAddr-10060),iDataSize);//ccd data
}
else if (iAddr>=8000)
{
Response_PLC_State(1);//WRITE PLC STATE
}
else if (iAddr>=5000)
{
;//READ PLC STATE
}
else
{
;
}
}
}
m_TCPIPBuf[CH_RECV]._CompletedSize = 0;
m_TCPIPBuf[CH_RECV]._hProtoPending=FALSE;
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_READ,0);
}
@@ -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
@@ -396,35 +396,37 @@ BEGIN
EDITTEXT IDC_EDIT_ZOOM_TIME,14,159,112,112,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
END
IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 290, 185
IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 290, 214
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Utility for SO7"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "SDK3000视频卡",IDC_RADIO_VIDEOCARD_SDK3000,"Button",BS_AUTORADIOBUTTON | WS_GROUP,24,32,69,10
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,24,48,69,10
CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,24,64,68,10
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,24,80,69,10
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,24,115,62,10
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,21,130,62,10
CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,100,32,76,10
CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,100,48,76,10
CONTROL "SDK3000视频卡",IDC_RADIO_VIDEOCARD_SDK3000,"Button",BS_AUTORADIOBUTTON | WS_GROUP,24,31,69,10
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,24,47,69,10
CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,24,63,68,10
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,24,79,69,10
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,24,111,62,10
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,24,127,62,10
CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,100,31,76,10
CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,100,47,76,10
CONTROL "LK_H激光(ETHERNET)",IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET,
"Button",BS_AUTORADIOBUTTON,100,64,85,10
CONTROL "LJ_G激光",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON,100,80,76,10
CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,100,96,76,10
CONTROL "STIL CCS-PRIMA",IDC_RADIO_ERT_CCS_PRIMA,"Button",BS_AUTORADIOBUTTON,100,112,76,10
"Button",BS_AUTORADIOBUTTON,100,63,85,10
CONTROL "LJ_G激光",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON,100,79,76,10
CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,100,95,76,10
CONTROL "STIL CCS-PRIMA",IDC_RADIO_ERT_CCS_PRIMA,"Button",BS_AUTORADIOBUTTON,100,111,76,10
CONTROL "控制器(USB",IDC_RADIO_CONTROLLER,"Button",BS_AUTORADIOBUTTON,195,31,69,10
CONTROL "控制器(USB R",IDC_RADIO_CONTROLLER2,"Button",BS_AUTORADIOBUTTON,195,47,75,10
CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,195,63,77,10
CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM,
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,168,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON,195,80,45,10
DEFPUSHBUTTON "OK",IDOK,145,164,50,14
PUSHBUTTON "Cancel",IDCANCEL,225,164,50,14
GROUPBOX "测试选项",IDC_STATIC,10,8,265,153
CONTROL "MV900视频卡",IDC_RADIO_VIDEOCARD_MV900,"Button",BS_AUTORADIOBUTTON,24,96,69,10
CONTROL "CJ2M PLC",IDC_RADIO_SO7_OMRON_PLC,"Button",BS_AUTORADIOBUTTON,101,129,62,10
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,197,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON,195,79,45,10
DEFPUSHBUTTON "OK",IDOK,145,193,50,14
PUSHBUTTON "Cancel",IDCANCEL,225,193,50,14
GROUPBOX "测试选项",IDC_STATIC,10,8,265,179
CONTROL "MV900视频卡",IDC_RADIO_VIDEOCARD_MV900,"Button",BS_AUTORADIOBUTTON,24,95,69,10
CONTROL "TCPIP Client(CJ2M PLC)",IDC_RADIO_SO7_OMRON_PLC,"Button",BS_AUTORADIOBUTTON,100,127,106,10
CONTROL "TCPIP Server(CJ2M PLC)",IDC_RADIO_SO7_OMRON_PLC_SERVER,
"Button",BS_AUTORADIOBUTTON,100,143,91,10
END
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
@@ -1059,6 +1061,34 @@ BEGIN
LTEXT "Size",IDC_STATIC,120,53,14,8
END
IDD_SO7_UTIL_PLC_TCPIP_SERVER DIALOGEX 0, 0, 558, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "PLC TCP/IP SERVER"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "Exit",IDCANCEL,512,305,39,14
GROUPBOX "TCP/IP Server Control",IDC_STATIC,17,12,87,81
PUSHBUTTON "Start",IDC_BUTTON_PLC_TCPIP_SERVER_START,28,32,63,18
PUSHBUTTON "Stop",IDC_BUTTON_PLC_TCPIP_SERVER_STOP,28,65,63,18
EDITTEXT IDC_EDIT_MSG,342,14,201,273,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATESTATE,277,70,40,14
GROUPBOX "DM DATA",IDC_STATIC,110,12,214,81
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_PLC_STATE,230,39,40,14,ES_AUTOHSCROLL
LTEXT "PLC STATE",IDC_STATIC,231,26,36,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER2,174,71,40,14,ES_AUTOHSCROLL
LTEXT "LASER1 STATE",IDC_STATIC,168,26,48,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD1,118,38,40,14,ES_AUTOHSCROLL
LTEXT "CCD1 STATE",IDC_STATIC,118,26,42,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1,174,39,40,14,ES_AUTOHSCROLL
LTEXT "LASER2 STATE",IDC_STATIC,168,59,48,8
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD2,118,71,40,14,ES_AUTOHSCROLL
LTEXT "CCD2 STATE",IDC_STATIC,118,59,42,8
PUSHBUTTON "Clear",IDC_BUTTON_CLEAR_MSG,453,305,39,14
CONTROL "",IDC_LIST_PLC_TCPIP_SERVER_CCDDATA,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,24,110,294,166
GROUPBOX "Static",IDC_STATIC,17,97,307,214
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA,277,291,40,14
END
/////////////////////////////////////////////////////////////////////////////
//
@@ -1096,7 +1126,7 @@ BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 275
TOPMARGIN, 6
BOTTOMMARGIN, 178
BOTTOMMARGIN, 207
END
IDD_SO7_VIDEOCARD_SDK3000, DIALOG
@@ -1247,6 +1277,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 244
END
IDD_SO7_UTIL_PLC_TCPIP_SERVER, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 551
TOPMARGIN, 7
BOTTOMMARGIN, 319
END
END
#endif // APSTUDIO_INVOKED
@@ -10,6 +10,7 @@
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\SO7_Proto_Aux.h"
#include "ProcessButton.h"
#include "EditableListCtrl.h"
#ifdef _RELEASE_FULL_VERSION
#include "VideoCardDefine.h"
@@ -56,7 +57,9 @@
#include "So7_XBoxController.h"
#include "..\..\..\SevenOcean\So7_TCPIP.h"
#include "..\..\..\SevenOcean\So7_TCPIP_Server.h"
#include "So7_Util_PLC_TCPIP.h"
#include "So7_Util_PLC_TCPIP_SERVER.h"
#include "So7_Option.h"
#include "afxdialogex.h"
@@ -79,6 +82,8 @@ CART_PCI8622* m_pART_PCI8622=NULL;
CSTIL_CCS_PRIMA_Laser* g_pSTIL_CCS_PRIMA=NULL;
CSo7_TCPIP* g_pSo7_TCPIP=NULL;
CSo7_TCPIP_Server* g_pSo7_TCPIP_Server=NULL;
// CSo7_Option dialog
IMPLEMENT_DYNAMIC(CSo7_Option, CDialog)
@@ -146,7 +151,8 @@ BOOL CSo7_Option::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->SetCheck(TRUE);
#ifdef _RELEASE_SO7_CONTROLER_ONLY
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->EnableWindow(FALSE);
@@ -449,6 +455,21 @@ void CSo7_Option::OnBnClickedOk()
g_pSo7_TCPIP=NULL;
}
}
else if(((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->GetCheck())
{
if (!g_pSo7_TCPIP_Server)
{
g_pSo7_TCPIP_Server=new CSo7_TCPIP_Server();
}
CSo7_Util_PLC_TCPIP_SERVER* pSo7_Util_PLC_TCPIP_SERVER=new CSo7_Util_PLC_TCPIP_SERVER();
pSo7_Util_PLC_TCPIP_SERVER->DoModal();
delete pSo7_Util_PLC_TCPIP_SERVER;
if (g_pSo7_TCPIP_Server)
{
delete g_pSo7_TCPIP_Server;
g_pSo7_TCPIP=NULL;
}
}
else if(((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->GetCheck())
{
CSO7_Verfication_Algorithm* pSO7_Verfication_Algorithm=new CSO7_Verfication_Algorithm();
@@ -0,0 +1,271 @@
// So7_Util_PLC_TCPIP_SERVER.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "EditableListCtrl.h"
#include "..\..\..\SevenOcean\So7_TCPIP_Server.h"
#include "So7_Util_PLC_TCPIP_SERVER.h"
#include "afxdialogex.h"
enum E_UPDATE_LIST_CONTROL_TYPE
{
E_LISTCTRL_TITLE,
E_LISTCTRL_CONTENT,
E_LISTCTRL_TOTAL
};
extern CSo7_TCPIP_Server* g_pSo7_TCPIP_Server;
// CSo7_Util_PLC_TCPIP_SERVER dialog
IMPLEMENT_DYNAMIC(CSo7_Util_PLC_TCPIP_SERVER, CDialog)
CSo7_Util_PLC_TCPIP_SERVER::CSo7_Util_PLC_TCPIP_SERVER(CWnd* pParent /*=NULL*/)
: CDialog(CSo7_Util_PLC_TCPIP_SERVER::IDD, pParent)
{
}
CSo7_Util_PLC_TCPIP_SERVER::~CSo7_Util_PLC_TCPIP_SERVER()
{
}
void CSo7_Util_PLC_TCPIP_SERVER::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_LIST_PLC_TCPIP_SERVER_CCDDATA, m_DataList);
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSo7_Util_PLC_TCPIP_SERVER, CDialog)
ON_BN_CLICKED(IDC_BUTTON_PLC_TCPIP_SERVER_START, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerStart)
ON_BN_CLICKED(IDC_BUTTON_PLC_TCPIP_SERVER_STOP, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerStop)
ON_BN_CLICKED(IDC_BUTTON_PLC_TCPIP_SERVER_UPDATESTATE, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerUpdatestate)
ON_BN_CLICKED(IDC_BUTTON_CLEAR_MSG, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonClearMsg)
ON_BN_CLICKED(IDCANCEL, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedCancel)
ON_MESSAGE(WM_SOCKET,&CSo7_Util_PLC_TCPIP_SERVER::OnSocket)
ON_MESSAGE(WM_TCPIP_MSG,&CSo7_Util_PLC_TCPIP_SERVER::OnTCPIPMsg)
ON_BN_CLICKED(IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerUpdatedata)
END_MESSAGE_MAP()
// CSo7_Util_PLC_TCPIP_SERVER message handlers
BOOL CSo7_Util_PLC_TCPIP_SERVER::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
CString str;
str.Format(_T("%d"),g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_CCD1_CAMERA1]);
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD1)->SetWindowTextW(str);
str.Format(_T("%d"),g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_CCD1_CAMERA2]);
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD2)->SetWindowTextW(str);
str.Format(_T("%d"),g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1]);
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1)->SetWindowTextW(str);
str.Format(_T("%d"),g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_CCD1_CAMERA1]);
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER2)->SetWindowTextW(str);
str.Format(_T("%d"),g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCRunningState);
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PLC_STATE)->SetWindowTextW(str);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerStart()
{
;// TODO: Add your control notification handler code here
}
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerStop()
{
;// TODO: Add your control notification handler code here
}
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerUpdatestate()
{
CString str;
UpdateData(TRUE);
USES_CONVERSION;
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD1)->GetWindowText(str);
const char* cTempValue=T2A(str);
g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_CCD1_CAMERA1]=static_cast<BYTE>(atoi(cTempValue));
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD2)->GetWindowText(str);
cTempValue=T2A(str);
g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_CCD1_CAMERA2]=static_cast<BYTE>(atoi(cTempValue));
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1)->GetWindowText(str);
cTempValue=T2A(str);
g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_LASER1_HEADA]=static_cast<BYTE>(atoi(cTempValue));
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER2)->GetWindowText(str);
cTempValue=T2A(str);
g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[OMRON_PLC_LASER2_HEADA]=static_cast<BYTE>(atoi(cTempValue));
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PLC_STATE)->GetWindowText(str);
cTempValue=T2A(str);
g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCRunningState=static_cast<BYTE>(atoi(cTempValue));
}
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerUpdatedata()
{
m_UpdateListControl(E_LISTCTRL_CONTENT);
}
//=====================================================================
void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
{
switch(_type)
{
case E_LISTCTRL_TITLE:
{
RECT m_rect;
m_DataList.GetClientRect(&m_rect); //获取list的客户区
m_DataList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //设置list风格
m_DataList.InsertColumn(0,_T("CCD地址"),LVCFMT_LEFT, m_rect.right*1/2);
m_DataList.InsertColumn(1,_T("数据值"),LVCFMT_LEFT, m_rect.right*1/2);
int iStartRow(0),iEndRow(0);
CString str;
iStartRow=0;
iEndRow=MAX_CCD_ADDR;
for (int i=iStartRow; i<iEndRow; i++)
{
str.Format(_T("%d"),120+i*4);
m_DataList.InsertItem(i,str);
m_DataList.SetItemText(i,0,str);
m_DataList.SetItemText(i,1,_T("0"));
}
m_DataList.SetEditableItemRange(0,MAX_CCD_ADDR-1,1,1);
m_DataList.SetColorStyleItemRange(0,MAX_CCD_ADDR-1,0,2);
break;
}
case E_LISTCTRL_CONTENT:
{
USES_CONVERSION;
CString csTmp;
const char* cTmp;
int iCol=1;
for (int iRow=0;iRow<MAX_CCD_ADDR;iRow++)
{
csTmp=m_DataList.GetItemText(iRow,iCol);
cTmp=T2A(csTmp);
if (g_pSo7_TCPIP_Server)
{
g_pSo7_TCPIP_Server->m_CCDData[iRow]=atoi(cTmp);
}
}
break;
}
default:break;
}
}
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonClearMsg()
{
((CEdit *)GetDlgItem(IDC_EDIT_MSG))->SetWindowTextW(_T(""));
}
//=====================================================================================
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedCancel()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
//=====================================================================================
//Print message on edit control
void CSo7_Util_PLC_TCPIP_SERVER::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
{
CString strOutput;
edtOutput.GetWindowText(strOutput);
strOutput += strNewText;
if ("\r\n" != strOutput.Right(2))
{
strOutput += "\r\n";
}
int iCount = strOutput.GetLength();
edtOutput.SetRedraw(FALSE);
edtOutput.SetWindowText(strOutput);
int iLine = edtOutput.GetLineCount();
edtOutput.LineScroll(iLine, 0);
edtOutput.SetSel(iCount, iCount);
edtOutput.SetRedraw(TRUE);
}
//=====================================================================================
LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnSocket(WPARAM w, LPARAM p)
{
LRESULT lResult=0;
if( g_pSo7_TCPIP_Server )
lResult = g_pSo7_TCPIP_Server->OnSocket(w,p);
return( lResult );
}
//=====================================================================================
LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnTCPIPMsg(WPARAM w, LPARAM p)
{
UNREFERENCED_PARAMETER(p);
LRESULT lResult=0;
switch(w)
{
case FD_ACCEPT:
{
m_csMSG=_T("FD_ACCEPT");
break;
}
case FD_READ:
{
m_csMSG=_T("FD_READ");
break;
}
case FD_WRITE:
{
m_csMSG=_T("FD_WRITE");
break;
}
case FD_CLOSE:
{
m_csMSG=_T("FD_CLOSE");
break;
}
default:
{
m_csMSG=_T("[Unknown]");
break;
}
}
m_csMSG+=_T(".");
OutputWithScroll(m_csMSG,m_edMSG);
return( lResult );
}
@@ -0,0 +1,40 @@
#pragma once
// CSo7_Util_PLC_TCPIP_SERVER dialog
class CSo7_Util_PLC_TCPIP_SERVER : public CDialog
{
DECLARE_DYNAMIC(CSo7_Util_PLC_TCPIP_SERVER)
public:
CSo7_Util_PLC_TCPIP_SERVER(CWnd* pParent = NULL); // standard constructor
virtual ~CSo7_Util_PLC_TCPIP_SERVER();
// Dialog Data
enum { IDD = IDD_SO7_UTIL_PLC_TCPIP_SERVER };
protected:
CString m_csMSG;
CEdit m_edMSG;
CEditableListCtrl m_DataList;
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButtonPlcTcpipServerStart();
afx_msg void OnBnClickedButtonPlcTcpipServerStop();
afx_msg void OnBnClickedButtonPlcTcpipServerUpdatestate();
afx_msg void OnBnClickedButtonClearMsg();
afx_msg void OnBnClickedCancel();
LRESULT OnSocket(WPARAM w, LPARAM p);
LRESULT OnTCPIPMsg(WPARAM w, LPARAM p);
afx_msg void OnBnClickedButtonPlcTcpipServerUpdatedata();
void m_UpdateListControl(int _type);
};
@@ -218,7 +218,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_RELEASE_SO7_CONTROLER_ONLY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;_RELEASE_SO7_CONTROLER_ONLY;_REMOVE_DLLCHR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -324,6 +324,7 @@
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto.cpp" />
<ClCompile Include="..\..\..\SevenOcean\SO7_Proto_Aux.cpp" />
<ClCompile Include="..\..\..\SevenOcean\So7_TCPIP.cpp" />
<ClCompile Include="..\..\..\SevenOcean\So7_TCPIP_Server.cpp" />
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp" />
<ClCompile Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.cpp" />
<ClCompile Include="..\..\..\Tesa\TesaStarE.cpp" />
@@ -368,6 +369,7 @@
<ClCompile Include="So7_Util_External_Trig.cpp" />
<ClCompile Include="So7_Util_ImageDll.cpp" />
<ClCompile Include="So7_Util_PLC_TCPIP.cpp" />
<ClCompile Include="So7_Util_PLC_TCPIP_SERVER.cpp" />
<ClCompile Include="So7_Util_Program.cpp" />
<ClCompile Include="SO7_Verfication_Algorithm.cpp" />
<ClCompile Include="SO7_VolComp.cpp" />
@@ -417,6 +419,7 @@
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto.h" />
<ClInclude Include="..\..\..\SevenOcean\SO7_Proto_Aux.h" />
<ClInclude Include="..\..\..\SevenOcean\So7_TCPIP.h" />
<ClInclude Include="..\..\..\SevenOcean\So7_TCPIP_Server.h" />
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h" />
<ClInclude Include="..\..\..\Tesa\TesaStarE.h" />
<ClInclude Include="..\..\..\Videocard\SDK3000\sdk3000_7130.h" />
@@ -461,6 +464,7 @@
<ClInclude Include="So7_Util_External_Trig.h" />
<ClInclude Include="So7_Util_ImageDll.h" />
<ClInclude Include="So7_Util_PLC_TCPIP.h" />
<ClInclude Include="So7_Util_PLC_TCPIP_SERVER.h" />
<ClInclude Include="So7_Util_Program.h" />
<ClInclude Include="SO7_Verfication_Algorithm.h" />
<ClInclude Include="SO7_VolComp.h" />
@@ -229,6 +229,12 @@
<ClCompile Include="..\..\..\SevenOcean\So7_TCPIP.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\SevenOcean\So7_TCPIP_Server.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_Util_PLC_TCPIP_SERVER.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CaptureDataDlg.h">
@@ -492,6 +498,12 @@
<ClInclude Include="So7_Util_PLC_TCPIP.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\..\SevenOcean\So7_TCPIP_Server.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_Util_PLC_TCPIP_SERVER.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
@@ -756,6 +756,8 @@
#define IDC_RADIO_TC4000_CHANNEL2 1605
#define IDC_RADIO_SO7_OMRON_PLC 1605
#define IDC_RADIO_TC4000_CHANNEL3 1606
#define IDC_RADIO_SO7_OMRON_PLC2 1606
#define IDC_RADIO_SO7_OMRON_PLC_SERVER 1606
#define IDC_RADIO_TC4000_CHANNEL4 1607
#define IDC_RADIO_SV2000E_CHANNEL1 1608
#define IDC_RADIO_SV2000E_CHANNEL2 1609
@@ -876,6 +878,7 @@
#define IDD_DIALOG_STIL_CCS_PRIMA 1722
#define IDD_SO7_VIDEOCARD_MV900 1723
#define IDD_SO7_UTIL_PLC_TCPIP 1724
#define IDD_SO7_UTIL_PLC_TCPIP_SERVER 1725
#define IDC_RADIO_SPEED_SLOW 1770
#define IDC_RADIO_SCALE 1772
#define IDC_EDIT_SPEED_X 1773
@@ -1055,8 +1058,20 @@
#define IDC_EDIT_MSG 1888
#define IDC_EDIT_PLC_TCPIP_Data 1889
#define IDC_BUTTON_PLC_TCPIP_HANDSHAKING 1890
#define IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER1 1890
#define IDC_EDIT_PLC_TCPIP_ADDR2 1891
#define IDC_EDIT_PLC_TCPIP_DATA_SIZE 1891
#define IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD1 1892
#define IDC_EDIT_PLC_TCPIP_SERVER_STATE_LASER2 1893
#define IDC_EDIT_PLC_TCPIP_SERVER_STATE_CCD2 1894
#define IDC_BUTTON_PLC_TCPIP_SERVER_START 1895
#define IDC_BUTTON_PLC_TCPIP_SERVER_STOP 1896
#define IDC_BUTTON_PLC_TCPIP_SERVER_UPDATESTATE 1897
#define IDC_BUTTON_CLEAR_MSG 1898
#define IDC_EDIT_PLC_TCPIP_SERVER_PLC_STATE 1899
#define IDC_BUTTON_PLC_TCPIP_SERVER_UPDATESTATE2 1900
#define IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA 1900
#define IDC_LIST_PLC_TCPIP_SERVER_CCDDATA 1902
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -1066,7 +1081,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 193
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1889
#define _APS_NEXT_CONTROL_VALUE 1903
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif