今天,我们来讲解一下正运动技术运动控制卡应用开发教程之VC6.0。
在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618。这两款产品分别是4轴,6轴运动控制卡。
ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。
ECI2618支持6轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。
ECI2418,ECI2618均使用同一套API函数,均支持C、C++、C#、LabView、Python、Delphi等开发语言,支持VC6.0、VB6.0、Qt、.Net等平台,支持Windows、Linux、WinCE、iMac等操作系统。
一、运动控制卡VC6.0开发流程
1、打开 VC++6.0,新建一个工程。
2、选择“ MFC APPWizard(exe)”,选择 工程保存路径,设置 工程名,选择 确定。
3、在应用程序类型 选择基本对话框,完成项目新建。
4、将产品配套光盘“ ..\函数库\dll”文件夹中的 动态链接库“ zmotion.dll、zauxdll.dll”、 头文件“zauxdll2.h”和 lib文件“ zauxdll.lib”复制到工程文件夹中。
5、选择“Project”菜单下的“Settings…”菜单项。
6、切换到“Link”标签页,在“Object\library modules”栏中输入lib文件名:zauxdll.lib。
7、在应用程序文件中加入函数库头文件的声明,如:#include “zauxdll2.h”,
8、至此,用户就可以在VC6.0中调用函数库中的任何函数,开始编写应用程序, 具体函数的用法的功能可以参考光盘资料里面的:ZMotion PC函数库编程手册。
9、参考ZMotion PC函数库编程手册的链接控制器的函数说明,在 ECIDlg:OnInitDialog()函数中添加链接控制器代码 ZAux_OpenEth(“192.168.0.11”,&g_handle);即可链接控制器。
10、通过MOVE按钮,控制控制器进行插补运动。
(1)右键MOVE按钮,选择属性,设置按钮ID。
(2)右键MOVE按钮选择事件。
(3)新建相关事件。
4)在事件处理函数中添加插补运动函数。
11、编译运行就可以通过PC控制控制器了。
如果编译报错:无法打开预编译的头文件:没有这样的文件或目录。
请选择“Project”菜单下的“Settings…”菜单项,然后选择c/c++进行如下设置。
二、VC6.0例程讲解
1、在我们的光盘资料里有很多VC6.0的例程,通过这些历程可以更容易的上手我们的控制器。
2、单轴运动例程
a、通过以太网链接到指定IP的控制器;
b、设置运动轴参数;
c、选择运动轴对象;
d、选择运动方式,实现持续运动和寸动;
3、实现步骤
(1)搜索IP,链接控制器。
A、先将相关控件拖拽到UI界面,并设置对应的事件处理函数。
B、下拉框事件处理函数,实现自动搜索IP。
先根据ZMotion PC 编程手册,在下拉框事件处理函数添加控制器IP搜索函数“ZAux_SearchEthlist()”,然后将获取到的IP字符串进行解析,具体解析方法请参考例程。
//自动搜索IP void CECIDlg::OnDropdownIPList() { /*自动搜索IP地址*/ char buffer[10240]; int32 iresult; /*搜索当前网段下的 IP 地址 详情请参考:zmotion pc 编程手册*/ iresult = ZAux_SearchEthlist(buffer, 10230, 100); if(ERR_OK != iresult) { return; } CComboBox *m_pEthList; m_pEthList = (CComboBox *)GetDlgItem(IDC_IPList); if(NULL == m_pEthList) { return; } /*从字符串转换成IP*/ int ipos =0; const char * pstring; pstring = buffer; for(int j= 0; j< 20;j++) { char buffer2[256]; buffer2[0] = '\0'; /*跳过空格*/ while(' ' == pstring[0]) { pstring++; } ipos = sscanf(pstring , "%s", &buffer2); if(EOF == ipos) { break; } /*跳过字符*/ while((' ' != pstring[0]) && ('\t' != pstring[0]) && ('\0' != pstring[0])) { pstring++; } if(CB_ERR != m_pEthList->FindString(0, buffer2)) { continue; } if('\0' == buffer2) { return; } /*加入*/ m_pEthList->AddString(buffer2); } return; }
楼主最近还看过