模拟PLC操作。
This commit is contained in:
@@ -12,7 +12,8 @@ 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,0X16,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_SDataIndexDataSize1=6;
|
||||
const int DRW_SDataIndexDataSize2=7;
|
||||
const int DRW_SDataHeadDataSize=8;
|
||||
const int DRW_SDataIndexData=30;
|
||||
|
||||
@@ -58,16 +59,17 @@ CSo7_TCPIP_Server::CSo7_TCPIP_Server()
|
||||
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]._buffer = (char *)malloc(sizeof(char)*TCPIP_MAX_BUFF_SIZE);
|
||||
m_TCPIPBuf[i]._hProtoPending = false;
|
||||
m_TCPIPBuf[i]._event = NULL;
|
||||
};
|
||||
DM5000= (short *)malloc(MAX_DM_PAGE_NUMBER);
|
||||
DM8000= (short *)malloc(MAX_DM_PAGE_NUMBER);
|
||||
DM10000= (short *)malloc(MAX_DM_PAGE_NUMBER);
|
||||
memset(DM5000,0,MAX_DM_PAGE_NUMBER);
|
||||
memset(DM8000,0,MAX_DM_PAGE_NUMBER);
|
||||
memset(DM10000,0,MAX_DM_PAGE_NUMBER);
|
||||
DM5000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
DM8000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
DM10000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
memset(DM5000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
memset(DM8000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
memset(DM10000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
|
||||
m_TCPIPMsg.Init();
|
||||
}
|
||||
|
||||
|
||||
@@ -326,7 +328,10 @@ BOOL CSo7_TCPIP_Server::Response_PLC_DM5000_R(short _StartAddr,short _DataSize)
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(sData>>8) & 0x0ff;
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=sData & 0x0ff;
|
||||
}
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
|
||||
short sDataSize(0);
|
||||
sDataSize=(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize1]=static_cast<char>((sDataSize>>8) & 0x0ff);
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize2]=static_cast<char>(sDataSize & 0x0ff);
|
||||
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
|
||||
|
||||
SendBuffer();
|
||||
@@ -355,7 +360,10 @@ BOOL CSo7_TCPIP_Server::Response_PLC_DM10000_R(short _StartAddr,short _DataSize)
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(sData>>8) & 0x0ff;
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=sData & 0x0ff;
|
||||
}
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
|
||||
short sDataSize(0);
|
||||
sDataSize=(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize1]=static_cast<char>((sDataSize>>8) & 0x0ff);
|
||||
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize2]=static_cast<char>(sDataSize & 0x0ff);
|
||||
|
||||
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
|
||||
|
||||
@@ -539,14 +547,13 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
|
||||
}
|
||||
m_TCPIPBuf[CH_RECV]._CompletedSize += bytesReceived;
|
||||
m_TCPIPBuf[CH_RECV]._size = m_TCPIPBuf[CH_RECV]._CompletedSize;
|
||||
int iPara(0);
|
||||
|
||||
m_TCPIPMsg.Init();
|
||||
if (strstr(m_TCPIPBuf[CH_RECV]._buffer, "FINS"))
|
||||
{
|
||||
if (m_TCPIPBuf[CH_RECV]._buffer[7]==0x0C)//handshake
|
||||
{
|
||||
Response_Handshake();
|
||||
iPara=RESPONSE_HANDSHAKE;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_HANDSHAKE;
|
||||
}
|
||||
else if (m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD1]==0x01
|
||||
&&m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD2]==0x01)
|
||||
@@ -560,25 +567,32 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
|
||||
bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh1];
|
||||
bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh2];
|
||||
iDataSize=(bData[0]<<8)+bData[1];
|
||||
|
||||
m_TCPIPMsg._CmdType=0;
|
||||
m_TCPIPMsg._DataAddr=iAddr;
|
||||
m_TCPIPMsg._DataSize=iDataSize;
|
||||
if (iAddr>=20000)
|
||||
{
|
||||
iPara=RESPONSE_READ_ERRCODE;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_READ_ERRCODE;
|
||||
}
|
||||
else if (iAddr>=10000)
|
||||
{
|
||||
Response_PLC_DM10000_R(iAddr,iDataSize);
|
||||
iPara=RESPONSE_READ_CCD_DATA;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_READ_CCD_DATA;
|
||||
}
|
||||
else if (iAddr>=5100)
|
||||
{
|
||||
Response_PLC_DM5000_R(iAddr,iDataSize);
|
||||
m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_CALIB_POS;
|
||||
}
|
||||
else if (iAddr>=5000)
|
||||
{
|
||||
Response_PLC_DM5000_R(iAddr,iDataSize);
|
||||
iPara=RESPONSE_READ_PLC_STATE;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_STATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
RESPONSE_PLC_DM_UNKNOWN();
|
||||
iPara=RESPONSE_UNKNOWN;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
else if (m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD1]==0x01
|
||||
@@ -593,6 +607,9 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
|
||||
bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh1];
|
||||
bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh2];
|
||||
iDataSize=(bData[0]<<8)+bData[1];
|
||||
m_TCPIPMsg._CmdType=1;
|
||||
m_TCPIPMsg._DataAddr=iAddr;
|
||||
m_TCPIPMsg._DataSize=iDataSize;
|
||||
if (iAddr>=8000)
|
||||
{
|
||||
int iBuffsize(0);
|
||||
@@ -608,23 +625,27 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
|
||||
bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexData+i+1];
|
||||
DM8000[iStartAddr++]=(bData[0]<<8)+bData[1];
|
||||
}
|
||||
m_TCPIPMsg._UpdateData=1;
|
||||
if (DM8000[2]==1)
|
||||
{
|
||||
DM5000[0]=1;
|
||||
m_TCPIPMsg._UpdateData=2;
|
||||
}
|
||||
RESPONSE_PLC_DM_UNKNOWN();
|
||||
iPara=RESPONSE_WRITE_PLC_STATE;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_WRITE_PLC_STATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
RESPONSE_PLC_DM_UNKNOWN();
|
||||
iPara=RESPONSE_UNKNOWN;
|
||||
m_TCPIPMsg._MsgType=RESPONSE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
m_TCPIPBuf[CH_RECV]._CompletedSize = 0;
|
||||
m_TCPIPBuf[CH_RECV]._hProtoPending=FALSE;
|
||||
|
||||
if (iPara!=RESPONSE_READ_PLC_STATE)
|
||||
if (m_TCPIPMsg._MsgType!=RESPONSE_READ_PLC_STATE)
|
||||
{
|
||||
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_READ,iPara);
|
||||
::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_READ,LPARAM(&m_TCPIPMsg));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ enum TCPIP_RESPONSE_RESULT
|
||||
RESPONSE_UNKNOWN=0,
|
||||
RESPONSE_HANDSHAKE,
|
||||
RESPONSE_READ_PLC_STATE,
|
||||
RESPONSE_READ_PLC_CALIB_POS,
|
||||
RESPONSE_WRITE_PLC_STATE,
|
||||
RESPONSE_READ_SENSOR_STATE,
|
||||
RESPONSE_READ_CCD_DATA,
|
||||
@@ -86,6 +87,27 @@ struct s_tcpip_state
|
||||
_PCMeasureResult=0;
|
||||
};
|
||||
};
|
||||
|
||||
struct s_tcpip_msg_data
|
||||
{
|
||||
int _MsgType;
|
||||
int _CmdType;
|
||||
int _DataAddr;
|
||||
int _DataSize;
|
||||
int _UpdateData;
|
||||
void Init()
|
||||
{
|
||||
_MsgType=0;
|
||||
_CmdType=0;
|
||||
_DataAddr=0;
|
||||
_DataSize=0;
|
||||
_UpdateData=0;
|
||||
};
|
||||
s_tcpip_msg_data()
|
||||
{
|
||||
Init();
|
||||
};
|
||||
};
|
||||
//======================================================================================
|
||||
class CSo7_TCPIP_Server
|
||||
{
|
||||
@@ -95,7 +117,7 @@ public:
|
||||
|
||||
static struct_so7_tcpip_buff m_TCPIPBuf[lChannelSize];
|
||||
static s_tcpip_state m_TCPIPServerState;
|
||||
|
||||
s_tcpip_msg_data m_TCPIPMsg;
|
||||
short *DM5000;
|
||||
short *DM8000;
|
||||
short *DM10000;
|
||||
|
||||
@@ -1093,7 +1093,7 @@ BEGIN
|
||||
PUSHBUTTON "Update",IDC_BUTTON_PLC_TCPIP_SERVER_UPDATEDATA,277,294,40,14
|
||||
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER,51,30,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Port",IDC_STATIC,29,33,14,8
|
||||
CONTROL "CCD DM",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,32,110,42,10
|
||||
CONTROL "CCD1 DM",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,32,110,46,10
|
||||
CONTROL "DM 5000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000,"Button",BS_AUTORADIOBUTTON,93,110,44,10
|
||||
CONTROL "DM 8000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000,"Button",BS_AUTORADIOBUTTON,156,110,44,10
|
||||
END
|
||||
|
||||
+256
-117
@@ -23,8 +23,8 @@ extern CSo7_TCPIP_Server* g_pSo7_TCPIP_Server;
|
||||
|
||||
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(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSo7_Util_PLC_TCPIP_SERVER::IDD, pParent)
|
||||
{
|
||||
for(int i=0;i<MAX_CCD_ADDR;i++)
|
||||
{
|
||||
@@ -38,7 +38,7 @@ CSo7_Util_PLC_TCPIP_SERVER::~CSo7_Util_PLC_TCPIP_SERVER()
|
||||
|
||||
void CSo7_Util_PLC_TCPIP_SERVER::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EDIT_MSG, m_edMSG);
|
||||
DDX_Control(pDX, IDC_LIST_PLC_TCPIP_SERVER_CCDDATA, m_DataList);
|
||||
|
||||
@@ -85,104 +85,178 @@ BOOL CSo7_Util_PLC_TCPIP_SERVER::OnInitDialog()
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
if (g_pSo7_TCPIP_Server)
|
||||
{
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER)->SetWindowTextW(_T("9600"));
|
||||
int i(0);
|
||||
m_CCDData_D10000[i++]=25000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=20000;
|
||||
m_CCDData_D10000[i++]=102000;
|
||||
m_CCDData_D10000[i++]=3000;
|
||||
m_CCDData_D10000[i++]=4000;
|
||||
m_CCDData_D10000[i++]=204000;
|
||||
m_CCDData_D10000[i++]=5000;
|
||||
m_CCDData_D10000[i++]=6000;
|
||||
m_CCDData_D10000[i++]=7000;
|
||||
m_CCDData_D10000[i++]=8000;
|
||||
m_CCDData_D10000[i++]=303000;
|
||||
m_CCDData_D10000[i++]=9000;
|
||||
m_CCDData_D10000[i++]=9000;
|
||||
m_CCDData_D10000[i++]=5000;
|
||||
m_CCDData_D10000[i++]=406000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=30000;
|
||||
m_CCDData_D10000[i++]=30000;
|
||||
m_CCDData_D10000[i++]=50000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
if (g_pSo7_TCPIP_Server)
|
||||
{
|
||||
int iData(0);
|
||||
BYTE DM_Data[4]={0,0,0,0};
|
||||
int StartAddr(60);
|
||||
for (int i=0;i<MAX_CCD_ADDR;i++)
|
||||
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER)->SetWindowTextW(_T("9600"));
|
||||
int i(0);
|
||||
m_CCDData_D10000[i++]=25000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=1000;
|
||||
m_CCDData_D10000[i++]=20000;
|
||||
m_CCDData_D10000[i++]=102000;
|
||||
m_CCDData_D10000[i++]=3000;
|
||||
m_CCDData_D10000[i++]=4000;
|
||||
m_CCDData_D10000[i++]=204000;
|
||||
m_CCDData_D10000[i++]=5000;
|
||||
m_CCDData_D10000[i++]=6000;
|
||||
m_CCDData_D10000[i++]=7000;
|
||||
m_CCDData_D10000[i++]=8000;
|
||||
m_CCDData_D10000[i++]=303000;
|
||||
m_CCDData_D10000[i++]=9000;
|
||||
m_CCDData_D10000[i++]=9000;
|
||||
m_CCDData_D10000[i++]=5000;
|
||||
m_CCDData_D10000[i++]=406000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
m_CCDData_D10000[i++]=30000;
|
||||
m_CCDData_D10000[i++]=30000;
|
||||
m_CCDData_D10000[i++]=50000;
|
||||
m_CCDData_D10000[i++]=10000;
|
||||
if (g_pSo7_TCPIP_Server)
|
||||
{
|
||||
iData=m_CCDData_D10000[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
g_pSo7_TCPIP_Server->DM10000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM10000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
}
|
||||
if (g_pSo7_TCPIP_Server)
|
||||
{
|
||||
int iDM5000DWord[140]={0};
|
||||
int index(0);
|
||||
for (int i=0;i<140;i++)
|
||||
{
|
||||
iDM5000DWord[i]=0;
|
||||
int iData(0);
|
||||
BYTE DM_Data[4]={0,0,0,0};
|
||||
int StartAddr(60);
|
||||
for (int i=0;i<MAX_CCD_ADDR;i++)
|
||||
{
|
||||
iData=m_CCDData_D10000[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
g_pSo7_TCPIP_Server->DM10000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM10000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
}
|
||||
iDM5000DWord[index++]=1;
|
||||
iDM5000DWord[index++]=10000;
|
||||
index=7;
|
||||
iDM5000DWord[index++]=1;
|
||||
iDM5000DWord[index++]=20000;
|
||||
|
||||
int iData(0);
|
||||
BYTE DM_Data[4]={0,0,0,0};
|
||||
index=9;
|
||||
g_pSo7_TCPIP_Server->DM5000[index]=0;
|
||||
int StartAddr(100);
|
||||
|
||||
for (int i=0;i<140;i++)
|
||||
if (g_pSo7_TCPIP_Server)
|
||||
{
|
||||
iData=iDM5000DWord[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
}
|
||||
int iData(0);
|
||||
BYTE DM_Data[4]={0,0,0,0};
|
||||
int StartAddr(0);
|
||||
int index(0);
|
||||
int iDM5000DWord[150]={0};
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iDM5000DWord[i]=0;
|
||||
}
|
||||
StartAddr=100;
|
||||
index=0;
|
||||
for (int i=0;i<10;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=1;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=7*(i+1);
|
||||
}
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=1;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=7*(i+11);
|
||||
}
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iData=iDM5000DWord[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
|
||||
m_DMAddrList=DM_ADDR_CCD;
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000))->SetCheck(FALSE);
|
||||
m_UpdateListControl(E_LISTCTRL_CREATE);
|
||||
m_UpdateListControl(E_LISTCTRL_TITLE);
|
||||
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
|
||||
m_UpdateControls(FALSE);
|
||||
UpdateData(FALSE);
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
|
||||
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iDM5000DWord[i]=0;
|
||||
}
|
||||
StartAddr=400;
|
||||
index=0;
|
||||
for (int i=0;i<10;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=3*(i+1);
|
||||
}
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=3*(i+11);
|
||||
}
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iData=iDM5000DWord[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
|
||||
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iDM5000DWord[i]=0;
|
||||
}
|
||||
StartAddr=500;
|
||||
index=0;
|
||||
for (int i=0;i<10;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=3*(i+1);
|
||||
}
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
iDM5000DWord[index++]=(i+1)*10000;
|
||||
index=3*(i+11);
|
||||
}
|
||||
for (int i=0;i<150;i++)
|
||||
{
|
||||
iData=iDM5000DWord[i];
|
||||
DM_Data[0]=(iData>>24) & 0x0ff;
|
||||
DM_Data[1]=(iData>>16) & 0x0ff;
|
||||
DM_Data[2]=(iData>>8) & 0x0ff;
|
||||
DM_Data[3]=iData & 0x0ff;
|
||||
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i]=(DM_Data[2]<<8)+DM_Data[3];
|
||||
g_pSo7_TCPIP_Server->DM5000[StartAddr+2*i+1]=(DM_Data[0]<<8)+DM_Data[1];
|
||||
}
|
||||
}
|
||||
|
||||
m_DMAddrList=DM_ADDR_CCD;
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM))->SetCheck(TRUE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000))->SetCheck(FALSE);
|
||||
((CButton *)GetDlgItem(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000))->SetCheck(FALSE);
|
||||
m_UpdateListControl(E_LISTCTRL_CREATE);
|
||||
m_UpdateListControl(E_LISTCTRL_TITLE);
|
||||
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
|
||||
m_UpdateControls(FALSE);
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
@@ -352,7 +426,7 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
|
||||
|
||||
m_DataList.InsertColumn(0,_T("CCD地址"),LVCFMT_LEFT, m_rect.right*1/4);
|
||||
m_DataList.InsertColumn(1,_T("数据值"),LVCFMT_LEFT, m_rect.right*1/4);
|
||||
m_DataList.InsertColumn(2,_T("备注"),LVCFMT_LEFT, m_rect.right*2/4);
|
||||
m_DataList.InsertColumn(2,_T("备注"),LVCFMT_LEFT, m_rect.right*3/2);
|
||||
int iStartRow(0),iEndRow(0);
|
||||
CString str;
|
||||
|
||||
@@ -417,7 +491,7 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
|
||||
m_DataList.SetItemText(i,2,_T(""));
|
||||
}
|
||||
int Addr(0);
|
||||
m_DataList.SetItemText(Addr++,2,_T("PLC设备运行状态(0-空闲,1-后退,2-前进,3-故障,4-编辑)"));
|
||||
m_DataList.SetItemText(Addr++,2,_T("PLC设备运行状态(0-未知,1-空闲,2-后退(开始测量),3-前进(测量结束),4-故障,5-参数编辑)"));
|
||||
m_DataList.SetItemText(Addr++,2,_T("CCD1数据刷新"));
|
||||
m_DataList.SetItemText(Addr++,2,_T("CCD2数据刷新"));
|
||||
m_DataList.SetItemText(Addr++,2,_T("CCD3数据刷新"));
|
||||
@@ -445,7 +519,7 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("中断位置6低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("中断位置6高字"));
|
||||
}
|
||||
for (int i=0;i<3;i++)
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
str.Format(_T("LASER%d-%d"),1+(i/2),1+(i%2));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("中断数低字"));
|
||||
@@ -463,8 +537,48 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("中断位置6低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("中断位置6高字"));
|
||||
}
|
||||
|
||||
|
||||
Addr=400;
|
||||
for (int i=0;i<10;i++)
|
||||
{
|
||||
str.Format(_T("CCD%d-%d"),1+(i/2),1+(i%2));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标X低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标X高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Y低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Y高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Z低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Z高字"));
|
||||
}
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
str.Format(_T("LASER%d-%d"),1+(i/2),1+(i%2));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标X低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标X高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Y低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Y高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Z低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("设备坐标Z高字"));
|
||||
}
|
||||
Addr=500;
|
||||
for (int i=0;i<10;i++)
|
||||
{
|
||||
str.Format(_T("CCD%d-%d"),1+(i/2),1+(i%2));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔX低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔX高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔY低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔY高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔZ低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔZ高字"));
|
||||
}
|
||||
for (int i=0;i<6;i++)
|
||||
{
|
||||
str.Format(_T("LASER%d-%d"),1+(i/2),1+(i%2));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔX低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔX高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔY低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔY高字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔZ低字"));
|
||||
m_DataList.SetItemText(Addr++,2,str+_T("测量补偿ΔZ高字"));
|
||||
}
|
||||
m_DataList.SetEditableItemRange(0,MAX_DM_PAGE_NUMBER-1,1,1);
|
||||
m_DataList.SetColorStyleItemRange(0,MAX_DM_PAGE_NUMBER-1,0,2);
|
||||
}
|
||||
@@ -676,7 +790,7 @@ LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnSocket(WPARAM w, LPARAM p)
|
||||
LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnTCPIPMsg(WPARAM w, LPARAM p)
|
||||
{
|
||||
LRESULT lResult=0;
|
||||
int lPara=static_cast<int>(p);
|
||||
//int lPara=static_cast<int>(p);
|
||||
switch(w)
|
||||
{
|
||||
case FD_ACCEPT:
|
||||
@@ -686,7 +800,24 @@ LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnTCPIPMsg(WPARAM w, LPARAM p)
|
||||
}
|
||||
case FD_READ:
|
||||
{
|
||||
m_csMSG=_T("<TCIPIP> FD_READ ")+TCPIPMsg(lPara);
|
||||
s_tcpip_msg_data _TCPIPMsg;
|
||||
memcpy(&_TCPIPMsg,(s_tcpip_msg_data*)p,sizeof(s_tcpip_msg_data));
|
||||
if (_TCPIPMsg._UpdateData==1)
|
||||
{
|
||||
if (m_DMAddrList==DM_ADDR_DM8000)
|
||||
{
|
||||
m_UpdateListControl(E_LISTCTRL_TITLE);
|
||||
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
|
||||
}
|
||||
}
|
||||
else if (_TCPIPMsg._UpdateData==2)
|
||||
{
|
||||
m_UpdateControls(FALSE);
|
||||
m_UpdateListControl(E_LISTCTRL_TITLE);
|
||||
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
|
||||
}
|
||||
|
||||
m_csMSG=_T("<TCIPIP> FD_READ ")+TCPIPMsg(_TCPIPMsg);
|
||||
break;
|
||||
}
|
||||
case FD_WRITE:
|
||||
@@ -709,49 +840,57 @@ LRESULT CSo7_Util_PLC_TCPIP_SERVER::OnTCPIPMsg(WPARAM w, LPARAM p)
|
||||
return( lResult );
|
||||
}
|
||||
//=====================================================================================
|
||||
CString CSo7_Util_PLC_TCPIP_SERVER::TCPIPMsg(int _Type)
|
||||
CString CSo7_Util_PLC_TCPIP_SERVER::TCPIPMsg(s_tcpip_msg_data _MsgData)
|
||||
{
|
||||
CString cStr("");
|
||||
switch(_Type)
|
||||
if (_MsgData._CmdType==0)
|
||||
{
|
||||
cStr.Format(_T(" [R]Addr[%d]NumberOfWords[%d]."),_MsgData._DataAddr,_MsgData._DataSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
cStr.Format(_T(" [W]Addr[%d]NumberOfWords[%d]."),_MsgData._DataAddr,_MsgData._DataSize);
|
||||
}
|
||||
switch(_MsgData._MsgType)
|
||||
{
|
||||
case RESPONSE_UNKNOWN:
|
||||
{
|
||||
cStr=_T("RESPONSE_UNKNOWN");
|
||||
cStr=_T("RESPONSE_UNKNOWN")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_HANDSHAKE:
|
||||
{
|
||||
cStr=_T("RESPONSE_HANDSHAKE");
|
||||
cStr=_T("RESPONSE_HANDSHAKE")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_READ_PLC_CALIB_POS:
|
||||
{
|
||||
cStr=_T("RESPONSE_READ_PLC_CALIB_POS")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_READ_PLC_STATE:
|
||||
{
|
||||
cStr=_T("RESPONSE_READ_PLC_STATE");
|
||||
cStr=_T("RESPONSE_READ_PLC_STATE")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_WRITE_PLC_STATE:
|
||||
{
|
||||
if (m_DMAddrList==DM_ADDR_DM8000)
|
||||
{
|
||||
m_UpdateListControl(E_LISTCTRL_TITLE);
|
||||
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
|
||||
}
|
||||
cStr=_T("RESPONSE_WRITE_PLC_STATE");
|
||||
cStr=_T("RESPONSE_WRITE_PLC_STATE")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_READ_SENSOR_STATE:
|
||||
{
|
||||
cStr=_T("RESPONSE_READ_SENSOR_STATE");
|
||||
cStr=_T("RESPONSE_READ_SENSOR_STATE")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_READ_CCD_DATA:
|
||||
{
|
||||
cStr=_T("RESPONSE_READ_CCD_DATA");
|
||||
cStr=_T("RESPONSE_READ_CCD_DATA")+cStr;
|
||||
break;
|
||||
}
|
||||
case RESPONSE_READ_ERRCODE:
|
||||
{
|
||||
cStr=_T("RESPONSE_READ_ERRCODE");
|
||||
cStr=_T("RESPONSE_READ_ERRCODE")+cStr;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
afx_msg void OnBnClickedButtonPlcTcpipServerUpdatedata();
|
||||
void m_UpdateListControl(int _type);
|
||||
void m_UpdateControls(int _type);
|
||||
CString TCPIPMsg(int _Type);
|
||||
CString TCPIPMsg(s_tcpip_msg_data _Type);
|
||||
|
||||
afx_msg void OnBnClickedRadioPlcTcpipServerAddrCcdDm();
|
||||
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm5000();
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user