硬件
- API Radian激光跟踪仪
- 1.5英寸靶球
- (后面可能还有)API STS六维靶标
- Windows电脑
- 网线
环境配置
头文件
API的二次开发用到三个头文件
- apidevice.h
- APIGeneric.h
- BasicGeomStruct.h
需要放进项目文件夹的/include文件夹下面,并右键项目-属性,把VC++目录-包含目录设成刚刚的目录
库文件
API的二次开发用到一个库文件
- APIInterface.lib
需要放进项目文件夹的/lib文件夹下面,并右键项目-属性,把VC++目录-库目录设成刚刚的目录
并且需要在链接器-输入-附加依赖项中添加该库(添加带后缀的文件名)
dll
该开发包使用动态链接库,需要将dll文件添加到(三选一)
- (该文件夹可用)编译出来的exe文件所在文件夹
- (该项目可用)某个特定文件夹,并在属性页-调试-环境中添加“PATH=项目文件夹到文件夹的相对路径”
- (该用户/系统可用)某个特定文件夹,并右键开始-系统-高级系统设置-环境变量-Path下添加刚刚的文件夹
需要特别注意的地方
- 属性页-高级-高级属性-字符集需设为“使用Unicode字符集”
- 属性页-C/C++-语言-将WChar_t视为内置类型需设为“否”
- 函数是在后台运行的,不会阻塞主进程,因此需要自己手动阻塞一下,否则报错
测试代码
暂时还写得很屎,不过大概功能有
#include <apidevice.h>
#include <string>
#include <iostream>
void taskDone(LPVOID param, LPVOID pvoid)
{
cout << "task done." << endl;
}
int main()
{
string my_str;
// general objects
int nRetCode = API_ERROR_SUCCESS;
CAPIDevice my_apidevice;
cout << "init" << endl;
cin >> my_str;
// connect
int my_nDev = 0; // This value can be either 0 which means Tracker 3/Radian or 1 which means Omni-tracker.
if ((nRetCode = my_apidevice.Connect(NULL, my_nDev, &taskDone, NULL)) != API_ERROR_SUCCESS)
{
my_apidevice.DisplayAPIErrorMessage(nRetCode);
}
cout << "connect" << endl;
cin >> my_str;
// home
int my_nIdx = 0; // 0: 1.5 inch; 1: 0.5 inch; 2: 7/8 inch. Default is 0: 1.5 inch.
if ((nRetCode = my_apidevice.Home(my_nIdx)) != API_ERROR_SUCCESS)
{
my_apidevice.DisplayAPIErrorMessage(nRetCode);
}
cout << "home" << endl;
cin >> my_str;
// get data
REALTIME_INFO my_rt_info;
while (true) {
if ((nRetCode = my_apidevice.getRTData(my_rt_info)) != API_ERROR_SUCCESS)
{
my_apidevice.DisplayAPIErrorMessage(nRetCode);
break;
}
string my_rt_x = to_string(my_rt_info.Current_Position_X);
string my_rt_y = to_string(my_rt_info.Current_Position_Y);
string my_rt_z = to_string(my_rt_info.Current_Position_Z);
cout << my_rt_x << "\t";
cout << my_rt_y << "\t";
cout << my_rt_z << "\n";
}
cout << "can't get data" << endl;
cin >> my_str;
// disconnnect
if ((nRetCode = my_apidevice.DisConnect()) != API_ERROR_SUCCESS)
{
my_apidevice.DisplayAPIErrorMessage(nRetCode);
}
cout << "disconnect" << endl;
return 0;
}
常见问题
FTP connection to API Laser Tracker has failed. Check your firewall settings or contact API support team.
连接时出错
重启一下激光跟踪仪即可(关电源,然后再开电源)。