深圳市软赢科技有限公司

咨询及服务电话

0755-23014490

创新,易用,实时的高性能软件控制系统
主页  |  新闻  

公众号.png    产品手册.png

公众号
产品手册

基础开发教程之使用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.libWMX3Api.lib是必要的库,其它库为可选。

②使用 Visual Studio 2015或更高版本时,还需要把legacy_stdio_

definitions.liblegacy_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)"