系统启动
开始使用函数库之前通过调用函数 string NRC_GetNexMotionLibVersion()
以获取获取 NexMotion 库版本,该 API 返回返回 NexMotion 库版本信息,下面进行初始化的流程。
最简单的方式就是调用函数int NRC_StartController(int netPort = 4)
进行启动,,netPort 为连接伺服的网口的端口号,默认为 4,根据具体工控机型号设置。可以去调用函数 NRC_GetControlInitComplete()
函数查看系统是否初始化完成,return 返回系统是否初始化完成。返回值是 0 表示未完成,返回值是 1 表示已完成。在初始化完成前,请勿调用其它函数。系统初始化需要时间,在未完成初始化前调用其他函数时可能返回 TARGET_NOT_EXIST 。
系统启动的 C++demo 程序
#include <iostream>
#include "nrcAPI.h"
#include<stdio.h>
using namespace std;
void msgHook()
{
NRC_Messsage tmp; //定义一个消息结构体对象,详见3.7节
NRC_GetMesssage(1, tmp); //将消息队列中最早的消息赋值给对象tmp
printf("msgHooklocalTime=%d:%d::%d,0x%x,0x%x,text=%s,size=%d\n", tmp.localTime.minute, tmp.localTime.second, tmp.localTime.milliseconds, tmp.kind, tmp.robot, tmp.text.c_str(), NRC_GetMesssageSize());
NRC_Delayms(200);//输出消息内容
}
void SystemStartup()
{
std::string NRC_GetNexMotionLibVersion();//获取Nexmotion版本库信息
cout << "库版本:" << NRC_GetNexMotionLibVersion() << endl;//输出Nexmotion版本库信息
NRC_StartController(); //启动控制系统
while (NRC_GetControlInitComplete() != 1) //检测控制系统是否初始化完成
{
NRC_Delayms(100); //延时100ms
}
NRC_ClearAllError();//清除所有错误
cout << "StartController Success" << endl;
NRC_Delayms(200);
NRC_SetMsgHappenCallback(msgHook);//设置消息发生时的回调函数
}
int main()
{
SystemStartup();//系统启动,为程序简洁,采用调用形式
while(1)//保持程序继续运行
{
NRC_Delayms(1000);
}
}