Add RW data.
This commit is contained in:
@@ -7,9 +7,26 @@ const int WSA_MAJOR_VERSION = 1;
|
|||||||
const int WSA_MINOR_VERSION = 1;
|
const int WSA_MINOR_VERSION = 1;
|
||||||
#define WSA_VERSION MAKEWORD(WSA_MAJOR_VERSION, WSA_MINOR_VERSION)
|
#define WSA_VERSION MAKEWORD(WSA_MAJOR_VERSION, WSA_MINOR_VERSION)
|
||||||
#define SOCKADDR_LEN sizeof(SOCKADDR_IN)
|
#define SOCKADDR_LEN sizeof(SOCKADDR_IN)
|
||||||
const char BufferHeader[4]={0x46,0x49,0x4E,0x53};
|
|
||||||
const char HandShaking[]={0x46,0x49,0x4E,0x53,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
|
||||||
|
|
||||||
|
const BYTE CommHeader[]={0x46,0x49,0x4E,0x53};
|
||||||
|
const BYTE HandShaking[]={0x46,0x49,0x4E,0x53,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||||
|
const BYTE DRW_SData[]={0x46,0x49,0x4E,0x53,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x05,0x00,0x00,0x03,0x00,0xFF,0x01,0x01,0x82,0x00,0x0A,0x00,0x00,0x01};
|
||||||
|
const int DRW_SDataIndexDA1=20;
|
||||||
|
const int DRW_SDataIndexSA1=23;
|
||||||
|
const int DRW_SDataIndexCMD1=26;
|
||||||
|
const int DRW_SDataIndexCMD2=27;
|
||||||
|
const int DRW_SDataIndexAddr1=29;
|
||||||
|
const int DRW_SDataIndexAddr2=30;
|
||||||
|
const int DRW_SDataIndexCh1=32;
|
||||||
|
const int DRW_SDataIndexCh2=33;
|
||||||
|
const int DRW_SDataIndexData=34;
|
||||||
|
const int DRW_SDataCCLen=0x1A;
|
||||||
|
|
||||||
|
const int DRW_RSDataIndexBufSize1=6;
|
||||||
|
const int DRW_RSDataIndexBufSize2=7;
|
||||||
|
|
||||||
|
const int DRW_RDataIndexData=30;
|
||||||
|
const int DRW_RDataCCLen=0x16;
|
||||||
|
|
||||||
HANDLE CSo7_TCPIP::m_Thread_Id=NULL;
|
HANDLE CSo7_TCPIP::m_Thread_Id=NULL;
|
||||||
HANDLE CSo7_TCPIP::m_Thread_Mutex=NULL;
|
HANDLE CSo7_TCPIP::m_Thread_Mutex=NULL;
|
||||||
@@ -40,12 +57,14 @@ CSo7_TCPIP::CSo7_TCPIP()
|
|||||||
m_TCPIPBuf[i]._hProtoPending = false;
|
m_TCPIPBuf[i]._hProtoPending = false;
|
||||||
m_TCPIPBuf[i]._event = NULL;
|
m_TCPIPBuf[i]._event = NULL;
|
||||||
};
|
};
|
||||||
m_TCPIPData.s_status._handshaking=false;
|
m_TCPIPData.s_status._HandshakingSucceed=false;
|
||||||
|
m_TCPIPData.s_status._WriteDataCompleted=false;
|
||||||
|
m_TCPIPData.s_status._ReadDataCompleted=false;
|
||||||
m_TCPIPData.s_status._SendReturnCode=TCPIP_CONNECT_OK;
|
m_TCPIPData.s_status._SendReturnCode=TCPIP_CONNECT_OK;
|
||||||
m_TCPIPData.s_status._RecvReturnCode=TCPIP_CONNECT_OK;
|
m_TCPIPData.s_status._RecvReturnCode=TCPIP_CONNECT_OK;
|
||||||
m_TCPIPData.s_recv_data._type=0;
|
m_TCPIPData.s_recv_data._type=0;
|
||||||
m_TCPIPData.s_recv_data._DataSize=0;
|
m_TCPIPData.s_recv_data._DataSize=0;
|
||||||
m_TCPIPData.s_recv_data._dbBuff=(double *)malloc(TCPIP_MAX_DAT_SIZE);
|
m_TCPIPData.s_recv_data._iData=(int *)malloc(TCPIP_MAX_DAT_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -58,8 +77,8 @@ CSo7_TCPIP::~CSo7_TCPIP()
|
|||||||
free(m_TCPIPBuf[i]._buffer);
|
free(m_TCPIPBuf[i]._buffer);
|
||||||
m_TCPIPBuf[i]._buffer=NULL;
|
m_TCPIPBuf[i]._buffer=NULL;
|
||||||
}
|
}
|
||||||
free(m_TCPIPData.s_recv_data._dbBuff);
|
free(m_TCPIPData.s_recv_data._iData);
|
||||||
m_TCPIPData.s_recv_data._dbBuff=NULL;
|
m_TCPIPData.s_recv_data._iData=NULL;
|
||||||
}
|
}
|
||||||
//================================================================
|
//================================================================
|
||||||
void CSo7_TCPIP::Create_Thread()
|
void CSo7_TCPIP::Create_Thread()
|
||||||
@@ -103,14 +122,8 @@ void CSo7_TCPIP::_do_single_threaded_tcpip_comm(bool _bWaitForRsponse)
|
|||||||
Sleep(3);
|
Sleep(3);
|
||||||
}
|
}
|
||||||
m_TCPIPBuf[CH_SEND]._hProtoPending = TRUE;
|
m_TCPIPBuf[CH_SEND]._hProtoPending = TRUE;
|
||||||
if (_bWaitForRsponse)
|
UNREFERENCED_PARAMETER(_bWaitForRsponse);
|
||||||
{
|
m_TCPIPBuf[CH_RECV]._hProtoPending = FALSE;
|
||||||
m_TCPIPBuf[CH_RECV]._hProtoPending = TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_TCPIPBuf[CH_RECV]._hProtoPending = FALSE;
|
|
||||||
}
|
|
||||||
SetEvent(m_TCPIPBuf[CH_SEND]._event);
|
SetEvent(m_TCPIPBuf[CH_SEND]._event);
|
||||||
while ((m_TCPIPBuf[CH_SEND]._hProtoPending == TRUE) || (m_TCPIPBuf[CH_RECV]._hProtoPending == TRUE))
|
while ((m_TCPIPBuf[CH_SEND]._hProtoPending == TRUE) || (m_TCPIPBuf[CH_RECV]._hProtoPending == TRUE))
|
||||||
{
|
{
|
||||||
@@ -258,27 +271,72 @@ TCPIP_RETURN_CODE CSo7_TCPIP::Handshaking()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//================================================================
|
//================================================================
|
||||||
TCPIP_RETURN_CODE CSo7_TCPIP::Send(int _Addr,int _Data)
|
TCPIP_RETURN_CODE CSo7_TCPIP::_Send_Cmd_Write_D_Data(const short& _Addr,short* _Data,int _DataSize)
|
||||||
{
|
{
|
||||||
_Addr=0;
|
|
||||||
_Data=0;
|
|
||||||
if(m_Socket == INVALID_SOCKET)
|
if(m_Socket == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
return TCPIP_INVAILD_SOCKET;
|
return TCPIP_INVAILD_SOCKET;
|
||||||
}
|
}
|
||||||
return TCPIP_CONNECT_OK;
|
WaitForSingleObject(m_Thread_Mutex, INFINITE);
|
||||||
|
m_ClearSendBuf();
|
||||||
|
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
|
||||||
|
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDA1]=m_SreverIPAddress.S_un.S_un_b.s_b4;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexSA1]=m_ClientIPAddress.S_un.S_un_b.s_b4;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCMD1]=0x01;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCMD2]=0x02;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexAddr1]=(_Addr>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexAddr2]=_Addr & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCh1]=(_DataSize>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCh2]=_DataSize & 0x0ff;
|
||||||
|
for (int i=0;i<_DataSize;i++)
|
||||||
|
{
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(_Data[i]>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=_Data[i] & 0x0ff;
|
||||||
|
}
|
||||||
|
short sTmpData(0);
|
||||||
|
sTmpData=static_cast<short>(DRW_SDataCCLen+2*_DataSize);
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_RSDataIndexBufSize1]=(sTmpData>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_RSDataIndexBufSize2]=sTmpData & 0x0ff;
|
||||||
|
|
||||||
|
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+2*_DataSize;
|
||||||
|
m_TCPIPBuf[CH_SEND]._save_send_cmd=TCPIP_CMD_WRITE_D_DATA;
|
||||||
|
m_TCPIPData.s_status._WriteDataCompleted=false;
|
||||||
|
|
||||||
|
m_Thread_State=TCPIP_THREAD_RUNNING;
|
||||||
|
_do_single_threaded_tcpip_comm();
|
||||||
|
ReleaseMutex(m_Thread_Mutex);
|
||||||
|
return m_TCPIPData.s_status._SendReturnCode;
|
||||||
}
|
}
|
||||||
//================================================================
|
//================================================================
|
||||||
TCPIP_RETURN_CODE CSo7_TCPIP::Recv(int _Addr,int& _Data,bool _bWait)
|
TCPIP_RETURN_CODE CSo7_TCPIP::_Send_Cmd_Read_D_Data(const short& _Addr,const short& _DataSize)
|
||||||
{
|
{
|
||||||
_Addr=0;
|
|
||||||
_Data=0;
|
|
||||||
_bWait=false;
|
|
||||||
if(m_Socket == INVALID_SOCKET)
|
if(m_Socket == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
return TCPIP_INVAILD_SOCKET;
|
return TCPIP_INVAILD_SOCKET;
|
||||||
}
|
}
|
||||||
return TCPIP_CONNECT_OK;
|
WaitForSingleObject(m_Thread_Mutex, INFINITE);
|
||||||
|
m_ClearSendBuf();
|
||||||
|
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
|
||||||
|
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDA1]=m_SreverIPAddress.S_un.S_un_b.s_b4;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexSA1]=m_ClientIPAddress.S_un.S_un_b.s_b4;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCMD1]=0x01;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCMD2]=0x01;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexAddr1]=(_Addr>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexAddr2]=_Addr & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCh1]=(_DataSize>>8) & 0x0ff;
|
||||||
|
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexCh2]=_DataSize & 0x0ff;
|
||||||
|
|
||||||
|
|
||||||
|
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData;
|
||||||
|
m_TCPIPBuf[CH_SEND]._save_send_cmd=TCPIP_CMD_READ_D_DATA;
|
||||||
|
m_TCPIPData.s_status._ReadDataCompleted=false;
|
||||||
|
|
||||||
|
m_Thread_State=TCPIP_THREAD_RUNNING;
|
||||||
|
_do_single_threaded_tcpip_comm();
|
||||||
|
ReleaseMutex(m_Thread_Mutex);
|
||||||
|
return m_TCPIPData.s_status._SendReturnCode;
|
||||||
}
|
}
|
||||||
//================================================================
|
//================================================================
|
||||||
LRESULT CSo7_TCPIP::OnSocket(WPARAM wParam, LPARAM lParam)
|
LRESULT CSo7_TCPIP::OnSocket(WPARAM wParam, LPARAM lParam)
|
||||||
@@ -426,15 +484,40 @@ void CSo7_TCPIP::m_ProcessSocketReadEvent(SOCKET s)
|
|||||||
switch (m_TCPIPBuf[CH_SEND]._save_send_cmd)
|
switch (m_TCPIPBuf[CH_SEND]._save_send_cmd)
|
||||||
{
|
{
|
||||||
case TCPIP_CMD_HANDSHAKING:
|
case TCPIP_CMD_HANDSHAKING:
|
||||||
if (m_TCPIPBuf[CH_RECV]._CompletedSize==24)
|
|
||||||
{
|
{
|
||||||
m_TCPIPData.s_status._handshaking=true;
|
if (m_TCPIPBuf[CH_RECV]._CompletedSize==24)
|
||||||
|
{
|
||||||
|
m_TCPIPData.s_status._HandshakingSucceed=true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_TCPIPData.s_status._HandshakingSucceed=false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
case TCPIP_CMD_READ_D_DATA:
|
||||||
{
|
{
|
||||||
m_TCPIPData.s_status._handshaking=false;
|
int _BufferSize(0);
|
||||||
|
BYTE _bData[2]={0,0};
|
||||||
|
|
||||||
|
_BufferSize=static_cast<int>(static_cast<BYTE>(m_TCPIPBuf[CH_RECV]._buffer[DRW_RSDataIndexBufSize2]));
|
||||||
|
_BufferSize-=DRW_RDataCCLen;
|
||||||
|
m_TCPIPData.s_recv_data._DataSize=0;
|
||||||
|
for (int i=0;i<_BufferSize;i+=2)
|
||||||
|
{
|
||||||
|
_bData[0]=static_cast<BYTE>(m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexData+i]);
|
||||||
|
_bData[1]=static_cast<BYTE>(m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexData+i+1]);
|
||||||
|
m_TCPIPData.s_recv_data._iData[m_TCPIPData.s_recv_data._DataSize]=static_cast<int>(_bData[0]*256+_bData[1]);
|
||||||
|
m_TCPIPData.s_recv_data._DataSize++;
|
||||||
|
}
|
||||||
|
m_TCPIPData.s_status._ReadDataCompleted=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TCPIP_CMD_WRITE_D_DATA:
|
||||||
|
{
|
||||||
|
m_TCPIPData.s_status._WriteDataCompleted=true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
default:break;
|
default:break;
|
||||||
}
|
}
|
||||||
m_TCPIPBuf[CH_RECV]._CompletedSize = 0;
|
m_TCPIPBuf[CH_RECV]._CompletedSize = 0;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ enum TCPIP_CMD
|
|||||||
{
|
{
|
||||||
TCPIP_CMD_NONE=0,
|
TCPIP_CMD_NONE=0,
|
||||||
TCPIP_CMD_HANDSHAKING,
|
TCPIP_CMD_HANDSHAKING,
|
||||||
TCPIP_CMD_READ_DATA,
|
TCPIP_CMD_READ_D_DATA,
|
||||||
TCPIP_CMD_WRITE_DATA,
|
TCPIP_CMD_WRITE_D_DATA,
|
||||||
|
|
||||||
TCPIP_CMD_TATAL
|
TCPIP_CMD_TATAL
|
||||||
};
|
};
|
||||||
@@ -67,13 +67,15 @@ struct struct_so7_tcpip_data
|
|||||||
{
|
{
|
||||||
int _type;
|
int _type;
|
||||||
int _DataSize;
|
int _DataSize;
|
||||||
double *_dbBuff;
|
int* _iData;
|
||||||
} s_recv_data;
|
} s_recv_data;
|
||||||
struct s_status
|
struct s_status
|
||||||
{
|
{
|
||||||
TCPIP_RETURN_CODE _SendReturnCode;
|
TCPIP_RETURN_CODE _SendReturnCode;
|
||||||
TCPIP_RETURN_CODE _RecvReturnCode;
|
TCPIP_RETURN_CODE _RecvReturnCode;
|
||||||
bool _handshaking;
|
bool _HandshakingSucceed;
|
||||||
|
bool _WriteDataCompleted;
|
||||||
|
bool _ReadDataCompleted;
|
||||||
} s_status;
|
} s_status;
|
||||||
};
|
};
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
@@ -93,11 +95,12 @@ public:
|
|||||||
static int m_Thread_State;
|
static int m_Thread_State;
|
||||||
|
|
||||||
TCPIP_RETURN_CODE Connect(const HWND& _hWnd,const in_addr& _IPAddress,const u_short& _nPortNumber);
|
TCPIP_RETURN_CODE Connect(const HWND& _hWnd,const in_addr& _IPAddress,const u_short& _nPortNumber);
|
||||||
TCPIP_RETURN_CODE Send(int _Addr,int _Data);
|
|
||||||
TCPIP_RETURN_CODE Recv(int _Addr,int& _Data,bool _bWait);
|
|
||||||
TCPIP_RETURN_CODE DisConnect();
|
TCPIP_RETURN_CODE DisConnect();
|
||||||
TCPIP_RETURN_CODE GetHostIPAddr(in_addr& _IPAddress);
|
TCPIP_RETURN_CODE GetHostIPAddr(in_addr& _IPAddress);
|
||||||
TCPIP_RETURN_CODE Handshaking();
|
TCPIP_RETURN_CODE Handshaking();
|
||||||
|
TCPIP_RETURN_CODE _Send_Cmd_Write_D_Data(const short& _Addr,short* _Data,int _DataSize);
|
||||||
|
TCPIP_RETURN_CODE _Send_Cmd_Read_D_Data(const short& _StartAddr,const short& _DataSize);
|
||||||
|
|
||||||
|
|
||||||
LRESULT OnSocket(WPARAM wParam, LPARAM lParam);
|
LRESULT OnSocket(WPARAM wParam, LPARAM lParam);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1050,11 +1050,13 @@ BEGIN
|
|||||||
PUSHBUTTON "Read Data",IDC_BUTTON_PLC_TCPIP_READ,203,30,63,18
|
PUSHBUTTON "Read Data",IDC_BUTTON_PLC_TCPIP_READ,203,30,63,18
|
||||||
PUSHBUTTON "Write Data",IDC_BUTTON_PLC_TCPIP_WRITE,203,62,63,18
|
PUSHBUTTON "Write Data",IDC_BUTTON_PLC_TCPIP_WRITE,203,62,63,18
|
||||||
GROUPBOX "TCP/IP Control",IDC_STATIC,110,12,174,81
|
GROUPBOX "TCP/IP Control",IDC_STATIC,110,12,174,81
|
||||||
EDITTEXT IDC_EDIT_PLC_TCPIP_ADDR,141,32,40,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_EDIT_PLC_TCPIP_ADDR,144,28,40,14,ES_AUTOHSCROLL
|
||||||
LTEXT "Addr",IDC_STATIC,116,35,16,8
|
LTEXT "Addr",IDC_STATIC,120,30,16,8
|
||||||
EDITTEXT IDC_EDIT_PLC_TCPIP_Data,141,61,40,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_EDIT_PLC_TCPIP_Data,144,74,40,14,ES_AUTOHSCROLL
|
||||||
LTEXT "Data",IDC_STATIC,116,64,16,8
|
LTEXT "Data",IDC_STATIC,120,76,16,8
|
||||||
PUSHBUTTON "Handshaking",IDC_BUTTON_PLC_TCPIP_HANDSHAKING,28,49,63,18
|
PUSHBUTTON "Handshaking",IDC_BUTTON_PLC_TCPIP_HANDSHAKING,28,49,63,18
|
||||||
|
EDITTEXT IDC_EDIT_PLC_TCPIP_DATA_SIZE,144,51,40,14,ES_AUTOHSCROLL
|
||||||
|
LTEXT "Size",IDC_STATIC,120,53,14,8
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -73,20 +73,54 @@ void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipDisconnect()
|
|||||||
|
|
||||||
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipRead()
|
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipRead()
|
||||||
{
|
{
|
||||||
;
|
CString str;
|
||||||
|
UpdateData(TRUE);
|
||||||
|
USES_CONVERSION;
|
||||||
|
GetDlgItem(IDC_EDIT_PLC_TCPIP_ADDR)->GetWindowText(str);
|
||||||
|
const char* cTempValue=T2A(str);
|
||||||
|
short sAddr=static_cast<short>(atoi(cTempValue));
|
||||||
|
|
||||||
|
GetDlgItem(IDC_EDIT_PLC_TCPIP_DATA_SIZE)->GetWindowText(str);
|
||||||
|
cTempValue=T2A(str);
|
||||||
|
short sSize=static_cast<short>(atoi(cTempValue));
|
||||||
|
|
||||||
|
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->_Send_Cmd_Read_D_Data(sAddr,sSize);
|
||||||
|
m_csMSG.Format(_T(">> Read ReturnCode:%d."),rCode);
|
||||||
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipHandshaking()
|
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipHandshaking()
|
||||||
{
|
{
|
||||||
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->Handshaking();
|
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->Handshaking();
|
||||||
m_csMSG.Format(_T("[Handshaking] Send ReturnCode:%d."),rCode);
|
m_csMSG.Format(_T(">> Handshaking ReturnCode:%d."),rCode);
|
||||||
OutputWithScroll(m_csMSG,m_edMSG);
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipWrite()
|
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipWrite()
|
||||||
{
|
{
|
||||||
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->Send(1001,0);
|
CString str;
|
||||||
m_csMSG.Format(_T("Write ReturnCode:%d."),rCode);
|
UpdateData(TRUE);
|
||||||
|
USES_CONVERSION;
|
||||||
|
GetDlgItem(IDC_EDIT_PLC_TCPIP_ADDR)->GetWindowText(str);
|
||||||
|
const char* cTempValue=T2A(str);
|
||||||
|
short sAddr=static_cast<short>(atoi(cTempValue));
|
||||||
|
|
||||||
|
GetDlgItem(IDC_EDIT_PLC_TCPIP_Data)->GetWindowText(str);
|
||||||
|
cTempValue=T2A(str);
|
||||||
|
int sData=(atoi(cTempValue));
|
||||||
|
|
||||||
|
GetDlgItem(IDC_EDIT_PLC_TCPIP_DATA_SIZE)->GetWindowText(str);
|
||||||
|
cTempValue=T2A(str);
|
||||||
|
int sSize=(atoi(cTempValue));
|
||||||
|
|
||||||
|
short* _Data=new short[sSize];
|
||||||
|
for(int i=0;i<sSize;i++)
|
||||||
|
{
|
||||||
|
_Data[i]=static_cast<short>(sData);
|
||||||
|
}
|
||||||
|
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->_Send_Cmd_Write_D_Data(sAddr,_Data,(int)sSize);
|
||||||
|
delete []_Data;
|
||||||
|
m_csMSG.Format(_T(">> Write ReturnCode:%d."),rCode);
|
||||||
OutputWithScroll(m_csMSG,m_edMSG);
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,12 +175,39 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
|
|||||||
{
|
{
|
||||||
if (g_pSo7_TCPIP)
|
if (g_pSo7_TCPIP)
|
||||||
{
|
{
|
||||||
m_csMSG.Format(_T(">> Handshaking status:%d."),g_pSo7_TCPIP->m_TCPIPData.s_status._handshaking);
|
m_csMSG.Format(_T("<< Handshaking status:%d."),g_pSo7_TCPIP->m_TCPIPData.s_status._HandshakingSucceed);
|
||||||
OutputWithScroll(m_csMSG,m_edMSG);
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
}
|
}
|
||||||
m_csMSG=_T("[Handshaking]");
|
m_csMSG=_T("[Handshaking]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TCPIP_CMD_READ_D_DATA:
|
||||||
|
{
|
||||||
|
if (g_pSo7_TCPIP)
|
||||||
|
{
|
||||||
|
CString csTmp;
|
||||||
|
m_csMSG=_T("");
|
||||||
|
m_csMSG.Format(_T("<< Read status:%d;Data:"),g_pSo7_TCPIP->m_TCPIPData.s_status._ReadDataCompleted);
|
||||||
|
for (int i=0;i<g_pSo7_TCPIP->m_TCPIPData.s_recv_data._DataSize;i++)
|
||||||
|
{
|
||||||
|
csTmp.Format(_T("%0X,"),g_pSo7_TCPIP->m_TCPIPData.s_recv_data._iData[i]);
|
||||||
|
m_csMSG+=csTmp;
|
||||||
|
}
|
||||||
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
|
m_csMSG=_T("[Read]");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TCPIP_CMD_WRITE_D_DATA:
|
||||||
|
{
|
||||||
|
if (g_pSo7_TCPIP)
|
||||||
|
{
|
||||||
|
m_csMSG.Format(_T("<< Write status:%d."),g_pSo7_TCPIP->m_TCPIPData.s_status._WriteDataCompleted);
|
||||||
|
OutputWithScroll(m_csMSG,m_edMSG);
|
||||||
|
}
|
||||||
|
m_csMSG=_T("[Write]");
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
m_csMSG=_T("[Unknown]");
|
m_csMSG=_T("[Unknown]");
|
||||||
@@ -163,7 +224,7 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
|
|||||||
m_csMSG+=_T("RecvData:");
|
m_csMSG+=_T("RecvData:");
|
||||||
for (int i=0;i<g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._size;i++)
|
for (int i=0;i<g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._size;i++)
|
||||||
{
|
{
|
||||||
csTmp.Format(_T("0x%X "),g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._buffer[i]);
|
csTmp.Format(_T("0x%02X "),static_cast<BYTE>(g_pSo7_TCPIP->m_TCPIPBuf[CH_RECV]._buffer[i]));
|
||||||
m_csMSG+=csTmp;
|
m_csMSG+=csTmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1054,8 +1054,9 @@
|
|||||||
#define IDC_EDIT_PLC_TCPIP_ADDR 1887
|
#define IDC_EDIT_PLC_TCPIP_ADDR 1887
|
||||||
#define IDC_EDIT_MSG 1888
|
#define IDC_EDIT_MSG 1888
|
||||||
#define IDC_EDIT_PLC_TCPIP_Data 1889
|
#define IDC_EDIT_PLC_TCPIP_Data 1889
|
||||||
#define IDC_BUTTON_PLC_TCPIP_CONNECT2 1890
|
|
||||||
#define IDC_BUTTON_PLC_TCPIP_HANDSHAKING 1890
|
#define IDC_BUTTON_PLC_TCPIP_HANDSHAKING 1890
|
||||||
|
#define IDC_EDIT_PLC_TCPIP_ADDR2 1891
|
||||||
|
#define IDC_EDIT_PLC_TCPIP_DATA_SIZE 1891
|
||||||
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
|
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
|
||||||
#define ID_EDIT_SO7_CONFIG_MOTION 32741
|
#define ID_EDIT_SO7_CONFIG_MOTION 32741
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user