// 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) ON_BN_CLICKED(IDC_BUTTON_SO7_MOTION_CONFIG_SET_DEFAULT, &CSetSo7MotionConfig::OnBnClickedButtonSo7MotionConfigSetDefault) 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*2/40); m_ConfigList.InsertColumn(1,_T("参数名"),LVCFMT_LEFT, m_rect.right*12/40); m_ConfigList.InsertColumn(2,_T("值"),LVCFMT_LEFT, m_rect.right*3/40); m_ConfigList.InsertColumn(3,_T("描述"),LVCFMT_LEFT, m_rect.right*22/40); for (int i = 1; i < 100; i++) { CString str; str.Format(_T("%d"), i); m_ConfigList.InsertItem(i, str); } UpdateLabelName(); UpdateDataValue(); m_ConfigList.SetEditableItemRange(0,22,2,2); m_ConfigList.SetColorStyleItemRange(0,24,0,3); return TRUE; } void CSetSo7MotionConfig::UpdateLabelName() { int iRow=0; int iCol=1; CString cStr(""); cStr=L"CLOSE_LOOP_ENABLED"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件闭环判断功能;0:禁用,1:使能;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"MOTION_RETRY_TIMES"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件闭环判断重试次数;有效范围:0-255;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SHIFT_POSITION_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件闭环判断X偏移距离(mm);有效范围:0-65535;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SHIFT_POSITION_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件闭环判断Y偏移距离(mm);有效范围:0-65535;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SHIFT_POSITION_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件闭环判断Z偏移距离(mm);有效范围:0-65535;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"GET_USB_MESSAGE_METHOD"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"USB读取消息方式;0:Firmware V3.X,1:Firmware V6.X;默认值:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"WRITE_DATA_SLEEP_TIME"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"USB通信休息时间(ms);有效范围:0-255;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"ACCURA_ERROR_PULSE_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"允许定位误差脉冲数;有效范围:1-255;默认值:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"ACCURA_ERROR_PULSE_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"允许定位误差脉冲数;有效范围:1-255;默认值:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"ACCURA_ERROR_PULSE_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"允许定位误差脉冲数;有效范围:1-255;默认值:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"EQUIDISTANCE_PULSE_X"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"输出等间距脉冲;有效范围:0-255;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"EQUIDISTANCE_PULSE_Y"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"输出等间距脉冲;有效范围:0-255;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"EQUIDISTANCE_PULSE_Z"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"输出等间距脉冲;有效范围:0-255;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"CNC_DEADLOCK_SOLUTION"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"解决CNC运行停顿问题;0:禁用,1:启用;默认值:1"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"CNC_DEADLOCK_MAX_CNTS"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"CNC运行停顿判断次数;有效范围:1-255;默认值:6"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"TOUCH_PROBE_ENABLE"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"接触探针功能;0:禁用,1:使能;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"JOYSTICK_ENABLE"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"摇杆功能;0:禁用,1:使能;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"DEBUG_LOG_ENABLE"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"软件运行记录功能;0:禁用,1:使能;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; //=================VIDEOCARD================== cStr=L"SDK3000_SLEEP_COUNT"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"SDK3000去条纹参数;有效范围:500000-700000;默认值:550000"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SV4000E_DENOISE_PARA_CHANNEL1"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"SV4000E降噪参数;有效范围:5-100;默认值:70"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SV4000E_DENOISE_PARA_CHANNEL2"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"SV4000E降噪参数;有效范围:5-100;默认值:70"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SV4000E_DENOISE_PARA_CHANNEL3"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"SV4000E降噪参数;有效范围:5-100;默认值:70"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"SV4000E_DENOISE_PARA_CHANNEL4"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"SV4000E降噪参数;有效范围:5-100;默认值:70"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"MACHINE_CONTROLLER_TYPE"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"控制器类型;保留项;默认值:0"; m_ConfigList.SetItemText(iRow,iCol+2,cStr); iRow++; cStr=L"MACHINE_VIDEOCARD_TYPE"; m_ConfigList.SetItemText(iRow,iCol,cStr); cStr=L"视频卡类型;保留项;默认值: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.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); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SDK3000_CntThreadSleepVal); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[0]); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[1]); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[2]); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[3]); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_MachineType); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_VideoCardType); 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.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++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_SDK3000_CntThreadSleepVal=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[0]=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[1]=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[2]=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_SV4000E_DenoisePara[3]=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::OnBnClickedButtonSo7MotionConfigSetDefault() { m_pSO7_Proto->so7_config_para_set_default(); UpdateDataValue(); } 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); } BOOL CSetSo7MotionConfig::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_KEYDOWN) { if(pMsg->wParam==VK_RETURN || pMsg->wParam==VK_ESCAPE) { return TRUE; } } return CDialog::PreTranslateMessage(pMsg); }