// SetSo7MotionConfig.cpp : implementation file // #include "stdafx.h" #include "resource.h" #include "..\..\..\SevenOcean\SO7_Proto.h" #include "ListCtrlItemEdit.h" #include "EditableListCtrl.h" #include "SetSo7MotionConfig.h" #include "afxdialogex.h" extern CSO7_Proto* m_pSO7_Proto; // CSetSo7MotionConfig dialog IMPLEMENT_DYNAMIC(CSetSo7MotionConfig, CMFCPropertyPage) CSetSo7MotionConfig::CSetSo7MotionConfig():CMFCPropertyPage(CSetSo7MotionConfig::IDD) { } CSetSo7MotionConfig::~CSetSo7MotionConfig() { } void CSetSo7MotionConfig::DoDataExchange(CDataExchange* pDX) { CMFCPropertyPage::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST_SO7_MOTION_CONFIG, m_ConfigList); DDX_Control(pDX, IDC_EDIT_SO7_MOTION_CONFIG_MSGOUT, m_edit_MsgOut); } BEGIN_MESSAGE_MAP(CSetSo7MotionConfig, CMFCPropertyPage) ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_CONFIG_OK, &CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigOk) ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_CONFIG_CANCEL, &CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigCancel) END_MESSAGE_MAP() // CSetSo7MotionConfig message handlers BOOL CSetSo7MotionConfig::OnInitDialog() { CMFCPropertyPage::OnInitDialog(); RECT m_rect; m_ConfigList.GetClientRect(&m_rect); //获取list的客户区 m_ConfigList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //设置list风格 m_ConfigList.InsertColumn(0,_T("编号"),LVCFMT_LEFT, m_rect.right/10); m_ConfigList.InsertColumn(1,_T("参数名"),LVCFMT_LEFT, m_rect.right*3/10); m_ConfigList.InsertColumn(2,_T("值"),LVCFMT_LEFT, m_rect.right*2/10); m_ConfigList.InsertColumn(3,_T("描述"),LVCFMT_LEFT, m_rect.right*4/10); for (int i = 1; i < 100; i++) { CString str; str.Format(_T("%d"), i); m_ConfigList.InsertItem(i, str); } UpdateLabelName(); UpdateDataValue(); m_ConfigList.SetMaxItemIndex(0,13,2,2); return TRUE; } void CSetSo7MotionConfig::UpdateLabelName() { int iRow=0; int iCol=1; CString cStr(""); cStr="CLOSE_LOOP_ENABLED"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="MOTION_RETRY_TIMES"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:5"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="SHIFT_POSITION_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="SHIFT_POSITION_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="SHIFT_POSITION_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="SDK3000_SLEEP_COUNT"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:550000"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="GET_USB_MESSAGE_METHOD"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="WRITE_DATA_SLEEP_TIME"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="ACCURA_ERROR_PULSE_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="ACCURA_ERROR_PULSE_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="ACCURA_ERROR_PULSE_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="EQUIDISTANCE_PULSE_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="EQUIDISTANCE_PULSE_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr="EQUIDISTANCE_PULSE_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr="default:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; } void CSetSo7MotionConfig::UpdateDataValue() { int iRow=0; int iCol=2; CString cStr(""); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion._EnCloseLoop); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion._RetryTimes); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionX); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionY); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%.3f"),m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionZ); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_CntThreadSleepVal); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.GetInterruptMsgMethod); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_WriteDataSleepTime); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseX); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseY); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseZ); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_X); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Y); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Z); m_ConfigList.SetItemText(iRow++,iCol,cStr); } void CSetSo7MotionConfig::SaveDataValue() { UpdateData(TRUE); USES_CONVERSION; const char* cTemp; CString cStr(""); int iRow=0; int iCol=2; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion._EnCloseLoop=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion._RetryTimes=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionX=atof(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionY=atof(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion._ShiftPositionZ=atof(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_CntThreadSleepVal=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.GetInterruptMsgMethod=static_cast(atoi(cTemp)); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_WriteDataSleepTime=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseX=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseY=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_AccuraErrPulseZ=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_X=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Y=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_EQUIDIS_Z=atoi(cTemp); iRow++; } void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigOk() { SaveDataValue(); 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。"); OutputWithScroll(m_csMsg,m_edit_MsgOut); } void CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigCancel() { UpdateDataValue(); } //===================================================================================== //Print message on edit control void CSetSo7MotionConfig::OutputWithScroll(const CString &strNewText,CEdit &edtOutput) { CString strOutput; edtOutput.GetWindowText(strOutput); strOutput += strNewText; if ("\r\n" != strOutput.Right(2)) { strOutput += "\r\n"; } int iCount = strOutput.GetLength(); edtOutput.SetRedraw(FALSE); edtOutput.SetWindowText(strOutput); int iLine = edtOutput.GetLineCount(); edtOutput.LineScroll(iLine, 0); edtOutput.SetSel(iCount, iCount); edtOutput.SetRedraw(TRUE); }