跳到主要内容

报错相关

3.7.1 弹出队列中的消息相关

通过调用函数NRC_Messsage NRC_FirstMesssagePop()弹出消息队列中最早的消息,获取到队列中最早的消息,并从队列中移除该消息,返回的是队列中最早的消息。

同样通过调用函数NRC_Messsage NRC_LastMesssagePop()弹出消息队列中最后的消息。 获取到队列中最后的消息,并从队列中移除该消息,返回的是队列中最后的消息。

通过调用函数NRC_GetMesssage(int num, NRC_Messsage& msg)获取队列中第 num 个消息,该函数获取队列中第 num 个消息,不会移除该消息。参数 num 是指要获取的消息在队列中的编号,最早的消息编号为 1,取值范围:0 < num<= NRC_GetMesssageSize()参数 msg 是 获取的消息通过此参数返回。

通过调用函数NRC_GetMesssageSize()功能是获取队列中消息总数。

调用函数NRC_ClearMesssage()可以清空消息的队列。

注:用户自定义区间为 0x9000 之后。消息结构体删除早期版本中的成员 type,新增消息编码成员:code 和机器人编号成员:robot。 消息数据结构体如下:

struct NRC_Messsage
{
NRC_TIME localTime;///<消息产生时的系统时间
int kind; ///<消息级别:0:一般消息,1:警告消息,2:错误消息,3:重要消息
int code;///<消息编码
int robot;///<机器人编号
std::vector<int> param;//<消息内容参数,根据具体编码的不同,会有不同个数,一共预留5个
std::string text;///<消息内容
};

3.7.2 回调函数

设置消息发生时的回调函数NRC_SetMsgHappenCallback(void (*fun)(void)) 当有消息发生时,将会调用此回调函数 fun 回调函数的函数指针

下面是一个以上接口使用的示例程序(部分)

..........
void msgHook(){
NRC_Messsage tmp;//定义一个消息结构体对象
NRC_GetMesssage(1,tmp);//将消息队列中最早的消息赋值给duixiantmp
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_SetMsgHappenCallback(msgHook);//设置消息发生时的回调函数
...........

3.73.3 清除错误

函数NRC_ClearServoError()可以用来清除伺服错误,需要注意的是并不是所有的伺服错误都可以直接清除,有些错误是需要先排除错误情况才能清除。

调用函数NRC_ClearAllError()可以去清除全部错误,全部错误包括清空消息的队列,同时清除伺服错误。同样需要注意的是并不是所有的伺服错误都可以直接清除,有些错误是需要先排除错误情况才能清除。

时间数据结构体为:

struct NRC_TIME
{
int year;
int month;
int day;
int hour;
int minute;
int second;
int milliseconds;
};