This commit is contained in:
LIAO Tiegang
2015-01-21 13:59:40 +08:00
13 changed files with 166 additions and 20 deletions
@@ -2166,7 +2166,7 @@ SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config()
char *outBuff = NULL;
CString csAppPath;
GetAppPath(csAppPath);
CString cFileName=csAppPath+_T("\\so7_config.ini");
CString cFileName=csAppPath+_T("\\UtilitySo7Config.ini");
_wfopen_s(&m_pOutFile, cFileName, _T("wt"));
if (!m_pOutFile)
{
@@ -2400,7 +2400,7 @@ SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config()
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config()
SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config(int _FileName)
{
FILE *hConfigFile = NULL;
char szLine[MAX_BUFF_SIZE];
@@ -2409,7 +2409,15 @@ SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config()
char cTemp[30]={0};
CString csAppPath;
GetAppPath(csAppPath);
CString csSO7ConfigFile =csAppPath+_T("\\so7_config.ini");
CString csSO7ConfigFile(_T(""));
if (_FileName==1)
{
csSO7ConfigFile=csAppPath+_T("\\so7_config.ini");
}
else
{
csSO7ConfigFile=csAppPath+_T("\\UtilitySo7Config.ini");
}
_wfopen_s(&hConfigFile,csSO7ConfigFile,_T("rt"));
if(hConfigFile)
{
@@ -4485,7 +4493,7 @@ SSI_STATUS_MOTION CSO7_Proto::_calculate_straightline_motion(double dSpeedMM)
{
CString csAppPath;
GetAppPath(csAppPath);
CString csSO7ConfigFile = csAppPath + _T("\\Utility_Config.ini");
CString csSO7ConfigFile = csAppPath + _T("\\Utility_config.ini");
Load_SevenOcean_Inifile(csSO7ConfigFile);
g_machine.s_machine_config.x_axis._speed_max[0]=static_cast<char>(g_machine.s_machine_config.x_axis._speed_max[0]*dSpeedMM);
@@ -453,7 +453,7 @@ public:
SSI_STATUS_MOTION _process_replay_capture_commands(char *inBuff, FILE* pInFile);
SSI_STATUS_MOTION Load_SevenOcean_Inifile(CString csSO7INIFile);
SSI_STATUS_MOTION Save_SevenOcean_Inifile(CString csSO7INIFile);
SSI_STATUS_MOTION Load_So7_Config();
SSI_STATUS_MOTION Load_So7_Config(int _FileName=0);
SSI_STATUS_MOTION Save_So7_Config();
SSI_STATUS_MOTION GetAppPath(CString &Path);
SSI_STATUS_MOTION ExtractAppPath(CString &Path);
@@ -66,9 +66,12 @@ CSo7_TCPIP_Server::CSo7_TCPIP_Server()
DM5000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
DM8000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
DM10000= (short *)malloc(sizeof(short)*MAX_DM_PAGE_NUMBER);
DM200= (short *)malloc(sizeof(short)*200);
memset(DM5000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
memset(DM8000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
memset(DM10000,0,sizeof(short)*MAX_DM_PAGE_NUMBER);
memset(DM200,0,sizeof(short)*200);
m_TCPIPMsg.Init();
}
@@ -88,6 +91,8 @@ CSo7_TCPIP_Server::~CSo7_TCPIP_Server()
DM8000=NULL;
free(DM10000);
DM10000=NULL;
free(DM200);
DM200=NULL;
}
//================================================================
int CSo7_TCPIP_Server::Init_Winsock()
@@ -307,6 +312,38 @@ BOOL CSo7_TCPIP_Server::Response_Handshake()
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_PLC_DM200_R(short _StartAddr,short _DataSize)
{
if(m_ClientSocket[m_nActiveClient] == INVALID_SOCKET)
{
return FALSE;
}
m_ClearSendBuf();
memcpy(m_TCPIPBuf[CH_SEND]._buffer,DRW_SData,sizeof(DRW_SData));
short sData(0);
_StartAddr-=200;
if ((_StartAddr+_DataSize)>=MAX_DM_PAGE_NUMBER)
{
_DataSize=MAX_DM_PAGE_NUMBER-_StartAddr;
}
for (int i=0;i<_DataSize;i++)
{
sData=DM200[_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;
}
short sDataSize(0);
sDataSize=(DRW_SDataIndexData-DRW_SDataHeadDataSize+_DataSize*2);
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize1]=static_cast<char>((sDataSize>>8) & 0x0ff);
m_TCPIPBuf[CH_SEND]._buffer[DRW_SDataIndexDataSize2]=static_cast<char>(sDataSize & 0x0ff);
m_TCPIPBuf[CH_SEND]._size=DRW_SDataIndexData+_DataSize*2;
SendBuffer();
return TRUE;
}
//================================================================
BOOL CSo7_TCPIP_Server::Response_PLC_DM5000_R(short _StartAddr,short _DataSize)
{
@@ -570,7 +607,12 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
m_TCPIPMsg._CmdType=0;
m_TCPIPMsg._DataAddr=iAddr;
m_TCPIPMsg._DataSize=iDataSize;
if (iAddr>=20000)
if (iAddr>=200)
{
Response_PLC_DM200_R(iAddr,iDataSize);
m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_STATE;
}
else if (iAddr>=20000)
{
m_TCPIPMsg._MsgType=RESPONSE_READ_ERRCODE;
}
@@ -634,6 +676,26 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s)
RESPONSE_PLC_DM_UNKNOWN();
m_TCPIPMsg._MsgType=RESPONSE_WRITE_PLC_STATE;
}
else if (iAddr>=200)
{
int iBuffsize(0);
int iStartAddr(0);
iStartAddr=iAddr-200;
bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RSDataIndexBufSize1];
bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RSDataIndexBufSize2];
iBuffsize=(bData[0]<<8)+bData[1];
iBuffsize-=DRW_RDataCCLen;
for (int i=0;i<iBuffsize;i+=2)
{
bData[0]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexData+i];
bData[1]=m_TCPIPBuf[CH_RECV]._buffer[DRW_RDataIndexData+i+1];
DM200[iStartAddr++]=(bData[0]<<8)+bData[1];
TRACE2("DM%d=%d\r\n",iAddr+199,DM200[iStartAddr-1]);
}
m_TCPIPMsg._UpdateData=2;
RESPONSE_PLC_DM_UNKNOWN();
m_TCPIPMsg._MsgType=RESPONSE_WRITE_PLC_STATE;
}
else
{
RESPONSE_PLC_DM_UNKNOWN();
@@ -53,6 +53,7 @@ enum TCPIP_RESPONSE_RESULT
RESPONSE_READ_SENSOR_STATE,
RESPONSE_READ_CCD_DATA,
RESPONSE_READ_ERRCODE,
RESPONSE_READ_PLC_STATUS,
RESPONSE_RESULT
};
@@ -121,12 +122,14 @@ public:
short *DM5000;
short *DM8000;
short *DM10000;
short *DM200;
BOOL StartServer(HWND _hWnd,short _nPort);
BOOL StopServer();
BOOL _Send_Cmd_Write_State();
BOOL Response_Handshake();
BOOL Response_PLC_DM200_R(short _StartAddr,short _DataSize);//PLC State
BOOL Response_PLC_DM5000_R(short _StartAddr,short _DataSize);//PLC State
BOOL Response_PLC_DM10000_R(short _StartAddr,short _DataSize);//CCD
@@ -36,7 +36,7 @@ extern "C" EXP_IMP SSI_STATUS_MOTION Machine_Startup(bool bOfflineOnly,EHOME_MAC
m_pSO7_Proto->_start_machine();
if (rStatus==SSI_STATUS_MOTION_NORMAL)
{
rStatus=m_pSO7_Proto->Load_So7_Config();
rStatus=m_pSO7_Proto->Load_So7_Config(1);
rStatus=LoadMotionParameter();
if (rStatus==SSI_STATUS_MOTION_NORMAL)
{
@@ -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
@@ -128,7 +128,7 @@ BEGIN
CTEXT "Y",IDC_STATIC,84,291,8,8
CTEXT "Z",IDC_STATIC,143,291,8,8
GROUPBOX "ËٶȵµÎ»",IDC_STATIC,160,183,53,81
PUSHBUTTON "配置so7_config",IDC_BUTTON_SETUP_SO7CONFIG,28,94,63,25,BS_MULTILINE
PUSHBUTTON "ÅäÖÃINIÎļþ",IDC_BUTTON_SETUP_SO7CONFIG,28,94,63,25,BS_MULTILINE
LTEXT "1",IDC_STATIC_IO_ADDR1,403,28,8,8
LTEXT "2",IDC_STATIC_IO_ADDR2,403,44,8,8
LTEXT "3",IDC_STATIC_IO_ADDR3,403,60,8,8
@@ -1096,8 +1096,9 @@ BEGIN
EDITTEXT IDC_EDIT_PLC_TCPIP_SERVER_PORTNUMBER,51,30,40,14,ES_AUTOHSCROLL
LTEXT "Port",IDC_STATIC,29,33,14,8
CONTROL "CCD1 DM",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,32,110,46,10
CONTROL "DM 5000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000,"Button",BS_AUTORADIOBUTTON,93,110,44,10
CONTROL "DM 8000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000,"Button",BS_AUTORADIOBUTTON,156,110,44,10
CONTROL "DM 5000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000,"Button",BS_AUTORADIOBUTTON,96,110,44,10
CONTROL "DM 8000",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000,"Button",BS_AUTORADIOBUTTON,158,110,44,10
CONTROL "DM 200",IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM200,"Button",BS_AUTORADIOBUTTON,220,110,40,10
END
IDD_SO7_UTIL_CAMERA DIALOGEX 0, 0, 417, 271
@@ -1851,12 +1852,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
@@ -2815,7 +2816,7 @@ BEGIN
END
END
#endif // 英语(美国) resources
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
@@ -222,7 +222,7 @@ BOOL CSO7_Send_Parameter::OnInitDialog()
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA2))->SetWindowTextW(_T("缓冲距离(0-255)"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA3))->SetWindowTextW(_T("最低速率(0-255)"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA4))->SetWindowTextW(_T("刷新周期(0-255)"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA5))->SetWindowTextW(_T("最大速率(0.0-10.0)"));
((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA5))->SetWindowTextW(_T("最大速率(0.0-65.5)"));
}
else
{
@@ -238,7 +238,10 @@ BOOL CSO7_Send_Parameter::OnInitDialog()
GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Y)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_SO7_CONTROL_MODE_Z)->EnableWindow(FALSE);
}
else
{
UpdateControlMode(0);
}
return TRUE; // return TRUE unless you set the focus to a control
}
//=========================================================================================
@@ -558,7 +558,7 @@ void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigOk()
CString m_csMsg=_T("");
m_pSO7_Proto->Save_So7_Config();
m_pSO7_Proto->GetAppPath(m_csMsg);
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\so7_config.ini。");
m_csMsg=_T("配置文件保存在:")+m_csMsg+_T("\\UtilitySo7Config.ini。");
OutputWithScroll(m_csMsg,m_edit_MsgOut);
}
void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigSetDefault()
@@ -148,16 +148,18 @@ BOOL CSo7_Option::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_TC4000))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_MV900))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_IP_CAMERA))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_CONTROLLER))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_KEYENCE_LASER))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_VERIFICATION_ALGORITHM))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_TEST_IMAGE_DLL))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->SetCheck(FALSE);
#ifdef _RELEASE_SO7_CONTROLER_ONLY
#ifdef _RELEASE_SO7_CONTROLER_ONLY/*
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_OMRON_PLC_SERVER))->EnableWindow(FALSE);*/
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SDK3000))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV2000E))->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_RADIO_VIDEOCARD_SV4000E))->EnableWindow(FALSE);
@@ -58,6 +58,7 @@ BEGIN_MESSAGE_MAP(CSo7_Util_PLC_TCPIP_SERVER, CDialog)
ON_BN_CLICKED(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_CCD_DM, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrCcdDm)
ON_BN_CLICKED(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM5000, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrDm5000)
ON_BN_CLICKED(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrDm8000)
ON_BN_CLICKED(IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM200, &CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrDm200)
END_MESSAGE_MAP()
@@ -417,6 +418,19 @@ void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrDm8000()
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
}
//=====================================================================
void CSo7_Util_PLC_TCPIP_SERVER::OnBnClickedRadioPlcTcpipServerAddrDm200()
{
m_UpdateListControl(E_LISTCTRL_CONTROL2DATA);
if (m_DMAddrList==DM_ADDR_DM5000)
{
m_UpdateControls(FALSE);
}
m_DMAddrList=DM_ADDR_DM200;
m_UpdateListControl(E_LISTCTRL_TITLE);
m_UpdateListControl(E_LISTCTRL_DATA2CONTROL);
}
//=====================================================================
void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
{
switch(_type)
@@ -616,6 +630,31 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
m_DataList.SetEditableItemRange(0,MAX_DM_PAGE_NUMBER-1,1,1);
m_DataList.SetColorStyleItemRange(0,MAX_DM_PAGE_NUMBER-1,0,2);
}
else if (m_DMAddrList==DM_ADDR_DM200)
{
LVCOLUMN vColumn;
vColumn.mask=LVCF_TEXT;
vColumn.pszText=_T("DM200地址");
vColumn.cchTextMax=10;
m_DataList.SetColumn(0,&vColumn);
iStartRow=0;
iEndRow=MAX_DM_PAGE_NUMBER;
for (int i=iStartRow;i<iEndRow;i++)
{
str.Format(_T("%d"),200+i);
m_DataList.SetItemText(i,0,str);
m_DataList.SetItemText(i,1,_T(""));
m_DataList.SetItemText(i,2,_T(""));
}
int Addr(25);
m_DataList.SetItemText(Addr++,2,_T("状态"));
Addr=35;
m_DataList.SetItemText(Addr++,2,_T("发送命令"));
m_DataList.SetItemText(Addr++,2,_T("坐标编号"));
m_DataList.SetEditableItemRange(0,MAX_DM_PAGE_NUMBER-1,1,1);
m_DataList.SetColorStyleItemRange(0,MAX_DM_PAGE_NUMBER-1,0,2);
}
else
{
iStartRow=0;
@@ -687,6 +726,18 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
m_DataList.SetItemText(i,1,str);
}
}
else if (m_DMAddrList==DM_ADDR_DM200)
{
iStartRow=0;
iEndRow=200;
for (int i=iStartRow;i<iEndRow;i++)
{
str.Format(_T("%d"),g_pSo7_TCPIP_Server->DM200[i]);
if(i==25)
str.Format(_T("0x%X"),g_pSo7_TCPIP_Server->DM200[i]);
m_DataList.SetItemText(i,1,str);
}
}
else
{
;
@@ -748,6 +799,17 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type)
g_pSo7_TCPIP_Server->DM8000[iRow]=static_cast<short>(atoi(cTmp));
}
}
else if (m_DMAddrList==DM_ADDR_DM200)
{
iStartRow=0;
iEndRow=200;
for (int iRow=iStartRow;iRow<iEndRow;iRow++)
{
csTmp=m_DataList.GetItemText(iRow,iCol);
cTmp=T2A(csTmp);
g_pSo7_TCPIP_Server->DM200[iRow]=static_cast<short>(atoi(cTmp));
}
}
break;
}
default:break;
@@ -922,3 +984,4 @@ CString CSo7_Util_PLC_TCPIP_SERVER::TCPIPMsg(s_tcpip_msg_data _MsgData)
@@ -5,6 +5,7 @@ enum DM_ADDR_LIST
DM_ADDR_CCD,
DM_ADDR_DM5000,
DM_ADDR_DM8000,
DM_ADDR_DM200,
DM_ADDR_LIST
};
// CSo7_Util_PLC_TCPIP_SERVER dialog
@@ -52,4 +53,5 @@ public:
afx_msg void OnBnClickedRadioPlcTcpipServerAddrCcdDm();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm5000();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm8000();
afx_msg void OnBnClickedRadioPlcTcpipServerAddrDm200();
};
@@ -951,6 +951,8 @@
#define IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8000 1806
#define IDC_EDIT_MOVETO_DEG 1807
#define IDC_RADIO_READ_LIMIT_SWITCH 1807
#define IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM8001 1807
#define IDC_RADIO_PLC_TCPIP_SERVER_ADDR_DM200 1807
#define IDC_BUTTON_TESA_STAR_SENDMSG 1808
#define IDC_EDIT_TESA_STAR_E_LOG 1809
#define IDC_BUTTON_TESA_STAR_CLEAR_LOG 1810