模拟PLC进行TCPIP通信。

This commit is contained in:
TAO Cheng
2014-11-13 21:37:13 +08:00
parent c78c3c6f28
commit db75902f9e
4 changed files with 36 additions and 6 deletions
@@ -326,7 +326,7 @@ 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);
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
SendBuffer();
@@ -355,7 +355,7 @@ 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);
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
@@ -384,7 +384,7 @@ BOOL CSo7_TCPIP_Server::Response_PLC_DM8000_W(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);
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize]=static_cast<char>(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
SendBuffer();
@@ -468,7 +468,7 @@ void CSo7_Option::OnBnClickedOk()
if (g_pSo7_TCPIP_Server)
{
delete g_pSo7_TCPIP_Server;
g_pSo7_TCPIP=NULL;
g_pSo7_TCPIP_Server=NULL;
}
}
else if(((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->GetCheck())
@@ -96,6 +96,7 @@ BOOL CSo7_Util_PLC_TCPIP_SERVER::OnInitDialog()
GetDlgItem(IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER)->SetWindowTextW(_T("9600"));
m_UpdateListControl(E_LISTCTRL_TITLE);
m_UpdateListControl(E_LISTCTRL_CONTENT);
UpdateData(FALSE);
@@ -160,8 +161,8 @@ void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedButtonPlcTcpipServerUpdatestate()
g_pSo7_TCPIP_Server->DM5000[0]=static_cast<short>(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];
DM_Data[1]=g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[(i-1)*2];
DM_Data[0]=g_pSo7_TCPIP_Server->m_TCPIPServerState._PLCSensorState[(i-1)*2+1];
g_pSo7_TCPIP_Server->DM5000[i]=(DM_Data[0]<<8)+DM_Data[1];
}
}
@@ -198,6 +199,35 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
m_DataList.SetItemText(i,0,str);
m_DataList.SetItemText(i,1,_T("0"));
}
int iRow(0);
int iCol(1);
m_DataList.SetItemText(iRow++,iCol,_T("25000"));
m_DataList.SetItemText(iRow++,iCol,_T("1000"));
m_DataList.SetItemText(iRow++,iCol,_T("1000"));
m_DataList.SetItemText(iRow++,iCol,_T("1000"));
m_DataList.SetItemText(iRow++,iCol,_T("10000"));
m_DataList.SetItemText(iRow++,iCol,_T("1000"));
m_DataList.SetItemText(iRow++,iCol,_T("20000"));
m_DataList.SetItemText(iRow++,iCol,_T("102000"));
m_DataList.SetItemText(iRow++,iCol,_T("30000"));
m_DataList.SetItemText(iRow++,iCol,_T("40000"));
m_DataList.SetItemText(iRow++,iCol,_T("204000"));
m_DataList.SetItemText(iRow++,iCol,_T("50000"));
m_DataList.SetItemText(iRow++,iCol,_T("60000"));
m_DataList.SetItemText(iRow++,iCol,_T("700000"));
m_DataList.SetItemText(iRow++,iCol,_T("800000"));
m_DataList.SetItemText(iRow++,iCol,_T("303000"));
m_DataList.SetItemText(iRow++,iCol,_T("900000"));
m_DataList.SetItemText(iRow++,iCol,_T("900000"));
m_DataList.SetItemText(iRow++,iCol,_T("500000"));
m_DataList.SetItemText(iRow++,iCol,_T("406000"));
m_DataList.SetItemText(iRow++,iCol,_T("100000"));
m_DataList.SetItemText(iRow++,iCol,_T("100000"));
m_DataList.SetItemText(iRow++,iCol,_T("150000"));
m_DataList.SetItemText(iRow++,iCol,_T("150000"));
m_DataList.SetItemText(iRow++,iCol,_T("200000"));
m_DataList.SetItemText(iRow++,iCol,_T("100000"));
m_DataList.SetEditableItemRange(0,MAX_CCD_ADDR-1,1,1);
m_DataList.SetColorStyleItemRange(0,MAX_CCD_ADDR-1,0,2);
break;