zoukankan
html css js c++ java
MOTOCOM32运动控制器编程
//
TestDlg.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//
#include
"
stdafx.h
"
#include
"
Test.h
"
#include
"
TestDlg.h
"
#include
<
math.h
>
#include
<
direct.h
>
//
<------ MOTOCOM32: 偙偺峴傪捛壛
#include
"
motocom.h
"
//
<------ MOTOCOM32: 偙偺峴傪捛壛
//
幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅------>
//
#error 埲壓傪幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅曄峏屻偼偙偺峴傪嶍彍偟偰壓偝偄丅
#define
TEST_TRANS_MODE_IS_RS232C
#ifdef TEST_TRANS_MODE_IS_RS232C
#define
TEST_TRANS_MODE 0
//
RS-232C
#else
#define
TEST_TRANS_MODE 1
//
Ethernet
#endif
#define
TEST_IP_ADDRESS "xxx.xxx.xxx.xx"
//
幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅<------
#ifdef _DEBUG
#define
new DEBUG_NEW
#undef
THIS_FILE
static
char
THIS_FILE[]
=
__FILE__;
#endif
/**/
///////////////////////////////////////////////////////////////////////////
//
//
傾僾儕働乕僔儑儞偺僶乕僕儑儞忣曬偱巊傢傟偰偄傞 CAboutDlg 僟僀傾儘僌
short
g_nCid
=
0
;
//
TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
class
CAboutDlg :
public
CDialog
{
public
:
CAboutDlg();
//
僟僀傾儘僌 僨乕僞
//
{{AFX_DATA(CAboutDlg)
enum
{ IDD
=
IDD_ABOUTBOX }
;
//
}}AFX_DATA
//
ClassWizard 偼壖憐娭悢偺僆乕僶乕儔僀僪傪惗惉偟傑偡
//
{{AFX_VIRTUAL(CAboutDlg)
protected
:
virtual
void
DoDataExchange(CDataExchange
*
pDX);
//
DDX/DDV 偺僒億乕僩
//
}}AFX_VIRTUAL
//
僀儞僾儕儊儞僥乕僔儑儞
protected
:
//
{{AFX_MSG(CAboutDlg)
//
}}AFX_MSG
DECLARE_MESSAGE_MAP()
}
;
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//
{{AFX_DATA_INIT(CAboutDlg)
//
}}AFX_DATA_INIT
}
void
CAboutDlg::DoDataExchange(CDataExchange
*
pDX)
{
CDialog::DoDataExchange(pDX);
//
{{AFX_DATA_MAP(CAboutDlg)
//
}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//
{{AFX_MSG_MAP(CAboutDlg)
//
儊僢僙乕僕 僴儞僪儔偑偁傝傑偣傫丅
//
}}AFX_MSG_MAP
END_MESSAGE_MAP()
/**/
///////////////////////////////////////////////////////////////////////////
//
//
CTestDlg 僟僀傾儘僌
CTestDlg::CTestDlg(CWnd
*
pParent
/**/
/*
=NULL
*/
)
: CDialog(CTestDlg::IDD, pParent)
{
//
{{AFX_DATA_INIT(CTestDlg)
m_distance
=
5.0
;
m_vel
=
0.0
;
m_PosB
=
0.0
;
m_PosL
=
0.0
;
m_PosR
=
0.0
;
m_PosS
=
0.0
;
m_PosT
=
0.0
;
m_PosU
=
0.0
;
//
}}AFX_DATA_INIT
//
儊儌: LoadIcon 偼 Win32 偺 DestroyIcon 偺僒僽僔乕働儞僗傪梫媮偟傑偣傫丅
m_hIcon
=
AfxGetApp()
->
LoadIcon(IDR_MAINFRAME);
}
void
CTestDlg::DoDataExchange(CDataExchange
*
pDX)
{
CDialog::DoDataExchange(pDX);
//
{{AFX_DATA_MAP(CTestDlg)
DDX_Control(pDX, IDC_JOBNAME, m_jobname);
DDX_Text(pDX, IDC_EDIT_DIST, m_distance);
DDX_Text(pDX, IDC_EDIT_VEL, m_vel);
DDX_Text(pDX, IDC_POS_B, m_PosB);
DDX_Text(pDX, IDC_POS_L, m_PosL);
DDX_Text(pDX, IDC_POS_R, m_PosR);
DDX_Text(pDX, IDC_POS_S, m_PosS);
DDX_Text(pDX, IDC_POS_T, m_PosT);
DDX_Text(pDX, IDC_POS_U, m_PosU);
//
}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
//
{{AFX_MSG_MAP(CTestDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_UPLOAD, OnUpload)
ON_BN_CLICKED(IDC_DOWNLOAD, OnDownload)
ON_BN_CLICKED(IDC_BUTTON_STATUS, OnButtonStatus)
ON_BN_CLICKED(IDC_BUTTON_BscImov, OnBUTTONBscImov)
ON_EN_KILLFOCUS(IDC_EDIT_DIST, OnKillfocusEditDist)
ON_EN_KILLFOCUS(IDC_EDIT_VEL, OnKillfocusEditVel)
ON_BN_CLICKED(IDC_RADIO_TYPEV, OnRadioTypev)
ON_BN_CLICKED(IDC_RADIO_TYPEVR, OnRadioTypevr)
ON_BN_CLICKED(IDC_BUTTON_BscMovj, OnBUTTONBscMovj)
ON_BN_CLICKED(IDC_BUTTON_BscPMovj, OnBUTTONBscPMovj)
ON_BN_CLICKED(IDC_BUTTON_ZERO, OnButtonZero)
ON_BN_CLICKED(IDC_BUTTON_ServOff, OnBUTTONServOff)
ON_BN_CLICKED(IDC_BUTTON_ServOn, OnBUTTONServOn)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_BUTTON_ZHIJIAO, OnButtonZhijiao)
ON_BN_CLICKED(IDC_BUTTON_JOINT, OnButtonJoint)
//
}}AFX_MSG_MAP
END_MESSAGE_MAP()
/**/
///////////////////////////////////////////////////////////////////////////
//
//
CTestDlg 儊僢僙乕僕 僴儞僪儔
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//
"僶乕僕儑儞忣曬
" 儊僯儏乕崁栚傪僔僗僥儉 儊僯儏乕傊捛壛偟傑偡丅
//
IDM_ABOUTBOX 偼僐儅儞僪 儊僯儏乕偺斖埻偱側偗傟偽側傝傑偣傫丅
ASSERT((IDM_ABOUTBOX
&
0xFFF0
)
==
IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX
<
0xF000
);
CMenu
*
pSysMenu
=
GetSystemMenu(FALSE);
if
(pSysMenu
!=
NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if
(
!
strAboutMenu.IsEmpty())
{
pSysMenu
->
AppendMenu(MF_SEPARATOR);
pSysMenu
->
AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
//
偙偺僟僀傾儘僌梡偺傾僀僐儞傪愝掕偟傑偡丅僼儗乕儉儚乕僋偼傾僾儕働乕僔儑儞偺儊僀儞
//
僂傿儞僪僂偑僟僀傾儘僌偱側偄帪偼帺摦揑偵愝掕偟傑偣傫丅
SetIcon(m_hIcon, TRUE);
//
戝偒偄傾僀僐儞傪愝掕
SetIcon(m_hIcon, FALSE);
//
彫偝偄傾僀僐儞傪愝掕
//
TODO: 摿暿側弶婜壔傪峴偆帪偼偙偺応強偵捛壛偟偰偔偩偝偄丅
//
g_nCid = TestOpenComm ( TEST_TRANS_MODE );
if
(g_nCid
<
0
)
{
AfxMessageBox(
"
Error open com
"
);
return
FALSE;
}
else
AfxMessageBox(
"
Open OK
"
);
return
TRUE;
//
TRUE 傪曉偡偲僐儞僩儘乕儖偵愝掕偟偨僼僅乕僇僗偼幐傢傟傑偣傫丅
}
void
CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if
((nID
&
0xFFF0
)
==
IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
//
傕偟僟僀傾儘僌儃僢僋僗偵嵟彫壔儃僞儞傪捛壛偡傞側傜偽丄傾僀僐儞傪昤夋偡傞
//
僐乕僪傪埲壓偵婰弎偡傞昁梫偑偁傝傑偡丅MFC 傾僾儕働乕僔儑儞偼 document/view
//
儌僨儖傪巊偭偰偄傞偺偱丄偙偺張棟偼僼儗乕儉儚乕僋偵傛傝帺摦揑偵張棟偝傟傑偡丅
void
CTestDlg::OnPaint()
{
if
(IsIconic())
{
CPaintDC dc(
this
);
//
昤夋梡偺僨僶僀僗 僐儞僥僉僗僩
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(),
0
);
//
僋儔僀傾儞僩偺嬮宍椞堟撪偺拞墰
int
cxIcon
=
GetSystemMetrics(SM_CXICON);
int
cyIcon
=
GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(
&
rect);
int
x
=
(rect.Width()
-
cxIcon
+
1
)
/
2
;
int
y
=
(rect.Height()
-
cyIcon
+
1
)
/
2
;
//
傾僀僐儞傪昤夋偟傑偡丅
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//
僔僗僥儉偼丄儐乕僓乕偑嵟彫壔僂傿儞僪僂傪僪儔僢僌偟偰偄傞娫丄
//
僇乕僜儖傪昞帵偡傞偨傔偵偙偙傪屇傃弌偟傑偡丅
HCURSOR CTestDlg::OnQueryDragIcon()
{
return
(HCURSOR) m_hIcon;
}
//
MOTOCOM32: 偙偺峴埲壓傪捛壛 -------->
short
CTestDlg::TestOpenComm(
int
mode )
//
mode = 0:RS-232C or 1:Ethernet
{
//
MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝 -------->
short
ncid;
short
rc;
char
cur_dir[_MAX_DIR];
//
幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅
char
*
IPAddress
=
TEST_IP_ADDRESS;
//
擟堄偺IP蹦挹綍稁殫駚@幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅
_getcwd( cur_dir,
sizeof
(cur_dir) );
if
( mode
==
0
)
{
//
COM億乕僩傪僆乕僾儞偟傑偡丅
ncid
=
BscOpen( cur_dir, PACKETCOM );
if
( ncid
<
0
)
{
return
( ncid );
}
//
僔儕傾儖捠怣偺僷儔儊乕僞傪愝掕偟傑偡丅
rc
=
BscSetCom( ncid,
1
,
9600
,
2
,
8
,
0
);
if
( rc
!=
1
)
{
rc
=
BscClose( ncid );
return
(
-
1
);
}
}
else
{
//
Ethernet夞慄傪僆乕僾儞偟傑偡丅
ncid
=
BscOpen( cur_dir, PACKETETHERNET );
if
( ncid
<
0
)
{
return
( ncid );
}
//
Ethernet捠怣偺僷儔儊乕僞傪愝掕偟傑偡丅
rc
=
BscSetEther( ncid, IPAddress,
0
, GetSafeHwnd() );
if
( rc
!=
1
)
{
rc
=
BscClose( ncid );
return
(
-
1
);
}
}
//
捠怣夞慄傪愙懕偟傑偡丅
rc
=
BscConnect( ncid );
if
( rc
!=
1
)
{
rc
=
BscClose( ncid );
return
(
-
1
);
}
return
( ncid );
//
<-------- MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝
}
short
CTestDlg::TestCloseComm(
short
ncid )
{
//
MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝 -------->
short
rc;
//
捠怣夞慄傪愗抐偟傑偡丅
rc
=
BscDisConnect( ncid );
//
億乕僩傪僋儘乕僘偟傑偡丅
rc
=
BscClose( ncid );
return
( rc );
//
<-------- MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝
}
//
<------ MOTOCOM32: 捛壛
//
MOTOCOM32: 偙偺峴埲壓偼丄ClassWizard 偵偰捛壛 -------->
void
CTestDlg::OnDownload()
{
//
MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝捛壛 -------->
short
g_nCid;
short
rc;
CString JobName;
//
僄僨傿僢僩僐儞僩儘乕儖偐傜僕儑僽柤傪妉摼偟傑偡丏
m_jobname.GetWindowText(JobName);
JobName.MakeUpper();
//
僕儑僽柤偑巜掕偝傟偰偄傞偐僠僃僢僋偟傑偡丏
if
(
!
JobName.IsEmpty() )
{
//
捠怣僴儞僪儔傪妉摼偟傑偡丏
//
伀幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅
//
g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
//
捠怣僴儞僪儔傪妉摼偱偒偨偐僠僃僢僋偟傑偡丏
if
( g_nCid
>=
0
)
{
//
僕儑僽傪憲怣偟傑偡丏
rc
=
BscDownLoad( g_nCid, (
char
*
)(LPCSTR)JobName);
//
栠傝抣傪妋擣偟傑偡丏
if
( rc
==
0
)
AfxMessageBox (
"
ok
"
);
else
AfxMessageBox (
"
BscDownLoad fail
"
);
//
捠怣僴儞僪儔傪夝曻偟傑偡丏
//
rc = TestCloseComm( g_nCid );
}
else
AfxMessageBox (
"
TestOpenComm fail
"
);
}
else
{
AfxMessageBox (
"
JobName.IsEmpty
"
);
}
//
<-------- MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝捛壛
}
void
CTestDlg::OnUpload()
{
//
MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝捛壛 -------->
short
g_nCid;
short
rc;
CString JobName;
//
僄僨傿僢僩僐儞僩儘乕儖偐傜僕儑僽柤傪妉摼偟傑偡丏
m_jobname.GetWindowText(JobName);
JobName.MakeUpper();
//
僕儑僽柤偑巜掕偝傟偰偄傞偐僠僃僢僋偟傑偡丏
if
(
!
JobName.IsEmpty() )
{
//
捠怣僴儞僪儔傪妉摼偟傑偡丏
//
伀幚峴娐嫬偵墳偠偰曄峏偟偰壓偝偄丅
//
g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
//
捠怣僴儞僪儔傪妉摼偱偒偨偐僠僃僢僋偟傑偡丏
if
( g_nCid
>=
0
)
{
//
僕儑僽傪庴怣偟傑偡丏
rc
=
BscUpLoad(g_nCid, (
char
*
)(LPCSTR)JobName);
//
栠傝抣傪妋擣偟傑偡丏
if
( rc
==
0
)
AfxMessageBox (
"
僕儑僽庴怣姰椆
"
);
else
AfxMessageBox(
"
僕儑僽庴怣幐攕
"
);
//
捠怣僴儞僪儔傪夝曻偟傑偡丏
//
rc = TestCloseComm( g_nCid );
}
else
AfxMessageBox (
"
億乕僩傪僆乕僾儞偱偒傑偣傫丏
"
);
}
else
{
AfxMessageBox (
"
僕儑僽柤傪巜掕偟偰壓偝偄丏
"
);
}
//
<-------- MOTOCOM32: Motohelp.hlp Visual C++ 偱偺嶌惉曽朄 傛傝捛壛
}
//
<------ MOTOCOM32: 捛壛
#define
CHECK_VOID(x) {if(!(x)){char s[1000];sprintf(s,"Error %s",#x);AfxMessageBox(s);return;}}
void
CTestDlg::OnButtonStatus()
{
//
TODO: Add your control notification handler code here
DWORD tm1
=
GetTickCount();
short
g_nCid
=
TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
CString s;
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
{
char
szPos[
2000
]; WORD toolno;
WORD rconf;
double
p[
12
];
double
p1[
12
];
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p)
==
0
);
//
CHECK_VOID(BscIsLoc(g_nCid,0,&rconf,p1)==0);
CHECK_VOID(BscIsRobotPos(g_nCid,
"
BASE
"
,
0
,
&
rconf,
&
toolno,p1)
==
0
);
sprintf(szPos,
"
----PulseNO.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
],
p1[
0
],p1[
1
],p1[
2
],p1[
3
],p1[
4
],p1[
5
]
);
s
=
szPos;
}
{
WORD d1;WORD d2;
char
szStatus[
2000
];
CHECK_VOID(BscGetStatus(g_nCid,
&
d1,
&
d2)
==
0
);
sprintf(szStatus,
"
---Status:%s %s %s %s %s %s %s %s
"
"
%s %s %s %s %s %s %s \r\n
"
,
d1
&
(
1
<<
0
)
?
"
Step\r\n
"
:
""
,
d1
&
(
1
<<
1
)
?
"
1-cycle\r\n
"
:
""
,
d1
&
(
1
<<
2
)
?
"
Auto operation\r\n
"
:
""
,
d1
&
(
1
<<
3
)
?
"
Operating\r\n
"
:
""
,
//
??
d1
&
(
1
<<
4
)
?
"
Operation at safe speed\r\n
"
:
""
,
//
???
d1
&
(
1
<<
5
)
?
"
Teach\r\n
"
:
""
,
d1
&
(
1
<<
6
)
?
"
Play\r\n
"
:
""
,
d1
&
(
1
<<
7
)
?
"
Command remote \r\n
"
:
""
,
d2
&
(
1
<<
0
)
?
"
Playback box hold\r\n
"
:
""
,
d2
&
(
1
<<
1
)
?
"
Programming pendant hold\r\n
"
:
""
,
d2
&
(
1
<<
2
)
?
"
External hold\r\n
"
:
""
,
d2
&
(
1
<<
3
)
?
"
Command hold\r\n
"
:
""
,
d2
&
(
1
<<
4
)
?
"
Alarm occurred\r\n
"
:
""
,
d2
&
(
1
<<
5
)
?
"
Error occurred\r\n
"
:
""
,
d2
&
(
1
<<
6
)
?
"
Servo ON\r\n
"
:
"
Servo OFF\r\n
"
);
s
+=
szStatus;
}
{
char
jobname[
250
];
char
szJob[
2000
];
CHECK_VOID(BscIsJobName(g_nCid,jobname,
250
)
==
0
);
short
jobLine
=
0
;
jobLine
=
BscIsJobLine(g_nCid);
CHECK_VOID(jobLine
!=-
1
);
short
jobStep
=
0
;
jobStep
=
BscIsJobStep(g_nCid);
CHECK_VOID(jobStep
!=-
1
);
sprintf(szJob,
"
---Job:%s line %d jobStep:%d\r\n
"
,
jobname,
jobLine,
jobStep
);
s
+=
szJob;
}
#define
N_COR 2
{
char
Pos[N_COR][
250
];
char
framename[
10
][
250
]
=
{
"
BASE
"
,
"
ROBOT
"
,
"
UF1
"
}
;
WORD toolno;
WORD rconf;
double
p[
12
];
for
(
int
i
=
0
;i
<
N_COR;i
++
)
{
(BscIsRobotPos(g_nCid,framename[i],
0
,
&
rconf,
&
toolno,p));
sprintf(Pos[i],
"
---Frame(%s): S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
framename[i],
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
]
);
s
=
s
+
Pos[i];
}
}
{
CTime tm
=
CTime::GetCurrentTime();
char
szTm[
200
] ;
sprintf(szTm,
"
Time:%d/%d %d:%d:%d\r\n
"
,
tm.GetMonth(),tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond());
s
+=
szTm;
}
_EXIT:
//
TestCloseComm( g_nCid );
{
char
szTm[
200
];
sprintf(szTm,
"
UsingTm %d ms\r\n
"
,GetTickCount()
-
tm1);
s
+=
szTm;
}
SetDlgItemText(IDC_EDIT1,s);
}
void
CTestDlg::OnBUTTONBscImov()
{
//
TODO: Add your control notification handler code here
UpdateData(TRUE);
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
CString s;
char
PosPreImov [
12000
];
char
PosPostImov[
120000
];
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
double
spd
=
2.0
;
toolno
=
0
;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
double
p2[
12
]
=
{
0
}
;
double
p1[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p2)
==
0
);
CHECK_VOID(BscIsRobotPos(g_nCid,
"
BASE
"
,
0
,
&
rconf,
&
toolno,p1)
==
0
);
sprintf(PosPreImov,
"
----PosPreImov PulseNO.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p2[
0
],p2[
1
],p2[
2
],p2[
3
],p2[
4
],p2[
5
],
p1[
0
],p1[
1
],p1[
2
],p1[
3
],p1[
4
],p1[
5
]
);
s
=
PosPreImov;
int
nIdAxis
=
GetCheckedRadioButton(IDC_RADIO_AXIS1,IDC_RADIO_AXIS6)
-
IDC_RADIO_AXIS1;
int
nIdType
=
GetCheckedRadioButton(IDC_RADIO_TYPEV,IDC_RADIO_TYPEVR)
-
IDC_RADIO_TYPEV;
CHECK_VOID(nIdAxis
>=
0
&&
nIdAxis
<
6
);
CHECK_VOID(nIdType
>=
0
&&
nIdType
<
2
);
{
#if
0
char
szDist[
100
];
double
dwDist;
GetDlgItemText(IDC_EDIT_DIST,szDist,
100
);
dwDist
=
atof(szDist);
if
(fabs(dwDist)
>
360
)
{
AfxMessageBox(
"
too large
"
);
GetDlgItem(IDC_EDIT_DIST)
->
SetFocus();
}
char
szVel[
100
];
GetDlgItemText(IDC_EDIT_VEL,szVel,
100
);
double
dwVel
=
atof(szVel);
if
(fabs(dwVel)
>
360
)
{
AfxMessageBox(
"
too large
"
);
GetDlgItem(IDC_EDIT_VEL)
->
SetFocus();
}
p[nIdAxis]
=
dwDist;
#else
p[nIdAxis]
=
m_distance;
double
dwVel
=
m_vel;
#endif
CHECK_VOID(BscImov(g_nCid,nIdType
==
0
?
"
V
"
:
"
VR
"
,dwVel,
"
BASE
"
,toolno,p)
==
0
);
}
_EXIT:;
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p)
==
0
);
CHECK_VOID(BscIsRobotPos(g_nCid,
"
BASE
"
,
0
,
&
rconf,
&
toolno,p1)
==
0
);
sprintf(PosPostImov,
"
----PosPostImov PulseNO.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
],
p1[
0
],p1[
1
],p1[
2
],p1[
3
],p1[
4
],p1[
5
]
);
s
+=
PosPostImov;
SetDlgItemText(IDC_EDIT1,s);
}
void
CTestDlg::OnKillfocusEditDist()
{
//
TODO: Add your control notification handler code here
//
char szDist[100];
//
GetDlgItemText(IDC_EDIT_DIST,szDist,100);
//
double dwDist=atof(szDist);
//
if(fabs(dwDist)>360)
//
{
//
AfxMessageBox("too large");
//
GetDlgItem(IDC_EDIT_DIST)->SetFocus();
//
}
}
void
CTestDlg::OnKillfocusEditVel()
{
//
TODO: Add your control notification handler code here
//
char szVel[100];
//
GetDlgItemText(IDC_EDIT_VEL,szVel,100);
//
double dwDist=atof(szVel);
//
if(fabs(dwDist)>360)
//
{
//
AfxMessageBox("too large");
//
GetDlgItem(IDC_EDIT_VEL)->SetFocus();
//
}
}
void
CTestDlg::OnRadioTypev()
{
SetDlgItemText(IDC_EDIT_VEL,
"
10
"
);
SetDlgItemText(IDC_EDIT_DIST,
"
10
"
);
}
//
angle should be small
void
CTestDlg::OnRadioTypevr()
{
SetDlgItemText(IDC_EDIT_VEL,
"
0.1
"
);
SetDlgItemText(IDC_EDIT_DIST,
"
5
"
);
}
void
CTestDlg::OnBUTTONBscMovj()
{
//
TODO: Add your control notification handler code here
UpdateData(TRUE);
CString s;
DWORD t
=
GetTickCount();
char
szText[
200
]
=
"
\0
"
;
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
double
spd
=
2.0
;
short
toolno
=
0
;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
WORD rconf;
int
nIdAxis
=
GetCheckedRadioButton(IDC_RADIO_AXIS1,IDC_RADIO_AXIS6)
-
IDC_RADIO_AXIS1;
int
nIdType
=
GetCheckedRadioButton(IDC_RADIO_TYPEV,IDC_RADIO_TYPEVR)
-
IDC_RADIO_TYPEV;
CHECK_VOID(nIdAxis
>=
0
&&
nIdAxis
<
6
);
CHECK_VOID(nIdType
>=
0
&&
nIdType
<
2
);
CHECK_VOID(BscIsLoc(g_nCid,
0
,
&
rconf,p)
==
0
);
sprintf(szText,
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
]
);
s
+=
szText;
{
#if
0
char
szDist[
100
];
double
dwDist;
GetDlgItemText(IDC_EDIT_DIST,szDist,
100
);
dwDist
=
atof(szDist);
if
(fabs(dwDist)
>
360
)
{
AfxMessageBox(
"
too large
"
);
GetDlgItem(IDC_EDIT_DIST)
->
SetFocus();
}
char
szVel[
100
];
GetDlgItemText(IDC_EDIT_VEL,szVel,
100
);
double
dwVel
=
atof(szVel);
if
(fabs(dwVel)
>
360
)
{
AfxMessageBox(
"
too large
"
);
GetDlgItem(IDC_EDIT_VEL)
->
SetFocus();
}
p[nIdAxis]
=
dwDist;
#else
p[nIdAxis]
+=
m_distance;
double
dwVel
=
m_vel;
#endif
//
CHECK_VOID(BscImov(g_nCid,nIdType==0?"V":"VR",dwVel,"BASE",toolno,p)==0);
CHECK_VOID(BscMovj(g_nCid,dwVel,
"
BASE
"
,rconf,toolno, p)
==
0
);
}
_EXIT:;
sprintf(szText,
"
Using Time:%dms\r\n
"
,GetTickCount()
-
t);
s
+=
szText;
SetDlgItemText(IDC_EDIT1,s);
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
}
/**/
/*
**********************************************************************
*/
/**/
/*
移动关节,关节坐标系,输入为绝对的各个关节脉冲数目
/***********************************************************************
*/
void
CTestDlg::OnBUTTONBscPMovj()
{
//
TODO: Add your control notification handler code here
UpdateData(TRUE);
DWORD t
=
GetTickCount();
char
szText[
200
]
=
"
\0
"
;
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
double
spd
=
2.0
;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
double
p2[
12
]
=
{
0
}
;
double
p1[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
CString s;
char
PosPreBscPMovj [
12000
];
char
PosPostBscPMovj[
120000
];
toolno
=
0
;
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p2)
==
0
);
CHECK_VOID(BscIsRobotPos(g_nCid,
"
BASE
"
,
0
,
&
rconf,
&
toolno,p1)
==
0
);
sprintf(PosPreBscPMovj,
"
----PosPreBscPMovj PulseNO.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p2[
0
],p2[
1
],p2[
2
],p2[
3
],p2[
4
],p2[
5
],
p1[
0
],p1[
1
],p1[
2
],p1[
3
],p1[
4
],p1[
5
]
);
s
=
PosPreBscPMovj;
int
nIdAxis
=
GetCheckedRadioButton(IDC_RADIO_AXIS1,IDC_RADIO_AXIS6)
-
IDC_RADIO_AXIS1;
int
nIdType
=
GetCheckedRadioButton(IDC_RADIO_TYPEV,IDC_RADIO_TYPEVR)
-
IDC_RADIO_TYPEV;
CHECK_VOID(nIdAxis
>=
0
&&
nIdAxis
<
6
);
CHECK_VOID(nIdType
>=
0
&&
nIdType
<
2
);
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p)
==
0
);
sprintf(szText,
"
----PulsePos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
]
);
s
+=
szText;
{
p[nIdAxis]
+=
m_distance;
double
dwVel
=
m_vel;
//
CHECK_VOID(BscImov(g_nCid,nIdType==0?"V":"VR",dwVel,"BASE",toolno,p)==0);
CHECK_VOID(BscPMovj(g_nCid,dwVel,toolno, p)
==
0
);
}
_EXIT:;
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p)
==
0
);
CHECK_VOID(BscIsRobotPos(g_nCid,
"
BASE
"
,
0
,
&
rconf,
&
toolno,p1)
==
0
);
sprintf(PosPostBscPMovj,
"
----PosPostBscPMovj PulseNO.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
"
----CartPos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
],
p1[
0
],p1[
1
],p1[
2
],p1[
3
],p1[
4
],p1[
5
]
);
s
+=
PosPostBscPMovj;
sprintf(szText,
"
Using Time:%dms\r\n
"
,GetTickCount()
-
t);
s
+=
szText;
SetDlgItemText(IDC_EDIT1,s);
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
}
void
CTestDlg::OnButtonZero()
{
//
TODO: Add your control notification handler code here
UpdateData(TRUE);
CString s;
DWORD t
=
GetTickCount();
char
szText[
200
]
=
"
\0
"
;
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
double
spd
=
2.0
;
short
toolno
=
0
;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
WORD rconf;
{
double
dwVel
=
m_vel;
//
CHECK_VOID(BscImov(g_nCid,nIdType==0?"V":"VR",dwVel,"BASE",toolno,p)==0);
CHECK_VOID(BscPMovj(g_nCid,dwVel,toolno, p)
==
0
);
//
CHECK_VOID(0==BscPMovj(g_nCid,dwVel,toolno, p));
}
CHECK_VOID(BscIsLoc(g_nCid,
1
,
&
rconf,p)
==
0
);
sprintf(szText,
"
----PulsePos.S %g,L %g,U %g,R %g,B %g,T %g\r\n
"
,
p[
0
],p[
1
],p[
2
],p[
3
],p[
4
],p[
5
]
);
s
+=
szText;
_EXIT:;
sprintf(szText,
"
Using Time:%dms\r\n
"
,GetTickCount()
-
t);
s
+=
szText;
SetDlgItemText(IDC_EDIT1,s);
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
}
void
CTestDlg::OnBUTTONServOff()
{
//
TODO: Add your control notification handler code here
CString s;
DWORD t
=
GetTickCount();
char
szText[
200
]
=
"
\0
"
;
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
CHECK_VOID(BscServoOff(g_nCid)
==
0
);
_EXIT:;
//
TestCloseComm( g_nCid );
}
void
CTestDlg::OnBUTTONServOn()
{
//
TODO: Add your control notification handler code here
CString s;
DWORD t
=
GetTickCount();
char
szText[
200
]
=
"
\0
"
;
//
short g_nCid = TestOpenComm ( TEST_TRANS_MODE );
//
mode = 0:RS-232C or 1:Ethernet
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
CHECK_VOID(BscServoOn(g_nCid)
==
0
);
_EXIT:;
//
TestCloseComm( g_nCid );
}
BOOL CTestDlg::DestroyWindow()
{
//
TODO: Add your specialized code here and/or call the base class
return
CDialog::DestroyWindow();
}
void
CTestDlg::OnDestroy()
{
CDialog::OnDestroy();
//
TODO: Add your message handler code here
TestCloseComm( g_nCid );
}
void
CTestDlg::OnButtonZhijiao()
{
//
TODO: Add your control notification handler code here
UpdateData(
true
);
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
toolno
=
0
;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
//
WORD rconf;
double
s,l,u,r,b,t
=
0.0
;
p[
0
]
=
m_PosS;
p[
1
]
=
m_PosL;
p[
2
]
=
m_PosU;
p[
3
]
=
m_PosR;
p[
4
]
=
m_PosB;
p[
5
]
=
m_PosT;
double
dwVel
=
m_vel;
//
CHECK_VOID(BscMov(g_nCid,dwVel,"BASE",rconf,toolno, p)==0);
//
CHECK_VOID(BscImov(g_nCid,"V",dwVel,"ROBOT",toolno,p)==0);
CHECK_VOID(BscMovj(g_nCid,dwVel,
"
BASE
"
,rconf,toolno, p)
==
0
);
_EXIT:;
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
}
void
CTestDlg::OnButtonJoint()
{
//
TODO: Add your control notification handler code here
UpdateData(
true
);
if
( g_nCid
<
0
)
{
AfxMessageBox(
"
open error
"
);
return
;
}
//
short toolno=0;
double
p[
12
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
}
;
WORD rconf;
double
s,l,u,r,b,t
=
0.0
;
p[
0
]
=
m_PosS;
p[
1
]
=
m_PosL;
p[
2
]
=
m_PosU;
p[
3
]
=
m_PosR;
p[
4
]
=
m_PosB;
p[
5
]
=
m_PosT;
double
dwVel
=
m_vel;
CHECK_VOID(BscPMovj(g_nCid,dwVel,toolno, p)
==
0
);
_EXIT:;
//
TestCloseComm( g_nCid );
UpdateData(FALSE);
}
查看全文
相关阅读:
JDK9对集合添加的优化
IO异常的处理
动态创建分页 LINQ+EF
TypeError at /admin/booktest/book_infor/add/ __str__ returned non-string (type bytes)
TypeError at /admin/booktest/bookinfo/ expected string or buffer
linux下的 pycharm 2016.3d的注册码
解决ubantu下的pycharm输入中文的问题
.pip的时候出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………
Day06
Day05
原文地址:https://www.cnblogs.com/wqj1212/p/1009640.html
最新文章
iptables rule
sysctl kernel parameter Optimization note
RFC-2068-http
Mysql数据库优化
copy file to docker from realhost
copy file to docker、
First insmod a module
51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言
docker summary
SSH 25 tips
热门文章
resin 64 & Java install
01.初识Python
JQuery 基础:
BeanUtils工具类,简化数据封装
CSS选择器和属性
表单标签
JavaWeb:
Junit测试、反射
Lambda的使用前提
线程池
Copyright © 2011-2022 走看看