From 972e5d53ab311dbfa5f011b3c12df2aaed78d7d8 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Thu, 5 Feb 2015 16:16:10 +0800 Subject: [PATCH] Add ex-trig test. --- .../Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h | 1 + .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 9 +++++ .../Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp | 15 ++++--- .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 13 +++--- .../UsbUtil/So7_Util_External_Trig.cpp | 38 ++++++++++++++++++ .../UsbUtil/So7_Util_External_Trig.h | 1 + .../UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp | 2 - .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 1 + .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 156160 -> 156160 bytes 9 files changed, 66 insertions(+), 14 deletions(-) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h index 426f4fb..a6c1c87 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h @@ -405,6 +405,7 @@ enum E_DIS_TRIG_PULSE_METHOD { E_DIS_TRIG_PULSE_EQDIS=0, E_DIS_TRIG_PULSE_SPEC_LOCA, + E_DIS_TRIG_PULSE_EQDIS_II, E_DIS_TRIG_PULSE_TOTAL=255 }; enum E_ACTIVE_AXIS diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index 860c711..f9365c3 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -4850,6 +4850,11 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMod SetParaNumber=_ParaNumber; _send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis,_TrigMode,SetStartIndex,SetParaNumber,_ParaData); } + else if (_TrigMode==E_DIS_TRIG_PULSE_EQDIS_II) + { + SetParaNumber=_ParaNumber; + _send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis,_TrigMode,SetStartIndex,SetParaNumber,_ParaData); + } else { do @@ -6254,6 +6259,10 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char Activ { lSetParaNumber=1; } + else if (TrigMode==E_DIS_TRIG_PULSE_EQDIS) + { + lSetParaNumber=2; + } else { lSetParaNumber=ParaNumber; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp index ae0650f..6a5f303 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/So7_TCPIP_Server.cpp @@ -607,12 +607,7 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) m_TCPIPMsg._CmdType=0; m_TCPIPMsg._DataAddr=iAddr; m_TCPIPMsg._DataSize=iDataSize; - if (iAddr>=200) - { - Response_PLC_DM200_R(iAddr,iDataSize); - m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_STATE; - } - else if (iAddr>=20000) + if (iAddr>=20000) { m_TCPIPMsg._MsgType=RESPONSE_READ_ERRCODE; } @@ -631,6 +626,11 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) Response_PLC_DM5000_R(iAddr,iDataSize); m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_STATE; } + else if (iAddr>=200) + { + Response_PLC_DM200_R(iAddr,iDataSize); + m_TCPIPMsg._MsgType=RESPONSE_READ_PLC_STATE; + } else { RESPONSE_PLC_DM_UNKNOWN(); @@ -694,9 +694,12 @@ void CSo7_TCPIP_Server::m_ProcessSocketReadEvent(SOCKET s) } BOOL bStatus(false); bStatus=DM200[35]&0x0002; + TRACE1("DM235=%d\r\n",DM200[35]); if (bStatus) { + TRACE1("DM225=%d\r\n",DM200[25]); DM200[25]=DM200[25]&0xFFFB; + TRACE1("DM225=%d\r\n",DM200[25]); } m_TCPIPMsg._UpdateData=2; RESPONSE_PLC_DM_UNKNOWN(); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index 4d1646a..6e90727 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -16,7 +16,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// 中文(简体,中国) resources +// Chinese (Simplified, PRC) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED @@ -1004,12 +1004,13 @@ BEGIN 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 + CONTROL "等间距触发II",IDC_RADIO_SO7_EXTRIG_EQDIS2,"Button",BS_AUTORADIOBUTTON | WS_GROUP,36,86,61,10 + CONTROL "指定位移触发",IDC_RADIO_SO7_EXTRIG_SPECLOCATION,"Button",BS_AUTORADIOBUTTON,36,97,64,10 + CONTROL "",IDC_LIST_SO7_EXTRIG_SPECLOCATION,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,33,113,254,77 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,296,80,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL PUSHBUTTON "Exit",IDCANCEL,276,295,50,14 PUSHBUTTON "开始",IDC_BUTTON_SO7_EXTRIG_START,238,23,50,14 @@ -1859,12 +1860,12 @@ BEGIN IDS_SO7_ABOUTBOX "&About Utility for SO7..." END -#endif // 中文(简体,中国) resources +#endif // Chinese (Simplified, PRC) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// 英语(美国) resources +// English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -2823,7 +2824,7 @@ BEGIN END END -#endif // 英语(美国) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.cpp index 4aefe63..21cc79f 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.cpp @@ -57,6 +57,7 @@ BEGIN_MESSAGE_MAP(CSo7_Util_External_Trig, CDialog) ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_GET_PARA, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigGetPara) ON_BN_CLICKED(IDCANCEL, &CSo7_Util_External_Trig::OnBnClickedCancel) ON_BN_CLICKED(IDC_BUTTON_SO7_EXTRIG_CLEAR_MSG, &CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigClearMsg) + ON_BN_CLICKED(IDC_RADIO_SO7_EXTRIG_EQDIS2, &CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis2) END_MESSAGE_MAP() @@ -178,6 +179,12 @@ void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis() m_UpdateCtrls(1); } //===================================================================== +void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigEqdis2() +{ + m_TrigMode=E_DIS_TRIG_PULSE_EQDIS_II; + m_UpdateCtrls(1); +} +//===================================================================== void CSo7_Util_External_Trig::OnBnClickedRadioSo7ExtrigSpeclocation() { m_TrigMode=E_DIS_TRIG_PULSE_SPEC_LOCA; @@ -284,6 +291,20 @@ void CSo7_Util_External_Trig::m_UpdateCtrls(int _type) GetDlgItem(IDC_EDIT_SO7_EXTRIG_SPECLOCATION)->SetWindowTextW(csTmp); } } + else if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS_II) + { + ((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS))->EnableWindow(FALSE); + ((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); + } + } else { ((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_EQDIS))->EnableWindow(FALSE); @@ -344,6 +365,21 @@ void CSo7_Util_External_Trig::m_UpdatePara(BOOL _bSave) iParaNumber=m_ParaNumber; dEndPos+=m_ParaNumber*dTmp; } + else if (m_TrigMode==E_DIS_TRIG_PULSE_EQDIS_II) + { + iParaNumber=m_ParaNumber; + int iCol=1; + for (int iRow=0;iRow<2;iRow++) + { + csTmp=m_ParaList.GetItemText(iRow,iCol); + cTmp=T2A(csTmp); + dTmp=atof(cTmp); + dEndPos+=dTmp; + m_TrigPara[iRow]=static_cast(m_pSO7_Proto->MMtoScale(dTmp,dResolution)); + } + dEndPos+=m_TrigPara[0]; + dEndPos+=(m_ParaNumber-1)*m_TrigPara[1]; + } else { iParaNumber=m_ParaNumber; @@ -573,3 +609,5 @@ void CSo7_Util_External_Trig::OnBnClickedButtonSo7ExtrigClearMsg() { ((CEdit*)GetDlgItem(IDC_EDIT_SO7_EXTRIG_RESULT))->SetWindowTextW(_T("")); } + + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.h index 74261aa..c12277d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_External_Trig.h @@ -54,4 +54,5 @@ public: afx_msg void OnBnClickedButtonSo7ExtrigGetPara(); afx_msg void OnBnClickedCancel(); afx_msg void OnBnClickedButtonSo7ExtrigClearMsg(); + afx_msg void OnBnClickedRadioSo7ExtrigEqdis2(); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp index 54a4d0e..102a702 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Util_PLC_TCPIP_SERVER.cpp @@ -790,8 +790,6 @@ void CSo7_Util_PLC_TCPIP_SERVER::m_UpdateListControl(int _type) for (int i=iStartRow;iDM200[i]); - if(i==25) - str.Format(_T("0x%X"),g_pSo7_TCPIP_Server->DM200[i]); m_DataList.SetItemText(i,1,str); } } diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index dc46e8d..9ad44d0 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -1060,6 +1060,7 @@ #define IDC_RADIO_SO7_EXTRIG_Z 1868 #define IDC_EDIT_SO7_EXTRIG_EQDIS 1869 #define IDC_LIST_SO7_EXTRIG_SPECLOCATION 1870 +#define IDC_RADIO_SO7_EXTRIG_EQDIS2 1871 #define IDC_EDIT_SO7_EXTRIG_TEST_TIMES 1872 #define IDC_EDIT_SO7_MOTION_STOP_CNTS 1873 #define IDC_EDIT_SO7_MOTION_START_CNTS 1874 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 4ed34ba8aa79d343e9b62449b74ddf0cb3c219aa..ed8b0bd90ee64de787770da9378e25d16246594d 100644 GIT binary patch delta 3161 zcma)83sjV48vfsJhG7PXnL!vP9A!W>E^-l2DFud$h6DpBMBDL3B7y5F;dI%u`1ROk z#dd_3{HkNE0-;@wA%D$Jo0}u+y1Hs1-ilC%YU^NT#G#8*3;X_q;MO^Nc0YLLf4=Yi zF7Nk#&vy}z=)@zsjs~XIf*?pcSU&`cbK?FvHLC|yf*`mqNRO(QfDR%lV<7OJNQjn3 zd;*xEeEOkGM`2ff>w*6AI`*uaZ&}HbB%4;vv3GEwtLu7p=Kl2B4?(06zO1$ z($f<~(nv(CMpJ*PJ3(J7MMbx1)nOARO%$;eE$B%a^{w(JE(mx!WfiVoq?M|YS7`CC z>Ny%C69fxz&)pEqXFUO7n6aRncN~K|eA9)c!dl^b%+en6Ur($;*hIgZ(Len`7{aU! z8PhVF`HljX%!}=ox#nM`Xb z(BsMAT1PyXGP#3_<6L(dg0T6n6mLC0MS$Lv<2AJp+=IX0|C1(+x`{R7qi_8I2R4;UCC|U6YI&RC1Mik& z$%}8{P^k_tmuvCjcB2&8aY==}qv=w*^DkO(dR5prjRi^0Bl*zkd7m{|g8A8(A&4hk zg#b)A8Hl!HBHDTyyn2RZICf@B=Ra(KE!u2;B$3UQ_Md116&(eN)4mIYw@+*tx(oMQ zn<71NYAfTmL?-f%*fql;zr){eFEFiN!SMXN1o{nbfG>V4z zNI}P$2EMg`-OWwO%oO4h)LKCp7YY$!kzg14lntoLrIC&C>5_QP59Tdi^PYP{Zt(%1 zL(b;3#pj<|LsgYSK}jJ?1R;y!_(rinyY*)I811~{X-50t%%@||Y(M-d%!WQZ-8w~ykWF&+Q(V9KZITpw_&h@^ zpN9IenY=ikh2n3H?&4tjonK1<|oHH0}$a4bZvrmnqfE04rMu}0fO`Bx^(9Ldn2lRavn0Sq5PFb_7s z7dtZ{lDBOKi=2@`1}&%RZ8w`_!byh77Mm<)!x10tpUARn!pa?a(4(gHzIn-T#}fD> z_Li8q(FosQ+XHcOTrix2_JuSLTXP)h2Q*kmky_0IxNQ%ZcPS@%D`{(=HiYrC{;f{F|5CdL~0t}<2ZJDh8%e}T$;MqQvj^p0fBoxc3@oG08w(( zHt44b7b_F4ZG#m4w>sK(i|XK=rjN;)ZG3pbjokGf?cKPQjY3?Xbs%O3!O0I zmLhU=Iw71;$RBq?4zn}f?S!REMoC>us5pX)-$#56;W|OFDe3$Tu3P|0Ufw6eJz;#v57sG%Mi4*f1}z-rCE@G< z-!}t-sV^fx?1oJIz!c4^2OvOpoq_FYwSHnLWXDI)pyKu)pp(D37fSJ)`q{D=#6;kk zQ&<@AFp84z)IIjSWSZe|kwVpyfS5oT; zSi}!~1&3u@FIo56W0;zYA1h)HU?lco=mu_&XXN-GIliONARDg1O5k(MEK1fVv1)Ms z2%-j?EO#hAXk^zYtX3KPNqBw)Jz)xgCoyK36HF|GpvW?mU?xl_C`&k%z81nX!c0Oq zVU$14Sg3Ip(c1{ogczl`v0{qc#aN!cb$1NoTLvIrjt^#MRIR(?*v>Gvxv|p9cZIR# zwrnO*Fsz%CNoJ$8$&Os?}(LJomCsK~gWtV&~ zIjso|bIq8am#tWltp81XH0#%u>r5vI6kp-j5sjP-)`ag$oc8gIX>_7#-C*YV;jD{S z`x6UGWmVj5fjXXl4gy%Uz+H2h4R3!lmpY+;p+gD49_7hufDj(>IfQd-0c*jG4`-8E Rd1DFKnEI65QO1e`{tf7uZ}tEH delta 3592 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