80 lines
1.5 KiB
C++
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
|