Add RW data.
This commit is contained in:
@@ -7,9 +7,26 @@ 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 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_Mutex=NULL;
|
||||
@@ -40,12 +57,14 @@ CSo7_TCPIP::CSo7_TCPIP()
|
||||
m_TCPIPBuf[i]._hProtoPending = false;
|
||||
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._RecvReturnCode=TCPIP_CONNECT_OK;
|
||||
m_TCPIPData.s_recv_data._type=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);
|
||||
m_TCPIPBuf[i]._buffer=NULL;
|
||||
}
|
||||
free(m_TCPIPData.s_recv_data._dbBuff);
|
||||
m_TCPIPData.s_recv_data._dbBuff=NULL;
|
||||
free(m_TCPIPData.s_recv_data._iData);
|
||||
m_TCPIPData.s_recv_data._iData=NULL;
|
||||
}
|
||||
//================================================================
|
||||
void CSo7_TCPIP::Create_Thread()
|
||||
@@ -103,14 +122,8 @@ void CSo7_TCPIP::_do_single_threaded_tcpip_comm(bool _bWaitForRsponse)
|
||||
Sleep(3);
|
||||
}
|
||||
m_TCPIPBuf[CH_SEND]._hProtoPending = TRUE;
|
||||
if (_bWaitForRsponse)
|
||||
{
|
||||
m_TCPIPBuf[CH_RECV]._hProtoPending = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_TCPIPBuf[CH_RECV]._hProtoPending = FALSE;
|
||||
}
|
||||
UNREFERENCED_PARAMETER(_bWaitForRsponse);
|
||||
m_TCPIPBuf[CH_RECV]._hProtoPending = FALSE;
|
||||
SetEvent(m_TCPIPBuf[CH_SEND]._event);
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
@@ -295,7 +353,7 @@ LRESULT CSo7_TCPIP::OnSocket(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
case FD_CONNECT:
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
case FD_READ:
|
||||
@@ -426,15 +484,40 @@ void CSo7_TCPIP::m_ProcessSocketReadEvent(SOCKET s)
|
||||
switch (m_TCPIPBuf[CH_SEND]._save_send_cmd)
|
||||
{
|
||||
case TCPIP_CMD_HANDSHAKING:
|
||||
if (m_TCPIPBuf[CH_RECV]._CompletedSize==24)
|
||||
{
|
||||
m_TCPIPData.s_status._handshaking=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_TCPIPData.s_status._handshaking=false;
|
||||
if (m_TCPIPBuf[CH_RECV]._CompletedSize==24)
|
||||
{
|
||||
m_TCPIPData.s_status._HandshakingSucceed=true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_TCPIPData.s_status._HandshakingSucceed=false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TCPIP_CMD_READ_D_DATA:
|
||||
{
|
||||
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;
|
||||
}
|
||||
m_TCPIPBuf[CH_RECV]._CompletedSize = 0;
|
||||
|
||||
@@ -31,8 +31,8 @@ enum TCPIP_CMD
|
||||
{
|
||||
TCPIP_CMD_NONE=0,
|
||||
TCPIP_CMD_HANDSHAKING,
|
||||
TCPIP_CMD_READ_DATA,
|
||||
TCPIP_CMD_WRITE_DATA,
|
||||
TCPIP_CMD_READ_D_DATA,
|
||||
TCPIP_CMD_WRITE_D_DATA,
|
||||
|
||||
TCPIP_CMD_TATAL
|
||||
};
|
||||
@@ -67,13 +67,15 @@ struct struct_so7_tcpip_data
|
||||
{
|
||||
int _type;
|
||||
int _DataSize;
|
||||
double *_dbBuff;
|
||||
int* _iData;
|
||||
} s_recv_data;
|
||||
struct s_status
|
||||
{
|
||||
TCPIP_RETURN_CODE _SendReturnCode;
|
||||
TCPIP_RETURN_CODE _RecvReturnCode;
|
||||
bool _handshaking;
|
||||
bool _HandshakingSucceed;
|
||||
bool _WriteDataCompleted;
|
||||
bool _ReadDataCompleted;
|
||||
} s_status;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
@@ -93,11 +95,12 @@ public:
|
||||
static int m_Thread_State;
|
||||
|
||||
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 GetHostIPAddr(in_addr& _IPAddress);
|
||||
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);
|
||||
private:
|
||||
|
||||
@@ -1050,11 +1050,13 @@ BEGIN
|
||||
PUSHBUTTON "Read Data",IDC_BUTTON_PLC_TCPIP_READ,203,30,63,18
|
||||
PUSHBUTTON "Write Data",IDC_BUTTON_PLC_TCPIP_WRITE,203,62,63,18
|
||||
GROUPBOX "TCP/IP Control",IDC_STATIC,110,12,174,81
|
||||
EDITTEXT IDC_EDIT_PLC_TCPIP_ADDR,141,32,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Addr",IDC_STATIC,116,35,16,8
|
||||
EDITTEXT IDC_EDIT_PLC_TCPIP_Data,141,61,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Data",IDC_STATIC,116,64,16,8
|
||||
EDITTEXT IDC_EDIT_PLC_TCPIP_ADDR,144,28,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Addr",IDC_STATIC,120,30,16,8
|
||||
EDITTEXT IDC_EDIT_PLC_TCPIP_Data,144,74,40,14,ES_AUTOHSCROLL
|
||||
LTEXT "Data",IDC_STATIC,120,76,16,8
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -73,20 +73,54 @@ void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipDisconnect()
|
||||
|
||||
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()
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
void CSo7_Util_PLC_TCPIP::OnBnClickedButtonPlcTcpipWrite()
|
||||
{
|
||||
TCPIP_RETURN_CODE rCode=g_pSo7_TCPIP->Send(1001,0);
|
||||
m_csMSG.Format(_T("Write ReturnCode:%d."),rCode);
|
||||
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)->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);
|
||||
}
|
||||
|
||||
@@ -141,12 +175,39 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
|
||||
{
|
||||
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);
|
||||
}
|
||||
m_csMSG=_T("[Handshaking]");
|
||||
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:
|
||||
{
|
||||
m_csMSG=_T("[Unknown]");
|
||||
@@ -163,7 +224,7 @@ LRESULT CSo7_Util_PLC_TCPIP::OnTCPIPRecv(WPARAM w, LPARAM p)
|
||||
m_csMSG+=_T("RecvData:");
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1054,8 +1054,9 @@
|
||||
#define IDC_EDIT_PLC_TCPIP_ADDR 1887
|
||||
#define IDC_EDIT_MSG 1888
|
||||
#define IDC_EDIT_PLC_TCPIP_Data 1889
|
||||
#define IDC_BUTTON_PLC_TCPIP_CONNECT2 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 ID_EDIT_SO7_CONFIG_MOTION 32741
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user