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 58e76b6..e2935e7 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp @@ -62,10 +62,12 @@ CSo7_TCPIP_Server::CSo7_TCPIP_Server() m_TCPIPBuf[i]._hProtoPending = false; m_TCPIPBuf[i]._event = NULL; }; - for(int i=0;i=MAX_DM_PAGE_NUMBER) { - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i]=(iData>>8) & 0x0ff; - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+2*i+1]=iData & 0x0ff; + _DataSize=MAX_DM_PAGE_NUMBER-_StartAddr; + } + for (int i=0;i<_DataSize;i++) + { + sData=DM5000[_StartAddr+i]; + 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(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); - m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; + 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; } //================================================================ -BOOL CSo7_TCPIP_Server::Response_Sensor_State(short _datasize) +BOOL CSo7_TCPIP_Server::Response_PLC_DM10000_R(short _StartAddr,short _DataSize) { if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET) { @@ -335,19 +343,28 @@ BOOL CSo7_TCPIP_Server::Response_Sensor_State(short _datasize) m_ClearSendBuf(); memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData)); - for (int i=0;i<_datasize;i++) + short sData(0); + _StartAddr-=10000; + if ((_StartAddr+_DataSize)>=MAX_DM_PAGE_NUMBER) { - m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexData+i]=m_TCPIPServerState._PLCSensorState[i]; + _DataSize=MAX_DM_PAGE_NUMBER-_StartAddr; + } + for (int i=0;i<_DataSize;i++) + { + sData=DM10000[_StartAddr+i]; + 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(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); - m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; + 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; - } //================================================================ -BOOL CSo7_TCPIP_Server::Response_CCD_DATA(short _Addr,short _datasize) +BOOL CSo7_TCPIP_Server::Response_PLC_DM8000_W(short _StartAddr,short _DataSize) { if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET) { @@ -355,27 +372,26 @@ BOOL CSo7_TCPIP_Server::Response_CCD_DATA(short _Addr,short _datasize) } m_ClearSendBuf(); memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData)); - - int iData(0); - BYTE DM_Data[4]={0,0,0,0}; - for (int i=0;i<_datasize;i++) + short sData(0); + _StartAddr-=8000; + if ((_StartAddr+_DataSize)>=MAX_DM_PAGE_NUMBER) { - 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]; + _DataSize=MAX_DM_PAGE_NUMBER-_StartAddr; + } + for (int i=0;i<_DataSize;i++) + { + sData=DM8000[_StartAddr+i]; + 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(DRW_SDataIndexData-DRW_SDataHeadDataSize+_datasize); - - m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_datasize*2; + 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; + } + //================================================================ BOOL CSo7_TCPIP_Server::_Send_Cmd_Write_State() { @@ -570,8 +586,8 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) 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]; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh2]; iDataSize=(bData[0]<<8)+bData[1]; if (iAddr>=20000) @@ -580,17 +596,17 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) } else if (iAddr>=10000) { - Response_CCD_DATA((iAddr-10060),iDataSize); + Response_PLC_DM10000_R(iAddr,iDataSize); iPara=RESPONSE_READ_CCD_DATA; } else if (iAddr>=5000) { - Response_PLC_State(1); + Response_PLC_DM5000_R(iAddr,iDataSize); iPara=RESPONSE_READ_PLC_STATE; } else { - RESPONSE_UNKNOWN_State(); + RESPONSE_PLC_DM_UNKNOWN(); iPara=RESPONSE_UNKNOWN; } } @@ -603,17 +619,17 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) 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]; + bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh1]; + bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexCh2]; iDataSize=(bData[0]<<8)+bData[1]; if (iAddr>=8000) { - RESPONSE_UNKNOWN_State(); + RESPONSE_PLC_DM_UNKNOWN(); iPara=RESPONSE_WRITE_PLC_STATE; } else { - RESPONSE_UNKNOWN_State(); + RESPONSE_PLC_DM_UNKNOWN(); iPara=RESPONSE_UNKNOWN; } } 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 5914097..f3042ff 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.h @@ -16,6 +16,8 @@ #define PLC_MAX_SENSOR_STATE 20 #define MAX_CCD_ADDR 120 +#define MAX_DM_PAGE_NUMBER 1024 + enum OMRON_PLC_SENSOR { OMRON_PLC_CCD1_CAMERA1=0, @@ -93,17 +95,21 @@ public: static struct_so7_tcpip_buff m_TCPIPBuf[lChannelSize]; static s_tcpip_state m_TCPIPServerState; - int m_CCDData_D10000[MAX_CCD_ADDR]; + + short *DM5000; + short *DM8000; + short *DM10000; + 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); + BOOL Response_PLC_DM5000_R(short _StartAddr,short _DataSize);//PLC State + BOOL Response_PLC_DM10000_R(short _StartAddr,short _DataSize);//CCD + BOOL Response_PLC_DM8000_W(short _StartAddr,short _DataSize);//PC State - BOOL RESPONSE_UNKNOWN_State(); + BOOL RESPONSE_PLC_DM_UNKNOWN(); LRESULT OnSocket(WPARAM wParam, LPARAM lParam); private: 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 3b332d3..0c11358 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 @@ -24,7 +24,10 @@ 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) { - + for(int i=0;iGetWindowText(str); cTempValue=T2A(str); g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCRunningState=static_cast(atoi(cTempValue)); - + + BYTE DM_Data[4]={0,0,0,0}; + g_pSo7_TCPIP_Server->DM5000[0]=static_cast(g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCRunningState); + for (int i=1;i<=8;i++) + { + DM_Data[0]=g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[(i-1)*2]; + DM_Data[1]=g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[(i-1)*2+1]; + g_pSo7_TCPIP_Server->DM5000[i]=(DM_Data[0]<<8)+DM_Data[1]; + } } @@ -201,11 +212,29 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type) { csTmp=m_DataList.GetItemText(iRow,iCol); cTmp=T2A(csTmp); - if (g_pSo7_TCPIP_Server) - { - g_pSo7_TCPIP_Server->m_CCDData_D10000[iRow]=atoi(cTmp); - } + m_CCDData_D10000[iRow]=atoi(cTmp); } + for (int iRow=0;iRow>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]; + } + } + break; } default:break; @@ -224,6 +253,18 @@ void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedCancel() CDialog::OnCancel(); } //===================================================================================== +BOOL CSo7_Util_PLC_TCPIP_SERVER::PreTranslateMessage(MSG* pMsg) +{ + if(pMsg->message==WM_KEYDOWN) + { + if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE) + { + return TRUE; + } + } + return CDialog::PreTranslateMessage(pMsg); +} +//===================================================================================== //Print message on edit control void CSo7_Util_PLC_TCPIP_SERVER::OutputWithScroll(const CString &strNewText,CEdit &edtOutput) { diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.h index ad475a5..dc865fd 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.h @@ -16,6 +16,7 @@ public: CString m_csMSG; CEdit m_edMSG; + int m_CCDData_D10000[MAX_CCD_ADDR]; protected: CEditableListCtrl m_DataList; @@ -30,6 +31,7 @@ public: afx_msg void OnBnClickedButtonPlcTcpipServerUpdatestate(); afx_msg void OnBnClickedButtonClearMsg(); afx_msg void OnBnClickedCancel(); + afx_msg BOOL PreTranslateMessage(MSG* pMsg); LRESULT OnSocket(WPARAM w, LPARAM p); 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 2dbd0d9..43d8cc7 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