新增外触发测试功能。

This commit is contained in:
TAO Cheng
2014-06-20 18:25:58 +08:00
parent 41b9e8314b
commit 7c3f60c985
13 changed files with 593 additions and 17 deletions
@@ -4784,8 +4784,39 @@ SSI_STATUS_MOTION CSO7_Proto::so7_SetDO(int Channel,BYTE bDOSts)
return SSI_STATUS_MOTION_NORMAL;
}
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMode,short _ParaNumber,short* _ParaData)
{
short SetStartIndex(0);
short SetParaNumber(0);
do
{
if ((_ParaNumber-SetStartIndex)>20)
{
SetParaNumber=20;
}
else
{
SetParaNumber=(_ParaNumber-SetStartIndex);
}
_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis,_TrigMode,SetStartIndex,SetParaNumber,_ParaData);
SetStartIndex+=SetParaNumber;
} while ((_ParaNumber-SetStartIndex)>0);
return SSI_STATUS_MOTION_NORMAL;
}
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_trig_para(short _Index,char& _cAxis,char& _TrigMode,short& _ParaNumber,short& _ParaData)
{
_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(_Index);
_cAxis=g_machine.TrigPara.TrigPulseActiveAxis;
_TrigMode=g_machine.TrigPara.TrigPulseMethod;
_ParaNumber=static_cast<short>(g_machine.TrigPara.TrigTotalNo._long_);
_ParaData=static_cast<short>(g_machine.TrigPara.TrigReadPara._long_);
return SSI_STATUS_MOTION_NORMAL;
}
//********************************************************************************//
//********************************************************************************//
//*******************************************************************************//
//==================================================================================
@@ -6098,7 +6129,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaI
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
char cBuff(0);
g_machine.TrigPara.TrigReadIndex._long_=ParaIndex;
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_TRIG_PULSE_PARA;
cBuff = (ParaIndex>>8) & 0x0ff;
@@ -6137,7 +6168,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char Activ
cBuff = ParaNumber & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+7) = cBuff;
int j=8;
for (short i=0;i<ParaNumber;i++)
for (short i=StartIndex;i<(StartIndex+ParaNumber);i++)
{
if (Para[i]<0)
{
@@ -6603,16 +6634,16 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_TRIG_PULSE_PARA()
g_machine.TrigPara.TrigCurIndex._char_[2]=0;
g_machine.TrigPara.TrigCurIndex._char_[3]=0;
index++;
g_machine.TrigPara.TrigCurPara._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigReadPara._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigCurPara._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigCurPara._char_[2]=0;
g_machine.TrigPara.TrigCurPara._char_[3]=0;
g_machine.TrigPara.TrigReadPara._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigReadPara._char_[2]=0;
g_machine.TrigPara.TrigReadPara._char_[3]=0;
index++;
if (g_machine.TrigPara.TrigCurPara._long_>32768)
if (g_machine.TrigPara.TrigReadPara._long_>32768)
{
g_machine.TrigPara.TrigCurPara._long_-=32768;
g_machine.TrigPara.TrigCurPara._long_*=-1;
g_machine.TrigPara.TrigReadPara._long_-=32768;
g_machine.TrigPara.TrigReadPara._long_*=-1;
}
return SSI_STATUS_MOTION_NORMAL;
}
@@ -242,7 +242,12 @@ typedef struct s_so7_trigger_pulse
{
long _long_;
char _char_[4];
}TrigCurPara;
}TrigReadIndex;
union
{
long _long_;
char _char_[4];
}TrigReadPara;
} SO7TRIGPULSE;
//--------------------------------------------------------------------
@@ -490,6 +495,9 @@ public:
SSI_STATUS_MOTION so7_GetDIO(int Channel,BYTE& bDISts);
SSI_STATUS_MOTION so7_SetDO(int Channel,BYTE bDOSts);
SSI_STATUS_MOTION so7_motion_set_trig_para(char _cAxis,char _TrigMode,short _ParaNumber,short* _ParaData);
SSI_STATUS_MOTION so7_motion_get_trig_para(short _Index,char& _cAxis,char& _TrigMode,short& _ParaNumber,short& _ParaData);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_X(char SpeedGear);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Y(char SpeedGear);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Z(char SpeedGear);
@@ -4659,3 +4659,21 @@ Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
@@ -25,6 +25,8 @@ IMPLEMENT_DYNAMIC(CEditableListCtrl, CMFCListCtrl)
m_nColorMinCol=0;
m_nColorMaxRow=0;
m_nColorMaxCol=0;
m_nSelectedRow=0;
m_nSelectedCol=0;
}
CEditableListCtrl::~CEditableListCtrl()
@@ -34,6 +36,7 @@ CEditableListCtrl::~CEditableListCtrl()
BEGIN_MESSAGE_MAP(CEditableListCtrl, CMFCListCtrl)
ON_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
@@ -56,7 +59,7 @@ COLORREF CEditableListCtrl::OnGetCellBkColor(int nRow, int nColum)
{
return CMFCListCtrl::OnGetCellBkColor(nRow, nColum);
}
if (nRow<=m_nColorMaxRow)
if (nRow<m_nColorMaxRow)
{
if (m_bMarkSortedColumn && nColum == m_iSortedColumn)
{
@@ -65,6 +68,10 @@ COLORREF CEditableListCtrl::OnGetCellBkColor(int nRow, int nColum)
return (nRow % 2) == 0 ? RGB(255, 255, 255) : RGB(193, 233, 242);
}
else if (nRow==m_nColorMaxRow)
{
return RGB(225, 255, 0);
}
else
{
return CMFCListCtrl::OnGetCellBkColor(nRow, nColum);
@@ -81,7 +88,29 @@ HFONT CEditableListCtrl::OnGetCellFont(int nRow, int nColum, DWORD /*dwData* = 0
}
return NULL;
}
//===============================================================
void CEditableListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
POSITION pos;
// 检查是否有Item被选中,没有时不进入编辑
pos = GetFirstSelectedItemPosition();
if( pos )
{
// 得到被点击的Item
LVHITTESTINFO testinfo;
testinfo.pt.x = point.x;
testinfo.pt.y = point.y; //点击时的鼠标位置
testinfo.flags = LVHT_ONITEMLABEL; //点击的必须是标题
if( SubItemHitTest(&testinfo)>=0 ) //没有点在有效区域,不进入编辑
{
m_nSelectedRow = testinfo.iItem; //被点击表项的行号
m_nSelectedCol = testinfo.iSubItem; //被点击表项的列号
}
}
CMFCListCtrl::OnLButtonDown(nFlags, point);
}
//===============================================================
void CEditableListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// ¼ì²éÊÇ·ñÓÐItemÕý±»±à¼­
@@ -169,3 +198,10 @@ BOOL CEditableListCtrl::SetColorStyleItemRange(int _iMinRow,int _iMaxRow,int _i
m_nColorMaxCol=_iMaxCol;
return TRUE;
}
//===============================================================
BOOL CEditableListCtrl::SelectedItem(int& _row,int& _col)
{
_row=m_nSelectedRow;
_col=m_nSelectedCol;
return TRUE;
}
@@ -28,6 +28,8 @@ protected:
BOOL m_bEditing;
BOOL m_bColor;
BOOL m_bModifyFont;
int m_nSelectedRow; //行号
int m_nSelectedCol; //列号
DECLARE_MESSAGE_MAP()
public:
@@ -35,8 +37,10 @@ public:
BOOL EndEditItem(BOOL bIsValid=TRUE);
BOOL SetEditableItemRange(int _iMinRow,int _iMaxRow,int _iMinCol,int _iMaxCol);
BOOL SetColorStyleItemRange(int _iMinRow,int _iMaxRow,int _iMinCol,int _iMaxCol);
BOOL SelectedItem(int& _row,int& _col);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};
@@ -966,6 +966,32 @@ BEGIN
EDITTEXT IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER,87,62,40,14,ES_AUTOHSCROLL
END
IDD_SO7_UTIL_EXTERNAL_TRIG DIALOGEX 0, 0, 333, 316
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "External Trigger"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "X",IDC_RADIO_SO7_EXTRIG_X,"Button",BS_AUTORADIOBUTTON | WS_GROUP,41,33,20,10
CONTROL "Y",IDC_RADIO_SO7_EXTRIG_Y,"Button",BS_AUTORADIOBUTTON,77,33,20,10
CONTROL "Z",IDC_RADIO_SO7_EXTRIG_Z,"Button",BS_AUTORADIOBUTTON,113,33,20,10
CONTROL "等间距触发",IDC_RADIO_SO7_EXTRIG_EQDIS,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,75,56,10
CONTROL "指定位移触发",IDC_RADIO_SO7_EXTRIG_SPECLOCATION,"Button",BS_AUTORADIOBUTTON,36,93,64,10
LTEXT "触发间距",IDC_STATIC,113,74,33,8
LTEXT "触发点数",IDC_STATIC,113,92,33,8
EDITTEXT IDC_EDIT_SO7_EXTRIG_EQDIS,158,71,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SO7_EXTRIG_SPECLOCATION,158,89,40,14,ES_AUTOHSCROLL
CONTROL "",IDC_LIST_SO7_EXTRIG_SPECLOCATION,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,33,113,254,77
EDITTEXT IDC_EDIT_SO7_EXTRIG_RESULT,19,208,294,80,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
PUSHBUTTON "Exit",IDCANCEL,276,295,50,14
PUSHBUTTON "开始",IDC_BUTTON_SO7_EXTRIG_START,171,30,50,14
GROUPBOX "外触发轴",IDC_STATIC,17,15,125,41
PUSHBUTTON "停止",IDC_BUTTON_SO7_EXTRIG_STOP,243,30,50,14
GROUPBOX "外触发参数",IDC_STATIC,17,58,297,144
GROUPBOX "操作",IDC_STATIC,150,15,163,40
PUSHBUTTON "设置",IDC_BUTTON_SO7_EXTRIG_SET_PARA,238,70,50,14
PUSHBUTTON "读取",IDC_BUTTON_SO7_EXTRIG_GET_PARA,238,90,50,14
END
/////////////////////////////////////////////////////////////////////////////
//
@@ -1129,6 +1155,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 277
END
IDD_SO7_UTIL_EXTERNAL_TRIG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 326
TOPMARGIN, 7
BOTTOMMARGIN, 309
END
END
#endif // APSTUDIO_INVOKED
@@ -22,6 +22,7 @@
#include "SetSo7MotionConfig.h"
#include "So7_Config_Pages.h"
#include "So7_XBoxController.h"
#include "So7_Util_External_Trig.h"
#include "SO7_UtilDlg.h"
// CSO7_UtilDlg ¶Ô»°¿ò
@@ -1558,5 +1559,10 @@ void CSO7_UtilDlg::OnBnClickedButtonSetScaleCoefficient()
//======================================================
void CSO7_UtilDlg::OnBnClickedButtonSo7ExternalTrig()
{
// TODO: Add your control notification handler code here
m_KillTimer();
CSo7_Util_External_Trig* pSo7_Util_External_Trig=new CSo7_Util_External_Trig();
pSo7_Util_External_Trig->DoModal();
delete pSo7_Util_External_Trig;
pSo7_Util_External_Trig=NULL;
SetTimer(1,m_ReadAxisIntervalTime,NULL);
}
@@ -0,0 +1,368 @@
// So7_Util_External_Trig.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "EditableListCtrl.h"
#include "So7_Util_External_Trig.h"
#include "afxdialogex.h"
extern CSO7_Proto* m_pSO7_Proto;
// CSo7_Util_External_Trig dialog
IMPLEMENT_DYNAMIC(CSo7_Util_External_Trig, CDialog)
CSo7_Util_External_Trig::CSo7_Util_External_Trig(CWnd* pParent /*=NULL*/)
: CDialog(CSo7_Util_External_Trig::IDD, pParent)
{
for (int i=0;i<65535;i++)
{
m_TrigPara[i]=0;
}
}
CSo7_Util_External_Trig::~CSo7_Util_External_Trig()
{
}
void CSo7_Util_External_Trig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_SO7_EXTRIG_RESULT, m_EdMsg);
DDX_Control(pDX, IDC_LIST_SO7_EXTRIG_SPECLOCATION, m_ParaList);
}
BEGIN_MESSAGE_MAP(CSo7_Util_External_Trig, CDialog)
ON_BN_CLICKED(IDC_RADIO_SO7_EXTRIG_EQDIS, &CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis)
ON_BN_CLICKED(IDC_RADIO_SO7_EXTRIG_SPECLOCATION, &CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigSpeclocation)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_START, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStart)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_STOP, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStop)
ON_EN_KILLFOCUS(IDC_EDIT_SO7_EXTRIG_SPECLOCATION, &CSo7_Util_External_Trig::OnEnKillfocusEditSo7ExtrigSpeclocation)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_SET_PARA, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigSetPara)
ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_GET_PARA, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigGetPara)
END_MESSAGE_MAP()
// CSo7_Util_External_Trig message handlers
//=====================================================================
BOOL CSo7_Util_External_Trig::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
m_TrigMode=E_DIS_TRIG_PULSE_EQDIS;
m_ActiveAxis=E_AXIS_X;
m_ParaNumber=1;
m_TrigPara[0]=0;
m_ReturnPara=m_TrigPara[0];
m_UpdateCtrls();
m_ParaListRows=0;
m_UpdateListControl(E_LISTCTRL_TITLE);
m_UpdateListControl(E_LISTCTRL_NO);
return TRUE; // return TRUE unless you set the focus to a control
}
//=====================================================================
void CSo7_Util_External_Trig::m_UpdateListControl(int _type)
{
switch(_type)
{
case E_LISTCTRL_TITLE:
{
RECT m_rect;
m_ParaList.GetClientRect(&m_rect); //获取list的客户区
m_ParaList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); //设置list风格
m_ParaList.InsertColumn(0,_T("编号"),LVCFMT_LEFT, m_rect.right*1/4);
m_ParaList.InsertColumn(1,_T("触发间隔"),LVCFMT_LEFT, m_rect.right*3/4);
m_ParaListSelectedRow=0;
break;
}
case E_LISTCTRL_NO:
{
int iStartRow(0),iEndRow(0);
if(m_ParaListRows==m_ParaNumber)
{
;
}
else if(m_ParaListRows<m_ParaNumber)
{
iStartRow=m_ParaListRows;
iEndRow=m_ParaNumber;
for (int i=iStartRow; i<iEndRow; i++)
{
CString str;
str.Format(_T("%d"),i+1);
m_ParaList.InsertItem(i,str);
m_ParaList.SetItemText(i,1,str);
}
}
else
{
iStartRow=m_ParaNumber;
iEndRow=m_ParaListRows;
for (int i=iStartRow; i<iEndRow; i++)
{
m_ParaList.SetItemText(i,0,_T(""));
m_ParaList.SetItemText(i,1,_T(""));
}
}
m_ParaListRows=m_ParaNumber;
m_ParaList.SetEditableItemRange(0,m_ParaListRows-1,1,1);
m_ParaList.SetColorStyleItemRange(0,m_ParaListRows-1,0,2);
break;
}
case E_LISTCTRL_CONTENT:
{
break;
}
default:break;
}
}
//=====================================================================================
void CSo7_Util_External_Trig::OnEnKillfocusEditSo7ExtrigSpeclocation()
{
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION))->GetWindowTextW(csTmp);
const char* cTmp=T2A(csTmp);
m_ParaNumber = static_cast<short>(atoi(cTmp));
m_UpdateListControl(E_LISTCTRL_NO);
}
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis()
{
m_TrigMode=E_DIS_TRIG_PULSE_EQDIS;
m_UpdateCtrls(1);
}
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigSpeclocation()
{
m_TrigMode=E_DIS_TRIG_PULSE_SPEC_LOCA;
m_UpdateCtrls(1);
}
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStart()
{
m_UpdatePara(TRUE);
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_START();
m_pSO7_Proto->so7_motion_set_position_xyz(m_EndPos[0],m_EndPos[1],m_EndPos[2],true);
}
//=====================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigStop()
{
m_pSO7_Proto->_send_cmd_SO7_CMD_TRIG_PULSE_STOP();
m_pSO7_Proto->so7_motion_set_position_xyz(m_BeginPos[0],m_BeginPos[1],m_BeginPos[2],true);
}
//=====================================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigSetPara()
{
m_UpdatePara(TRUE);
}
//=====================================================================================
void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigGetPara()
{
if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS)
{
m_ParaListSelectedRow=0;
}
else
{
m_ParaList.SelectedItem(m_ParaListSelectedRow,m_ParaListSelectedCol);
}
m_UpdatePara(FALSE);
}
//=====================================================================
void CSo7_Util_External_Trig::m_UpdateCtrls(int _type)
{
CString csTmp(_T(""));
double dTmp(0.0);
if (_type==0)
{
if(m_ActiveAxis==E_AXIS_X)
{
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_X))->SetCheck(true);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Y))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Z))->SetCheck(false);
dTmp=m_pSO7_Proto->ScaleToMM(m_ReturnPara,m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution);
}
else if (m_ActiveAxis==E_AXIS_Y)
{
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_X))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Y))->SetCheck(true);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Z))->SetCheck(false);
dTmp=m_pSO7_Proto->ScaleToMM(m_ReturnPara,m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution);
}
else
{
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_X))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Y))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Z))->SetCheck(true);
dTmp=m_pSO7_Proto->ScaleToMM(m_ReturnPara,m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution);
}
}
if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS)
{
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS))->EnableWindow(TRUE);
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION))->EnableWindow(FALSE);
((CButton*)GetDlgItem(IDC_LIST_SO7_EXTRIG_SPECLOCATION))->EnableWindow(FALSE);
if (_type==0)
{
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_EQDIS))->SetCheck(true);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_SPECLOCATION))->SetCheck(false);
csTmp.Format(_T("%.4f"),dTmp);
GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS)->SetWindowTextW(csTmp);
csTmp.Format(_T("%d"),m_ParaNumber);
GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION)->SetWindowTextW(csTmp);
}
}
else
{
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS))->EnableWindow(FALSE);
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION))->EnableWindow(TRUE);
((CButton*)GetDlgItem(IDC_LIST_SO7_EXTRIG_SPECLOCATION))->EnableWindow(TRUE);
if (_type==0)
{
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_EQDIS))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_SPECLOCATION))->SetCheck(true);
csTmp.Format(_T("%.4f"),dTmp);
m_ParaList.SetItemText(m_ParaListSelectedRow,m_ParaListSelectedCol,csTmp);
csTmp.Format(_T("%d"),m_ParaNumber);
GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION)->SetWindowTextW(csTmp);
}
}
}
//=====================================================================
void CSo7_Util_External_Trig::m_UpdatePara(BOOL _bSave)
{
if (_bSave)
{
UpdateData(TRUE);
USES_CONVERSION;
CString csTmp;
const char* cTmp;
double dResolution(0.5);
double dEndPos(0.0);
double dTmp(0.0);
m_pSO7_Proto->so7_motion_get_position_xyz(m_BeginPos[0],m_BeginPos[1],m_BeginPos[2]);
if (((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_X))->GetCheck())
{
m_ActiveAxis=E_AXIS_X;
dResolution=m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution;
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Y))->GetCheck())
{
m_ActiveAxis=E_AXIS_Y;
dResolution=m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution;
}
else if (((CButton *)GetDlgItem(IDC_RADIO_SO7_EXTRIG_Z))->GetCheck())
{
m_ActiveAxis=E_AXIS_Z;
dResolution=m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution;
}
short iParaNumber(0);
if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS)
{
((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS))->GetWindowTextW(csTmp);
cTmp=T2A(csTmp);
dTmp=atof(cTmp);
m_TrigPara[0] = static_cast<short>(m_pSO7_Proto->MMtoScale(dTmp,dResolution));
iParaNumber=1;
dEndPos=10.0;
}
else
{
iParaNumber=m_ParaNumber;
int iCol=1;
for (int iRow=0;iRow<m_ParaListRows;iRow++)
{
csTmp=m_ParaList.GetItemText(iRow,iCol);
cTmp=T2A(csTmp);
dTmp=atof(cTmp);
dEndPos+=dTmp;
m_TrigPara[iRow]=static_cast<short>(m_pSO7_Proto->MMtoScale(dTmp,dResolution));
}
}
if (m_ActiveAxis==E_AXIS_X)
{
m_EndPos[0]=m_BeginPos[0]+dEndPos;
m_EndPos[1]=m_BeginPos[1];
m_EndPos[2]=m_BeginPos[2];
}
else if (m_ActiveAxis==E_AXIS_Y)
{
m_EndPos[1]=m_BeginPos[1]+dEndPos;
m_EndPos[0]=m_BeginPos[0];
m_EndPos[2]=m_BeginPos[2];
}
else
{
m_EndPos[2]=m_BeginPos[2]+dEndPos;
m_EndPos[0]=m_BeginPos[0];
m_EndPos[1]=m_BeginPos[1];
}
m_pSO7_Proto->so7_motion_set_trig_para(m_ActiveAxis,m_TrigMode,iParaNumber,m_TrigPara);
m_csMsg.Format(_T("[Write Trig Para]:R TotalNo=%d"),m_pSO7_Proto->g_machine.TrigPara.TrigTotalNo);
OutputWithScroll(m_csMsg,m_EdMsg);
}
else
{
m_pSO7_Proto->so7_motion_get_trig_para(static_cast<short>(m_ParaListSelectedRow),m_ActiveAxis,m_TrigMode,m_ParaNumber,m_ReturnPara);
m_csMsg.Format(_T("[Read Trig Para]:R Axis=%d,Method=%d,TotalNo=%d,CurIndex=%d,Para[%d]=%d."),m_pSO7_Proto->g_machine.TrigPara.TrigPulseActiveAxis,
m_pSO7_Proto->g_machine.TrigPara.TrigPulseMethod,m_pSO7_Proto->g_machine.TrigPara.TrigTotalNo,
m_pSO7_Proto->g_machine.TrigPara.TrigCurIndex,m_pSO7_Proto->g_machine.TrigPara.TrigReadIndex,
m_pSO7_Proto->g_machine.TrigPara.TrigReadPara);
OutputWithScroll(m_csMsg,m_EdMsg);
}
}
//=====================================================================================
//Print message on edit control
void CSo7_Util_External_Trig::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);
}
@@ -0,0 +1,53 @@
#pragma once
// CSo7_Util_External_Trig dialog
enum E_UPDATE_LIST_CONTROL_TYPE
{
E_LISTCTRL_TITLE,
E_LISTCTRL_NO,
E_LISTCTRL_CONTENT,
E_LISTCTRL_TOTAL
};
class CSo7_Util_External_Trig : public CDialog
{
DECLARE_DYNAMIC(CSo7_Util_External_Trig)
public:
CSo7_Util_External_Trig(CWnd* pParent = NULL); // standard constructor
virtual ~CSo7_Util_External_Trig();
// Dialog Data
enum { IDD = IDD_SO7_UTIL_EXTERNAL_TRIG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
protected:
void m_UpdatePara(BOOL _bSave=TRUE);
void m_UpdateCtrls(int _type=0);
char m_TrigMode;
char m_ActiveAxis;
short m_ParaNumber;
short m_TrigPara[65535];
CString m_csMsg;
CEdit m_EdMsg;
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
CEditableListCtrl m_ParaList;
void m_UpdateListControl(int _type);
int m_ParaListRows;
int m_ParaListSelectedRow;
int m_ParaListSelectedCol;
short m_ReturnPara;
double m_BeginPos[3];
double m_EndPos[3];
public:
afx_msg void OnBnClickedRadioSo7ExtrigEqdis();
afx_msg void OnBnClickedRadioSo7ExtrigSpeclocation();
afx_msg void OnBnClickedButtonSo7ExtrigStart();
afx_msg void OnBnClickedButtonSo7ExtrigStop();
afx_msg void OnEnKillfocusEditSo7ExtrigSpeclocation();
afx_msg void OnBnClickedButtonSo7ExtrigSetPara();
afx_msg void OnBnClickedButtonSo7ExtrigGetPara();
};
@@ -364,6 +364,7 @@
<ClCompile Include="SO7_Send_Parameter.cpp" />
<ClCompile Include="SO7_UtilDlg.cpp" />
<ClCompile Include="So7_UtilUsbCtlR.cpp" />
<ClCompile Include="So7_Util_External_Trig.cpp" />
<ClCompile Include="So7_Util_ImageDll.cpp" />
<ClCompile Include="So7_Util_Program.cpp" />
<ClCompile Include="SO7_Verfication_Algorithm.cpp" />
@@ -453,6 +454,7 @@
<ClInclude Include="SO7_Send_Parameter.h" />
<ClInclude Include="SO7_UtilDlg.h" />
<ClInclude Include="So7_UtilUsbCtlR.h" />
<ClInclude Include="So7_Util_External_Trig.h" />
<ClInclude Include="So7_Util_ImageDll.h" />
<ClInclude Include="So7_Util_Program.h" />
<ClInclude Include="SO7_Verfication_Algorithm.h" />
@@ -217,6 +217,7 @@
<ClCompile Include="..\..\..\STIL\Common\src\cAcqEasy.cpp">
<Filter>Sources Files</Filter>
</ClCompile>
<ClCompile Include="So7_Util_External_Trig.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CaptureDataDlg.h">
@@ -468,6 +469,7 @@
<ClInclude Include="..\..\..\STIL\STIL_CCS_PRIMA_Laser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="So7_Util_External_Trig.h" />
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />
@@ -57,6 +57,7 @@
#define IDD_DIALOG_TESA_STAR_E 188
#define IDD_DIALOG_KEYENCE_LKG5000_ETHERNET 190
#define IDD_SO7_UTIL_USBCTLR 191
#define IDD_SO7_UTIL_EXTERNAL_TRIG 192
#define IDC_BUTTON_START_MACHINE 1000
#define IDC_BUTTON_START_MACHINE3 1001
#define IDC_BUTTON_START_POLL_58 1002
@@ -346,6 +347,7 @@
#define IDC_EDIT_SO7CONFIG_ZOOM_FASTSPEED 1274
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ1 1274
#define IDC_EDIT_SO7_PROGRAM_Z_MOVETO 1274
#define IDC_EDIT_SO7_EXTRIG_SPECLOCATION 1274
#define IDC_EDIT_FRESHSPEED_X2 1275
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ2 1275
#define IDC_EDIT_MANUAL_MACHINE_MSG 1275
@@ -654,11 +656,15 @@
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK 1542
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT1 1542
#define IDC_BUTTON_STIL_LASER_EXIT 1542
#define IDC_BUTTON_SO7_EXTRIG_STOP 1542
#define IDC_BUTTON_STOP_SAMPLE_SCURVE 1543
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_READOUT2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_OK2 1543
#define IDC_BUTTON_SO7_MOTION_CONFIG_SET_DEFAULT 1543
#define IDC_BUTTON_SO7_EXTRIG_SET_PARA 1543
#define IDC_BTN_CONFIGURE_MOVEVOUT 1544
#define IDC_BUTTON_SO7_EXTRIG_STOP3 1544
#define IDC_BUTTON_SO7_EXTRIG_GET_PARA 1544
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_GLASER 1545
#define IDC_BUTTON_SET_TRIGGER 1546
#define IDC_BUTTON_IMAGEDLL_GET_SCAN_LASER_DATA 1547
@@ -733,7 +739,6 @@
#define IDC_RADIO_TEST_IMAGE_DLL3 1598
#define IDC_BUTTON_SO7_CNC_PROGRAM 1599
#define IDC_BUTTON_PROGRAM_SET_ZERO_Z 1600
#define IDC_BUTTON_SO7_CNC_PROGRAM2 1600
#define IDC_BUTTON_SO7_EXTERNAL_TRIG 1600
#define IDC_BUTTON_IMAGEDLL_STOP_SCAN_LASER 1601
#define IDC_STATIC_TC4000_PICTURE 1602
@@ -889,6 +894,7 @@
#define IDC_BUTTON_SO7_MOTION_CONFIG_CANCEL 1794
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT1 1794
#define IDC_BUTTON_STIL_LASER_INIT 1794
#define IDC_BUTTON_SO7_EXTRIG_START 1794
#define IDC_COMBO_RWDATA_ADDR 1795
#define IDC_BTN_KEYENCE_LKG5000_ETHERNET_CONNECT2 1795
#define IDC_BUTTON_STIL_LASER_SET_MODE 1795
@@ -896,6 +902,7 @@
#define IDC_COMBO_OUTPORT_NUMBER 1796
#define IDC_EDIT4 1797
#define IDC_EDIT_MOTION_SPEEDZ 1797
#define IDC_EDIT_SO7_EXTRIG_RESULT 1797
#define IDC_EDIT_MOTION_SPEEDX 1798
#define IDC_BUTTON_SCAN_KEYENCE_LK_H_LASER 1799
#define IDC_BUTTON_STOP_SCAN_KEYENCE_LK_H_LASER 1800
@@ -908,6 +915,7 @@
#define IDC_RADIO_READ_OUTPUT_PORT 1805
#define IDC_RADIO_SO7_MOVE_SPEED_GEAR2 1805
#define IDC_RADIO_ART_PCI8622_MODE_NPTSEQ 1805
#define IDC_RADIO_SO7_EXTRIG_SPECLOCATION 1805
#define IDC_RADIO_MACHINE_TESASTARE 1806
#define IDC_RADIO_READ_OUTPUT_PORT2 1806
#define IDC_EDIT_MOVETO_DEG 1807
@@ -1003,6 +1011,12 @@
#define IDC_EDIT_STIL_MESSAGE 1862
#define IDC_BUTTON_STIL_CLEAR_LOG 1863
#define IDC_BUTTON_S07_SET_IO_PURPOSE 1864
#define IDC_RADIO_SO7_EXTRIG_EQDIS 1865
#define IDC_RADIO_SO7_EXTRIG_X 1866
#define IDC_RADIO_SO7_EXTRIG_Y 1867
#define IDC_RADIO_SO7_EXTRIG_Z 1868
#define IDC_EDIT_SO7_EXTRIG_EQDIS 1869
#define IDC_LIST_SO7_EXTRIG_SPECLOCATION 1870
#define IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -1010,9 +1024,9 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 191
#define _APS_NEXT_RESOURCE_VALUE 193
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1865
#define _APS_NEXT_CONTROL_VALUE 1872
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif