基础开发教程之使用C++语言创建WMX3工程/ WMX3 / 软件运动控制怎么用? 为方便广大客户熟悉WMX3软件功能,掌握使用方法,公司特推出WMX3系列文档。在WMX3基础开发教程的上一篇里,我们讲述了使用C#创建工程的操作,让您对WMX3软件有了一定的熟悉。C++同样也是WMX3的主要编程语言,它的操作步骤与C#有很多相同之处。接下来教程为:使用C++语言创建WMX3工程。 创建工程概述 ▉ 开发WMX3应用程序首先要创建工程,C++是WMX3的主要编程语言之一。 C++开发所需添加的库所在文件夹为C:\ProgramFiles\SoftServo\WMX3\Lib,其中WMX3Api.lib是必要的库,其它库为可选。IMDll.dll应复制到可执行程序同一文件夹下。 下面以C++开启轴使能的程序为例,展示具体创建工程步骤。该方法通用于WMX3_V3.3及以上版本。 操作环境 ▉ 系统环境:RTX3.7 软件版本:WMX3_V3.4u1_64bit Visual Studio 2012 编程语言:C++ 步骤 ▉ 1. 利用Microsoft Visual Studio创建一个Win32控制台程序,在工程引导中选择默认的配置。
图1创建控制台程序 2.打开配置管理器,当使用64-bit版本的WMX3库(即RTX64)时, 解决方案平台要切换到X64。 图2配置管理器 图3切换平台 3.打开工程属性页面。导航至“配置属性\C/C++\常规”,点击“附加包含目录”旁边的箭头,选择“编辑...”。 在弹出的对话框里,把 WMX3安装目录下的头文件目录包含进来。(默认:"C:\Program Files\SoftServo\WMX3\Include")。 图4配置属性\C/C++\常规
图5附加包含目录 4.导航至“配置属性\链接器\常规”。点击“附加库目录”旁边的箭头,选择 “编辑…”。 在弹出的对话框里,把WMX3安装目录下的lib目录包含进来。(默认:"C:\Program Files\SoftServo\WMX3\Lib" )。 图6配置属性\链接器\常规
图7附加库目录 5. 导航至“配置属性\链接器\输入”,点击“附加依赖性”旁边的箭头,然后选择“编辑…”。 在弹出的对话框里,添加以下的dll文件: AdvancedMotionApi.lib ApiBufferApi.lib CompensationApi.lib CoreMotionApi.lib CyclicBufferApi.lib EventApi.lib IMDll.lib IOApi.lib LogApi.lib UserMemoryApi.lib WMX3Api.lib 注意:①IMDLL.lib和WMX3Api.lib是必要的库,其它库为可选。 ②使用 Visual Studio 2015或更高版本时,还需要把legacy_stdio_ definitions.lib和legacy_stdio_wide_specifiers.lib 添加进列表中 图8配置属性\链接器\输入 图9附加依赖项 6.导航至“配置属性\生成事件\后期生成事件”。 点击“命令行”旁边的箭头,选择“编辑…”,输入以下语句: copy /y "C:\Program Files\SoftServo\WMX3\lib\IMDll.dll" "$(OutDir)" 图10配置属性\生成事件\后期生成事件 图11命令行 7. 关闭工程属性页面,打开程序编写页面,添加头文件,例如: #include "AdvancedMotionApi.h" #include "ApiBufferApi.h" #include "CompensationApi.h" #include "CoreMotionApi.h" #include "CyclicBufferApi.h" #include "EventApi.h" #include "IOApi.h" #include "LogApi.h" #include "UserMemoryApi.h" #include "WMX3Api.h" 8.添加下面的示例代码,具体作用为创建设备,开启通讯,开启轴0使能,等5秒后关闭轴0使能,然后断开通讯,关闭设备。 int _tmain(int argc, _TCHAR* argv[]) { using namespace wmx3Api; using namespace std; WMX3Api Wmx3Lib; CoreMotionStatus CmStatus; CoreMotion Wmx3Lib_cm(&Wmx3Lib); Wmx3Lib.CreateDevice("C:\\Program Files\\SoftServo\\WMX3\\", DeviceType::DeviceTypeNormal, INFINITE); Wmx3Lib.SetDeviceName("MotorControl"); Wmx3Lib.StartCommunication(INFINITE); Wmx3Lib_cm.axisControl->SetServoOn(0, 1); while (true) { Wmx3Lib_cm.GetStatus(&CmStatus); if (CmStatus.axesStatus[0].servoOn) { break; } Sleep(5000); } Wmx3Lib_cm.axisControl->SetServoOn(0, 0); while (true) { Wmx3Lib_cm.GetStatus(&CmStatus); if (!CmStatus.axesStatus[0].servoOn) { break; } Sleep(1000); } Wmx3Lib.StopCommunication(INFINITE); Wmx3Lib.CloseDevice(); Sleep(3000); return 0; } 9.打开工具WMX3 Console,运行程序,监控通讯和轴的状态。 当轴号变为绿色且Communication State变为On时,证明通讯开启;Servo On/Off轴0处变为绿色时,证明轴0使能开启。 图12 WMX3 Console界面 附加说明 对于64位系统,当编译平台为32位时应注意下面三点,其他操作步骤不变 ①跳过步骤2,无需切换解决方案平台 ②步骤3中WMX3头文件目录改为"C:\Program Files\SoftServo\WMX3 \Lib\x86" ③步骤6改为输入以下语句: copy /y "C:\Program Files\SoftServo\WMX3\lib\x86\IMDll.dll" "$(TargetDir)" |