API激光跟踪仪SDK基础使⽤
需要添加的头⽂件
#include"APISDK/include/apidevice.h"
激光跟踪仪的连接
激光跟踪仪的连接需要知道设备的IP地址,然后以该IP地址为参数,调⽤函数进⾏激光跟踪仪的连接。
从line_edit中读取ip地址,然后作为参数传⼊到Connect函数中。
char add[20];
LPTSTR addr;
sprintf_s(add, ui->lineEdit_ipaddr->text().toStdString().c_str());
addr = add;
int nRetCode = g_tracker.Connect(nullptr,0, TheCallBack,nullptr, add);
/
/check RetCode
if(API_ERROR_SUCCESS != nRetCode)
{
g_tracker.DisplayAPIErrorMessage(nRetCode);
QMessageBox::information(nullptr,
QObject::tr("message"),
QObject::tr("Laser tracker connection failed"),
QMessageBox::Ok);
return;
}
//连接成功提⽰
.
..
激光跟踪仪的断开
当由于某些原因,激光跟踪仪主动断开连接,⽽软件不知道设备主动断开。因此不能进⾏其他操作。所以需要设计激光跟踪仪的断开⽅法。
if(g_tracker.IsConnected())
{
timer->stop();
int nRetCode = g_tracker.DisConnect();
if(API_ERROR_SUCCESS != nRetCode)
{
g_tracker.DisplayAPIErrorMessage(nRetCode);
QMessageBox::information(nullptr,
QObject::tr("message"),
QObject::tr("Failed to disconnect"),
QMessageBox::Ok);
return;
}
//断开成功提⽰
...
}
//已经断开提⽰
...
激光跟踪仪回鸟巢
在激光跟踪仪进⾏连接后,需要进⾏回鸟巢操作,API激光跟踪仪提供3中⼤⼩的靶标。分别是Home函数的参数,有3个选项:0 最⼤ 、2中型、 1最⼩
int nRetCode=g_tracker.Home(0);//此处参数是靶球类型
if(API_ERROR_SUCCESS != nRetCode)
{
g_tracker.DisplayAPIErrorMessage(nRetCode);
QMessageBox::information(nullptr,
QObject::tr("message"),
QObject::tr("Back to the nest failed, please check the target ball type"),
QMessageBox::Ok);
return;
}
//回鸟巢成功提⽰
...
激光跟踪仪实时测量
当激光跟踪仪由于其他原因断开连接时,实时测量线程不能⽴即知道,导致在请求实时位置数据时产⽣“设备丢失”错误。所以在每次请求测量时⾸先判断激光跟踪仪是否连接。
本项⽬是在qt中开发的,实时测量使⽤⼀个定时器每隔100ms进⾏测量。测量结果通过信号槽机制发射到数据处理类。
void DeviceInitDock::on_timer()
{
if(g_tracker.IsConnected())
{
REALTIME_INFO rtInfo ;
int ret = RTData(rtInfo);//rtInfo
if(API_ERROR_SUCCESS != ret){
g_tracker.DisplayAPIErrorMessage(ret);
return;
}
float dis = rtInfo.Laser_Distance;
float x = rtInfo.Current_Position_X;
float y = rtInfo.Current_Position_Y;
sdkfloat z = rtInfo.Current_Position_Z;
emit on_trackpos(x,y,z);
//qDebug() << x << y << z << dis << endl;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论