QT实现一个三轴位移台的控制界面
文章目录
- 0 引入
- 1、圆形转盘
- 2、其他
- 3、引用
0 引入
本来想做一个酷炫的3D位移台控制程序,要有一个类似遥控器手柄那种界面,在网上找了半天也没有,想要有那种效果还要用异性按钮做,迫在眉睫的情况下,使用了自己的方法,直接上图
。
1、圆形转盘
上述界面都使用了QT自带的控件实现的(除了图标以外),当然可以在美化界面,比如异行形按钮的使用(见引用1)。
圆形转盘:用了一个Qlable作为背景,上面个放了六个按钮,分别作为水平面的前后左右,以及整体的升降,这里写了一个小技巧,就是左键按住不放,则电机以最小速度运行,松开停止;右键点击不放则以设置的速度运行,松开停止,这样保证了操作的便捷性。
具体就是按钮自定义了,放开鼠标点击的事件:
void sPushButton::mousePressEvent(QMouseEvent *e)
{if (e->button() == Qt::LeftButton) {emit leftPress();} else if (e->button() == Qt::RightButton) {emit rightPress();}
}void sPushButton::mouseReleaseEvent(QMouseEvent *e)
{emit sigrelease();
}
在初始化时候绑定按下和释放对应的动作
connect(leftbutton,&sPushButton::leftPress,[&]{//慢速运行代码;});
connect(leftbutton,&rightPress::leftPress,[&]{//快速运行代码;});
connect(leftbutton,&sPushButton::sigrelease,[&]{//停止代码;});
2、其他
1、其他模块就是正常的操作,由于上位机与位移台是通过bodbusTcp通讯的,读取位置的时候,我是用了一个定时器(只有在这个界面显示的时候去实时读取,这个界面隐藏就关闭定时器),然后每个位置的滑条代表不同方向相对位置,可以更好的知道,位移台是否到达边界;
2、在实际过程中,通讯这一块地址非常注意需要16进制,详细协议参考引用2.
3、引用
1、异形按钮的实现
2、modbusTcp的具体实现
3、modbusRTU与ACII区别