问题是,值的两倍string_2_doubles是使用setJoints tJoints需要使用。这是快速攻击,使它工作:
静态
UA_StatusCode
setJointsStr(无效*h,常量
UA_NodeId
objectId,size_t
inputSize,常量
UA_Variant*输入,size_t
outputSize,UA_Variant*输出){
PluginOPCUA*插件= (PluginOPCUA*)h;
如果(inputSize<2){
qDebug()< <“输入
大小:
”< <inputSize< <”
输出
大小:
”< <outputSize;
返回
UA_STATUSCODE_BADARGUMENTSMISSING;
}
QString
str_item;
QString
str_joints;
如果(!Var_2_Str(输入+0,str_item)){
返回
UA_STATUSCODE_BADARGUMENTSMISSING;
}
如果(!Var_2_Str(输入+1,str_joints)){
返回
UA_STATUSCODE_BADARGUMENTSMISSING;
}
/ /
ShowMessage(插件,
QObject: tr(“项目
是:
% 1”).arg (str_item));
ShowMessage(插件,QObject::tr(”位置
是:
% 1”)。参数(str_joints));
项
项=插件- >RDK- >getItem(str_item);
ShowMessage(插件,QObject::tr(“项
是:
% 1”)。参数(项- >的名字()));
如果(!插件- >RDK- >有效的(项)){/ /如果
(! ItemValid(机器人)){
ShowMessage(插件,QObject::tr(“setJointsStr:
RoboDK
项
提供
是
不
有效的”));
返回
UA_STATUSCODE_BADARGUMENTSMISSING;
}
双
关节(nDOFs_MAX];
项- >关节()。getvalue(关节);
int
元素个数=nDOFs_MAX;
ShowMessage(插件,QObject::tr(“Num
联合
是:
% 1”)。参数(元素个数));
string_2_doubles(str_joints,关节,&元素个数);
如果(元素个数< =0){
ShowMessage(插件,QObject::tr(“setJointsStr:
无效的
关节
字符串"));
返回
UA_STATUSCODE_BADARGUMENTSMISSING;
}
ShowMessage(插件,QObject::tr(“联合
1
是:
3”));
tJoints
joints2=项- >关节();
为(int
o=0;o<nDOFs_MAX;o+ +){/ /双
值
从
数组
不能
是
使用
直接
我们
需要
来
使用
tJoints
而不是
joints2。数据()(o]=关节(o];
ShowMessage(插件,QObject::tr(“联合% 1
是:
% 2”)。参数(o)。参数(joints2。数据()(o)));
}
bool
can_move=项- >MoveJ(joints2);
如果(!can_move){
ShowMessage(插件,QObject::tr(“
机器人
不能
移动
来
这
位置”));
}
其他的{
项- >setJoints(joints2);
/ /睡眠(200);
插件- >RDK- >渲染();}
返回
UA_STATUSCODE_GOOD;
}