驱动
定时器的初始化及设置
void timeTest()
{
RTimer timer;
TimeSlot timeslot;
gettimestart(×lot);
initUserTimer(&timer, 1, 3); //初始化时钟
while (1)
{
userTimer(&timer);
// userTimerE(&timer); // 定时,无论RTimer.cycle_times为多少,按照总线时间返回,总线周期内阻塞,当到达RTimer.cycle_times设置的定时周期返回值为ture(1),否则,为false(0)
gettimeend(×lot);
printftimediff(×lot);
gettimestart(×lot);
}
}
initUserTimer
初始化时钟,实现总线整数倍时钟定时
userTimer
定时,按照设置的RTimer.cycle_times返回,定时时间未到,函数阻塞
userTimerE
定时,无论RTimer.cycle_times为多少,按照总线时间返回,总线周期内阻塞,当到达RTimer.cycle_times设置的定时周期返回值为ture(1), 否则,为false(0)
获取驱动设备名
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
}
get_name_robot_device
获取机器人子设备名称
get_deviceName
获取驱动设备名(创建时指定的名称)
一轴上/下电
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
int axis_ID=1;
//一轴上电
err=axis_power_on(robot_name,axis_ID);
if (0!=err)
{
Rdebug("2\n");
}
//一轴下电
err = axis_power_off(robot_name,axis_ID);
if (0!=err)
{
Rdebug("3\n");
}
}
axis_power_on
轴使能
axis_power_off
轴去使能
robot_name
设备名称
axis_ID
轴地址(1,2,3,······)
数字输入获取/输出设置
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
//获取第一数字输入
int id_index=0;
int flag=1;
flag=get_di(robot_name, id_index);
//设置第一路数字输出
err=set_do(robot_name, id_index,flag);
if (0!=err)
{
Rdebug("8\n");
}
}
get_di
获取数字输入
set_do
设置数字输出
robot_name
设备名称
id_index
数字输出索引 (0, 1, 2, 3, ...)
flag
输出值 (0, 1)
第一模拟输入获取/输出设置
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
int id_index=0;
//获取第一模拟输入
short ai=1;
ai=get_ai(robot_name, id_index);
//设置第一路模拟输出
err=set_ao(robot_name, id_index, ai);
if (0!=err)
{
Rdebug("9\n");
}
Rdebug("over\n");
}
get_ai
获取模拟输入
set_ao
设置模拟输出
robot_name
设备名称
id_index
模拟输出索引 (0, 1, 2, 3, ...)
ai
输出值
获取机器人自由度
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
int dof=get_group_dof(robot_name);
//数据会保存到日志文件,Rdebug用于保存操作过程中的关系信息。
Rdebug("dof=%d\n",dof);
}
get_group_dof
获取机器人自由度
robot_name
设备名称
机器人上/下电
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
//机器人上电
err = group_power_on(robot_name);
if (0!=err)
{
Rdebug("6\n");
}
//机器人下电
err = group_power_off(robot_name);
if (0!=err)
{
Rdebug("7\n");
}
}
get_group_dof
轴组使能
get_group_dof
轴组去使能
robot_name
设备名称
一轴关节力矩获取/设置
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
//获取一轴关节力矩
double torque=0;
int axis_ID=1;
torque=GetAxisTorque(robot_name, axis_ID);
//设置一轴关节力矩
err=SetAxisTorque(robot_name, torque, axis_ID);
if (0!=err)
{
Rdebug("1\n");
}
}
GetAxisTorque
设置一轴关节力矩
SetAxisTorque
设置一轴关节力矩
robot_name
设备名称
torque
目标关节力
axis_ID
轴地址(1,2,3,······)
轴组关节位置获取/设置
void Test()
{
int err=0;
int robot_index=0;
//获取索引robot_index的机器人名称
const char* robot_name=get_name_robot_device(get_deviceName(0,NULL), robot_index);
if (NULL==robot_name)
{
return -1;
}
//得到机器人当前关节角度(rad)
double position[10];
err=GetGroupPosition(robot_name, position);
if (0!=err)
{
Rdebug("4\n");
}
Rdebug("angle=%f,%f,%f,%f,%f,%f\n",position[0],position[1],position[2],position[3],position[4],position[5]);
//设置期望关节角度(rad)
err=SetGroupPosition(robot_name, position);
if (0!=err)
{
Rdebug("5\n");
}
}
GetGroupPosition
获取轴组关节位置
SetGroupPosition
设置轴组关节位置
robot_name
设备名称
position
关节位置 (rad或mm)