跳到主要内容

Demo 中调用函数汇总

#include <iostream>
#include "nrcAPI.h"
#include<stdio.h>
using namespace std;
void msgHook() {
NRC_Messsage tmp; //定义一个消息结构体对象
NRC_GetMesssage(1, tmp); //将消息队列中最早的消息赋值给对象tmp
printf("msgHooklocalTime=%d:%d::%d,0x%x,0x%x,0x%x,text=%s,size=%d\n",tmp.localTime.minute,tmp.localTime.second,tmp.localTime.milliseconds,tmp.kind,tmp.code,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);//设置消息发生时的回调函数
}
void SetServoMap()
{
std::vector<int> servoMap = {0,0,0,0,0,0};//机器人映射
int syncGroupNum = 1;//外部轴组数
int syncType[]={0,0,0};//外部轴类型
std::vector<std::vector<int>> syncServoMap={{0,0},{0,0},{0,0}};//外部轴映射, 两个双轴变位机
NRC_SetAllServoMapRelation(servoMap,syncGroupNum, syncType, syncServoMap);
}
void SettingofRobotRelatedParameters()
{
NRC_RobotDHConfig robotDHConfig = {321.5, 270,70,299, 78.5, 50, 0, 90, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};//DH参数配置
NRC_SetRobotDHConfig(robotDHConfig );//设置DH参数配置
NRC_RobotJointConfig robotJointConfig = {76.5, 17, 180, -180, 3000, -3000, 1, -1, 5, -5,1,1};//关节参数配置
for (int i=1; i<7; i++)
{
NRC_SetRobotJointConfig(i,robotJointConfig );
}//设置关节参数配置
NRC_RobotRangeLimit robotRangeLimit = { true, 1000, true, -500, false, 300, true, -1000, false, 0, false, 3000 };//范围限制配置
NRC_SetRobotRangeLimit(robotRangeLimit);//设置机器人范围限制
NRC_RobotDecareConfig robotDecareConfig = {1000, 3, -3};//笛卡尔参数配置
NRC_SetRobotDecareConfig(robotDecareConfig);//设置笛卡尔参数配置
}
void RobotMsg()
{
int ioNum;
std::string type1,type2;
cout<<"机器人轴数:"<<NRC_GetRobotAxisSum()<<endl;
cout<<"外部轴数"<<NRC_GetSyncAxisSum()<<endl;
NRC_GetEthercatIOConfig(ioNum, type1, type2);
cout<<"扩展板数:"<<ioNum<<endl;
if(ioNum>0)
{
cout<<"扩展板类型:"<<type1<<" ,"<<type2<<endl;
}
}
void flicker(int j)
{
for (int i=j; i>0; i--)
{
NRC_DigOut(2, 1); //IO端口2输出高电平
NRC_Delayms(1000); //延时1000ms
NRC_DigOut(2, 0); //IO端口2输出低电平
NRC_Delayms(1000); //延时1000ms
}
}
int main()
{
SystemStartup();//系统启动,详见3.3节
RobotMsg();//获取机器人配置,详见3.4节
SetServoMap();//设置伺服映射关系,见3.5节
SettingofRobotRelatedParameters();//机器人相关参数设置,详见3.6节
}