Files
gcs-nf/App/ToolsUI/RemoteControl/joystick.h
T

80 lines
1.5 KiB
C++

#ifndef JOYSTICK_H
#define JOYSTICK_H
#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QtCore/qmath.h>
#include "QThread"
#include "QDebug"
#include "QPicture"
class JoyStick : public QWidget
{
Q_OBJECT
public:
enum { Max_Error = 0,
Min_Error,
Rate_Error,
Dir_Error};
enum {
REVERSE = -1,
NORMAL = 1
};
explicit JoyStick(QWidget *parent = 0);
~JoyStick();
void setValue(uint16_t ch,uint16_t value);
void setRecovery(uint16_t ch,bool state);
void setTrim(uint16_t ch,int16_t value);
void setMaximum(uint16_t ch,uint16_t value);
void setMinimum(uint16_t ch,uint16_t value);
void setDirection(uint16_t ch, int8_t value);
signals:
void error(uint16_t type);
void positionChange(uint16_t channel0,uint16_t channel1);
protected:
void mouseReleaseEvent(QMouseEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
//void mouseDoubleClickEvent(QMouseEvent *e);
//void wheelEvent(QWheelEvent *e);
int16_t Limit(int16_t pos,int16_t min,int16_t max);
void paintEvent(QPaintEvent *);
void drawStick(QPainter*painter);
private:
uint16_t m_channel[2] = {1500,1500};
uint16_t m_trim[2] = {0,0};
bool m_recovery[2] = {true,true};
int8_t m_dir[2] = {NORMAL,NORMAL};//数据方向
uint16_t m_max[2] = {1900,1900};
uint16_t m_min[2] = {1100,1100};
int16_t m_pos[2] = {0,0};
QList<uint16_t> rcdata;
};
#endif // JOYSTICK_H