使用案例
mercury 为项目文件夹,serial 为串口库,两个文件夹都需要解压后放到 er 目录下
此案例会先初始化一个 mercury 实例对象,然后打开串口,使机械臂运动到零点,等待机械臂运动到零点后发送一组角度数据,等待机械臂运动到指定点位之后读取坐标数据和角度数据并打印出来。关闭串口,程序结束。
项目中的 src/main.cpp 为使用案例,您可以根据需要在此基础上进行修改。
注意:angles 和 coords 数组都是实例化对象的成员,都存储了角度和坐标数据。在案例中,double *b = mc. getcoordds()将获得的数据存储到数组 b 中。b 相当于坐标,两者都可用于输出坐标信息,角度也是一样。
#include <iostream>
#include "../include/mercury.h"
using namespace std;
int main()
{
char portid[]="/dev/ttyAMA1";
Mercury mc = Mercury(portid,115200);//实例化对象
try {
mc.my_serial.open(); //打开串口
if (mc.my_serial.isOpen()) { //判断串口是否打开成功
cout << "open" << endl;
double a[7]={10,10,10,-70,10,50,10};
mc.WriteAngles(a,20); //发送角度
sleep(7); //等待机械臂到达点位
double *b = mc.GetCoords(); //获取坐标数据并打印
printf("%lf %lf %lf %lf %lf %lf\n",b[0],b[1],b[2],b[3],b[4],b[5]);
double *c = mc.GetAngles(); //获取角度数据并打印
printf("%lf %lf %lf %lf %lf %lf %lf\n",c[0],c[1],c[2],c[3],c[4],c[5],c[6]);
mc.my_serial.close(); //关闭串口
} else {
cout << "failed" << endl;
}
} catch (const serial::SerialException& e) {
cerr << "SerialException: " << e.what() << endl;
} catch (const std::exception& e) {
cerr << "other: " << e.what() << endl;
}
return 0;
}