diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp index 5e2f1a0..58e76b6 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp @@ -10,9 +10,10 @@ const int WSA_MINOR_VERSION = 1; 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 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_SDataHeadDataSize=8; const int DRW_SDataIndexData=30; const int DRW_RDataIndexDA1=20; @@ -42,7 +43,10 @@ CSo7_TCPIP_Server::CSo7_TCPIP_Server() m_hMsgWnd=NULL; m_ServerStarted=FALSE; m_Socket=INVALID_SOCKET; - m_SreverIPAddress; + m_SreverIPAddress.S_un.S_un_b.s_b1=127; + m_SreverIPAddress.S_un.S_un_b.s_b2=0; + m_SreverIPAddress.S_un.S_un_b.s_b3=0; + m_SreverIPAddress.S_un.S_un_b.s_b4=1; m_iServerPortNumber=static_cast(0); for (int i=0;i(0); + for (int i=0;i>8) & 0x0ff; m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=iData & 0x0ff; } - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData+2*_datasize); - m_TCPIPBuf[CH_SEND]._size=sizeof(HandShaking); + m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); + m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; SendBuffer(); @@ -300,8 +339,8 @@ BOOL CSo7_TCPIP_Server::Response_Sensor_State(short _datasize) { m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+i]=m_TCPIPServerState._PLCSensorState[i]; } - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData+2*_datasize); - m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+2*_datasize; + m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); + m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; SendBuffer(); return TRUE; @@ -318,15 +357,20 @@ BOOL CSo7_TCPIP_Server::Response_CCD_DATA(short _Addr,short _datasize) memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData)); int iData(0); - for (int i=_Addr;i<_Addr+_datasize;i++) + BYTE DM_Data[4]={0,0,0,0}; + for (int i=0;i<_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; + iData=m_CCDData_D10000[_Addr+i/2]; + DM_Data[2]=(iData>>24) & 0x0ff; + DM_Data[3]=(iData>>16) & 0x0ff; + DM_Data[0]=(iData>>8) & 0x0ff; + DM_Data[1]=iData & 0x0ff; + m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=DM_Data[2*(i%2)+0]; + m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=DM_Data[2*(i%2)+1]; } - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData+2*_datasize); + m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); - m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+2*_datasize; + m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; SendBuffer(); @@ -520,8 +564,16 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) 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]; + short iAddr(0); + short iDataSize(0); + BYTE bData[2]={0,0}; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr2]; + iAddr=(bData[0]<<8)+bData[1]; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr2]; + iDataSize=(bData[0]<<8)+bData[1]; + if (iAddr>=20000) { iPara=RESPONSE_READ_ERRCODE; @@ -531,10 +583,6 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) Response_CCD_DATA((iAddr-10060),iDataSize); iPara=RESPONSE_READ_CCD_DATA; } - else if (iAddr>=8000) - { - iPara=RESPONSE_WRITE_PLC_STATE; - } else if (iAddr>=5000) { Response_PLC_State(1); @@ -542,12 +590,41 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) } else { + RESPONSE_UNKNOWN_State(); iPara=RESPONSE_UNKNOWN; } } + else if (m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD1]==0x01 + &&m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCMD2]==0x02) + { + short iAddr(0); + short iDataSize(0); + BYTE bData[2]={0,0}; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr2]; + iAddr=(bData[0]<<8)+bData[1]; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexAddr2]; + iDataSize=(bData[0]<<8)+bData[1]; + if (iAddr>=8000) + { + RESPONSE_UNKNOWN_State(); + iPara=RESPONSE_WRITE_PLC_STATE; + } + else + { + RESPONSE_UNKNOWN_State(); + iPara=RESPONSE_UNKNOWN; + } + } + } m_TCPIPBuf[CH_RECV]._CompletedSize = 0; m_TCPIPBuf[CH_RECV]._hProtoPending=FALSE; - ::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_READ,iPara); + + if (iPara!=RESPONSE_READ_PLC_STATE) + { + ::PostMessage(m_hMsgWnd,WM_TCPIP_MSG,FD_READ,iPara); + } } diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h index ed24d31..5914097 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h @@ -93,7 +93,7 @@ public: static struct_so7_tcpip_buff m_TCPIPBuf[lChannelSize]; static s_tcpip_state m_TCPIPServerState; - int m_CCDData[MAX_CCD_ADDR]; + int m_CCDData_D10000[MAX_CCD_ADDR]; BOOL StartServer(HWND _hWnd,short _nPort); BOOL StopServer(); @@ -103,6 +103,7 @@ public: BOOL Response_Sensor_State(short _datasize); BOOL Response_CCD_DATA(short _Addr,short _datasize); + BOOL RESPONSE_UNKNOWN_State(); LRESULT OnSocket(WPARAM wParam, LPARAM lParam); private: diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index 8267414..6a1165d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -16,7 +16,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// 中文(简体,中国) resources +// Chinese (Simplified, PRC) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED @@ -1072,8 +1072,8 @@ 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 + PUSHBUTTON "Start",IDC_BUTTON_PLC_TCPIP_SERVER_START,29,49,63,18 + PUSHBUTTON "Stop",IDC_BUTTON_PLC_TCPIP_SERVER_STOP,29,73,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 @@ -1091,6 +1091,8 @@ BEGIN 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 + EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER,51,30,40,14,ES_AUTOHSCROLL + LTEXT "Port",IDC_STATIC,29,33,14,8 END @@ -1728,12 +1730,12 @@ BEGIN IDS_SO7_ABOUTBOX "&About Utility for SO7..." END -#endif // 中文(简体,中国) resources +#endif // Chinese (Simplified, PRC) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// 英语(美国) resources +// English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -2692,7 +2694,7 @@ BEGIN END END -#endif // 英语(美国) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp index bf3f8f8..ef3083f 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp @@ -464,6 +464,7 @@ void CSo7_Option::OnBnClickedOk() 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; + pSo7_Util_PLC_TCPIP_SERVER=NULL; if (g_pSo7_TCPIP_Server) { delete g_pSo7_TCPIP_Server; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp index 5c8f51a..3b332d3 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp @@ -89,6 +89,9 @@ BOOL CSo7_Util_PLC_TCPIP_SERVER::OnInitDialog() 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")); + m_UpdateListControl(E_LISTCTRL_TITLE); UpdateData(FALSE); @@ -99,9 +102,15 @@ BOOL CSo7_Util_PLC_TCPIP_SERVER::OnInitDialog() void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerStart() { + CString str; + UpdateData(TRUE); + USES_CONVERSION; + GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER)->GetWindowText(str); + const char* cTempValue=T2A(str); + short sPortNumber=static_cast(atoi(cTempValue)); if (g_pSo7_TCPIP_Server) { - g_pSo7_TCPIP_Server->StartServer(m_hWnd,9600); + g_pSo7_TCPIP_Server->StartServer(m_hWnd,sPortNumber); m_csMSG=_T(" ok."); OutputWithScroll(m_csMSG,m_edMSG); } @@ -194,7 +203,7 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type) cTmp=T2A(csTmp); if (g_pSo7_TCPIP_Server) { - g_pSo7_TCPIP_Server->m_CCDData[iRow]=atoi(cTmp); + g_pSo7_TCPIP_Server->m_CCDData_D10000[iRow]=atoi(cTmp); } } break; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index dd83e23..74c9e04 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -1073,6 +1073,8 @@ #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_EDIT__PLC_TCPIP_PORTNUMBER2 1901 +#define IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER 1901 #define IDC_LIST_PLC_TCPIP_SERVER_CCDDATA 1902 #define IDC_IPADDRESS_PLC_TCPIP 1903 #define IDC_BUTTON_DIY_EXIT_BUTTON 32740 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index d05cb0f..2dbd0d9 100644 Binary files a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo differ