新增外触发测试功能。

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.
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
@@ -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