文章目錄
- 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區別