增加读写IO口标志信息,验证点到面距离算法。

This commit is contained in:
TAO Cheng
2014-01-13 19:12:38 +08:00
parent dc4fbc655f
commit bc65eb2726
8 changed files with 103 additions and 30 deletions
@@ -113,4 +113,17 @@ int CSo7_Interface::Pro_Face_Du(MY3DPoint* pArr, int n, double* Coe, double* Err
dis=dis2;
return 1;
}
//========================================
double CSo7_Interface::PointToFace_1(double* _dCoe, MY3DPoint _PointXYZ)
{
double a,b,c,d;
double r1(0.0);
a = _dCoe[0];
b = _dCoe[1];
c = _dCoe[2];
d = _dCoe[3];
r1=((a*_PointXYZ.x + b*_PointXYZ.y + c*_PointXYZ.z + d)/sqrt(a*a + b*b + c*c));
return r1;
}
@@ -43,6 +43,8 @@ public:
void PauseScanAndGetData();
int Pro_Face_Du(MY3DPoint* pArr, int n, double* Coe, double* Error, double& dis);
double PointToFace_1(double* _dCoe, MY3DPoint _PointXYZ);
};
#endif
@@ -2940,3 +2940,13 @@ Init:Open device succeed .
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
@@ -52,7 +52,7 @@ BEGIN
EDITTEXT IDC_EDIT_COAXIAL_LIGHT4,261,83,41,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_COAXIAL_LIGHT,261,97,41,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_COAXIAL_LIGHT2,261,111,41,12,ES_AUTOHSCROLL
PUSHBUTTON "Motion",IDC_BUTTON_LOAD_SO7CONFIG,20,143,44,23,BS_MULTILINE
PUSHBUTTON "Motion Parameter",IDC_BUTTON_LOAD_SO7CONFIG,20,143,44,23,BS_MULTILINE
PUSHBUTTON "V+",IDC_BUTTON_SO7_MOVE_ZOOM_IN,77,159,25,12
PUSHBUTTON "V-",IDC_BUTTON_SO7_MOVE_ZOOM_OUT,77,180,25,12
PUSHBUTTON "Z+",IDC_BUTTON_SO7_MOVE_Z_UP,101,140,25,12
@@ -62,7 +62,7 @@ BEGIN
PUSHBUTTON "Y-",IDC_BUTTON_SO7_MOVE_Y_BACK,154,182,25,12
PUSHBUTTON "X+",IDC_BUTTON_SO7_MOVE_X_RIGHT,179,169,25,12
PUSHBUTTON "Home XYZ",IDC_BUTTON_SO7_RESET_XYZ,277,154,76,14,BS_MULTILINE
PUSHBUTTON "Hoom Manual",IDC_BUTTON_MANUAL_HOME,277,135,76,14
PUSHBUTTON "Home Manual",IDC_BUTTON_MANUAL_HOME,277,135,76,14
PUSHBUTTON "Home DCC",IDC_BUTTON_RESET_WORKTABLE,277,192,40,14
PUSHBUTTON "Home Worktable Right",IDC_BUTTON_RESET_WORKTABLE_RIGHT,277,173,76,14
PUSHBUTTON "Move\n To",IDC_BUTTON_MOVE_TO,359,142,32,27,BS_MULTILINE
@@ -70,9 +70,9 @@ BEGIN
PUSHBUTTON "Set Reset Flag",IDC_BUTTON_SET_RESET_FLAG,133,108,61,14
PUSHBUTTON "Set outport",IDC_BUTTON_GET_LASER,181,240,61,14
PUSHBUTTON "Home V",IDC_BUTTON_RESET_V,100,240,61,14
EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,46,284,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,109,284,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,172,284,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,62,284,39,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,121,284,39,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,180,284,39,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_SET_VER_NO,325,313,45,14,ES_AUTOHSCROLL
GROUPBOX "USB Control",IDC_STATIC,15,12,89,115
GROUPBOX "Config",IDC_STATIC,13,129,55,83
@@ -123,10 +123,10 @@ BEGIN
LTEXT "Z Signal",IDC_STATIC,189,310,26,8
LTEXT "Pos Update Frequency",IDC_STATIC,104,384,74,8
LTEXT "Spare1",IDC_STATIC,232,112,24,8
CTEXT "X",IDC_STATIC,70,273,8,8
CTEXT "Y",IDC_STATIC,133,273,8,8
CTEXT "X",IDC_STATIC,79,273,8,8
CTEXT "Y",IDC_STATIC,137,273,8,8
CTEXT "Z",IDC_STATIC,195,273,8,8
LTEXT "±ÈÀý ϵÊý",IDC_STATIC,23,281,18,18
CTEXT "Scale Resolution",IDC_STATIC,20,280,35,20
GROUPBOX "Set Gear",IDC_STATIC,208,132,56,81
PUSHBUTTON "so7_config",IDC_BUTTON_SETUP_SO7CONFIG,20,184,44,23
LTEXT "1",IDC_STATIC,337,27,8,8
@@ -398,7 +398,7 @@ BEGIN
CONTROL "LJ_G¼¤¹â",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,175,111,76,10
CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM,
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,48,138,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,48,149,45,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON,175,124,45,10
DEFPUSHBUTTON "OK",IDOK,181,145,50,14
PUSHBUTTON "Cancel",IDCANCEL,241,145,50,14
GROUPBOX "²âÊÔÑ¡Ïî",IDC_STATIC,29,15,243,120
@@ -2373,7 +2373,6 @@ void CSO7_Move_Location::OnTimer(UINT_PTR nIDEvent)
}
break;
}
case 2:
{
if (m_pSO7_Proto)
@@ -2490,27 +2489,48 @@ void CSO7_Move_Location::OnTimer(UINT_PTR nIDEvent)
}
case 5:
{
BYTE cdata[4]={0};
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,12);
cdata[0]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,13);
cdata[1]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,14);
cdata[2]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,15);
cdata[3]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
if (true)
{
m_OutMessage.Format(_T("[Err Pos]%02X %02X %02X %02X.\r\n"),cdata[0],cdata[1],cdata[2],cdata[3]);
}
else
{
m_OutMessage.Format(_T("[Err Pos]%d %d %d.\r\n"),cdata[0]*256+cdata[1],cdata[2]*256+cdata[3],((cdata[0]*256+cdata[1])-(cdata[2]*256+cdata[3])));
}
CString strOutput;
m_edit_RepeTest.GetWindowText(strOutput);
strOutput += m_OutMessage;
BYTE cdata[4]={0};
if (abs(m_pSO7_Proto->g_machine.x._pos_fixed._long_)>5)//X
{
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(2,12);
cdata[0]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(2,13);
cdata[1]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(2,14);
cdata[2]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(2,15);
cdata[3]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_OutMessage.Format(_T("[Err X](%02X) %02X %02X %02X.\r\n"),cdata[0],cdata[1],cdata[2],cdata[3]);
strOutput += m_OutMessage;
}
if (abs(m_pSO7_Proto->g_machine.y._pos_fixed._long_)>5)//Y
{
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,12);
cdata[0]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,13);
cdata[1]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,14);
cdata[2]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(1,15);
cdata[3]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_OutMessage.Format(_T("[Err Y](%02X) %02X %02X %02X.\r\n"),cdata[0],cdata[1],cdata[2],cdata[3]);
strOutput += m_OutMessage;
}
if (abs(m_pSO7_Proto->g_machine.z._pos_fixed._long_)>5)//Z
{
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(3,12);
cdata[0]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(3,13);
cdata[1]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(3,14);
cdata[2]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(3,15);
cdata[3]=static_cast<BYTE>(m_pSO7_Proto->g_machine.FPGAData);
m_OutMessage.Format(_T("[Err Z](%02X) %02X %02X %02X.\r\n"),cdata[0],cdata[1],cdata[2],cdata[3]);
strOutput += m_OutMessage;
}
OutputWithScroll(strOutput,m_edit_RepeTest);
break;
}
@@ -255,7 +255,22 @@ BOOL CSO7_UtilDlg::OnInitDialog()
((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->ResetContent();
for(int i=0;i<16;i++)
{
csTmp.Format(_T("%d"),i);
if (i==9)
{
csTmp=_T("9-Flag");
}
else if (i==10)
{
csTmp=_T("10-Trigger");
}
else if (i==11)
{
csTmp=_T("11-AccErr");
}
else
{
csTmp.Format(_T("%d"),i);
}
((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->InsertString(i,csTmp);
}
((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->SetCurSel(10);
@@ -104,6 +104,12 @@ void CSo7_Util_ImageDll::OnBnClickedButtonImagedll2laserCalculate()
MY3DPoint Top_Pos[4];
MY3DPoint Bottom_Pos[4];
for (int i=0;i<4;i++)
{
Bottom_Pos[i].x=0.0;
Bottom_Pos[i].y=0.0;
Bottom_Pos[i].z=0.0;
}
double error[MAX_POINT]={0.0};
double dis=0.0;
int m_nStep=4;
@@ -173,6 +179,13 @@ void CSo7_Util_ImageDll::OnBnClickedButtonImagedll2laserCalculate()
cTempValue=T2A(str);
m_pSo7_Interface->Pro_Face_Du(Top_Pos,m_nStep,coe,error,dis);
MY3DPoint PntPos;
PntPos.x=Bottom_Pos[0].z;
PntPos.y=Bottom_Pos[1].z;
PntPos.z=Bottom_Pos[2].z;
double dResult=m_pSo7_Interface->PointToFace_1(coe,Bottom_Pos[0]);
str.Format(_T("%.4f"),dResult);
GetDlgItem(IDC_EDIT_IMAGEDLL_2LASER_MEASURED_VALUE)->SetWindowTextW(str);
m_pSo7_Interface->Pro_Face_Du(Bottom_Pos,m_nStep,coe,error,dis);
}