This commit is contained in:
hm
2021-07-07 09:16:44 +08:00
parent 3553a97f9f
commit b374c0daf0
8 changed files with 169 additions and 88 deletions
+2 -3
View File
@@ -1,11 +1,9 @@
#include "ThreadTemplet.h"
ThreadTemplet::ThreadTemplet(QObject *parent) : QObject(parent)
ThreadTemplet::ThreadTemplet(QObject *parent) : QThread(parent)
{
running_flag = false;
moveToThread(this);
//connect(this, &ThreadTemplet::started, this, &ThreadTemplet::process);
//setRunFrq(50);//default frq = 50
start();
@@ -40,6 +38,7 @@ void ThreadTemplet::process()//线程函数
void ThreadTemplet::run(void)
{
QThread::msleep(1000/running_frq);
exec();
}
-6
View File
@@ -36,8 +36,6 @@ signals:
public slots:
//线程对外接口
virtual void setRunFrq(uint32_t frq);
virtual void start();
virtual void stop();
virtual void run();
virtual bool isActive(void)
{
@@ -61,9 +59,5 @@ protected:
bool running_flag = false;
quint32 running_frq = 50;//50Hz
QThread *thread;
};
#endif // THREADTEMPLET_H
+1 -1
View File
@@ -428,7 +428,7 @@ void MavLinkNode::stop()
{
if(rtk->isActive())
{
rtk->stop();
//rtk->stop();
delete rtk;
rtk = nullptr;
}
+79 -63
View File
@@ -152,6 +152,20 @@ void ParameterProcess::WriteCmd(uint8_t m_sysid, uint8_t m_compid ,const char *i
}
void ParameterProcess::WriteCmd2(uint8_t m_sysid, uint8_t m_compid ,QVariant id,QVariant type,QVariant value)
{
if(status.m_Mode == Nop_Mode)
{
sysid = m_sysid;
compid = m_compid;
float par = getvalue(value,gettype(type));
WriteCmd(sysid,compid,getid(id.toString()),gettype(type),par);
}
}
//这个函数类似中断,专门处理接收到的状态
void ParameterProcess::Parse(mavlink_message_t msg)
{
@@ -453,7 +467,7 @@ void ParameterProcess::request_read(const char *id, int16_t index)//
//================================
QVariant ParameterProcess::set_value(mavlink_param_value_t param)
QVariant ParameterProcess::setvalue(mavlink_param_value_t param)
{
QVariant value;
@@ -469,7 +483,7 @@ QVariant ParameterProcess::set_value(mavlink_param_value_t param)
}break;
case MAV_PARAM_TYPE_UINT16:
{
value = ((uint16_t *)&param.param_value)[0];
value = ((uint16_t *)&param.param_value)[0];
}break;
case MAV_PARAM_TYPE_INT16:
{
@@ -483,13 +497,21 @@ QVariant ParameterProcess::set_value(mavlink_param_value_t param)
{
value = ((int32_t *)&param.param_value)[0];
}break;
case MAV_PARAM_TYPE_UINT64:
case MAV_PARAM_TYPE_UINT64:
{
#ifdef unix
//value = ((ulong *)&param.param_value)[0];
#else
value = ((uint64_t *)&param.param_value)[0];
#endif
}break;
case MAV_PARAM_TYPE_INT64:
{
#ifdef unix
//value = ((long *)&param.param_value)[0];
#else
value = ((int64_t *)&param.param_value)[0];
#endif
}break;
case MAV_PARAM_TYPE_REAL32:
{
@@ -502,6 +524,7 @@ QVariant ParameterProcess::set_value(mavlink_param_value_t param)
default:
{
value = ((float *)&param.param_value)[0];
//qDebug() << "Unsupported type " << param.param_type;
}break;
}
@@ -509,7 +532,7 @@ QVariant ParameterProcess::set_value(mavlink_param_value_t param)
return value;
}
float ParameterProcess::get_value(QVariant param,uint8_t type)
float ParameterProcess::getvalue(QVariant param,uint8_t type)
{
float value;
union {
@@ -590,64 +613,65 @@ float ParameterProcess::get_value(QVariant param,uint8_t type)
}
QVariant ParameterProcess::set_type(mavlink_param_value_t param)
QVariant ParameterProcess::settype(mavlink_param_value_t param)
{
QVariant value;
switch (param.param_type)
{
case MAV_PARAM_TYPE_UINT8:
{
value = "uint8";
}break;
case MAV_PARAM_TYPE_INT8:
{
value = "int8";
}break;
case MAV_PARAM_TYPE_UINT16:
{
value = "uint16";
}break;
case MAV_PARAM_TYPE_INT16:
{
value = "int16";
}break;
case MAV_PARAM_TYPE_UINT32:
{
value = "uint32";
}break;
case MAV_PARAM_TYPE_INT32:
{
value = "int32";
}break;
case MAV_PARAM_TYPE_UINT64:
{
value = "uint64";
}break;
case MAV_PARAM_TYPE_INT64:
{
value = "int64";
}break;
case MAV_PARAM_TYPE_REAL32:
{
value = "float";
}break;
case MAV_PARAM_TYPE_REAL64:
{
value = "double";
}break;
default:
{
value = "unknow";
}break;
case MAV_PARAM_TYPE_UINT8:
{
value = "uint8";
}break;
case MAV_PARAM_TYPE_INT8:
{
value = "int8";
}break;
case MAV_PARAM_TYPE_UINT16:
{
value = "uint16";
}break;
case MAV_PARAM_TYPE_INT16:
{
value = "int16";
}break;
case MAV_PARAM_TYPE_UINT32:
{
value = "uint32";
}break;
case MAV_PARAM_TYPE_INT32:
{
value = "int32";
}break;
case MAV_PARAM_TYPE_UINT64:
{
value = "uint64";
}break;
case MAV_PARAM_TYPE_INT64:
{
value = "int64";
}break;
case MAV_PARAM_TYPE_REAL32:
{
value = "float";
}break;
case MAV_PARAM_TYPE_REAL64:
{
value = "double";
}break;
default:
{
value = "unknow";
}break;
}
return value;
}
uint8_t ParameterProcess::get_type(QVariant type)
uint8_t ParameterProcess::gettype(QVariant type)
{
uint8_t value = 0;
uint8_t value;
if(type.toString() == "uint8")
{
@@ -698,8 +722,8 @@ uint8_t ParameterProcess::get_type(QVariant type)
}
//使用QString
QString ParameterProcess::set_id(char *id)
//浣跨敤QString
QString ParameterProcess::setid(char *id)//璁剧疆id,濡傛灉id灏忎簬16锛岄偅涔堣兘澶熸壘鍒°/0锛屽¦傛灉绛変簬鎴栬€呭ぇ浜庯紝閭d箞浼氭壘涓嶅埌锛屽洜姝や贡鐮
{
QString Name;
@@ -713,15 +737,7 @@ QString ParameterProcess::set_id(char *id)
return Name;
}
char * ParameterProcess::get_id(QVariant Name)
char * ParameterProcess::getid(QString id)//寰楀埌id
{
QString str = Name.toString();
return str.toLatin1().data();
return id.toLatin1().data();
}
+10 -7
View File
@@ -81,7 +81,7 @@ public slots:
//读取和写入指令
void ReadCmd(uint8_t m_sysid, uint8_t m_compid, uint8_t type);
void WriteCmd(uint8_t m_sysid, uint8_t m_compid , const char *id, uint8_t type, float value);
void WriteCmd2(uint8_t m_sysid, uint8_t m_compid ,QVariant id,QVariant type,QVariant value);
//线程对外接口
@@ -95,12 +95,15 @@ public slots:
void Parse(mavlink_message_t msg);
QVariant set_value(mavlink_param_value_t param);
float get_value(QVariant param,uint8_t type);
QVariant set_type(mavlink_param_value_t param);
uint8_t get_type(QVariant type);
QString set_id(char *id);
char *get_id(QVariant Name);
QVariant setvalue(mavlink_param_value_t param);
float getvalue(QVariant param,uint8_t type);
QVariant settype(mavlink_param_value_t param);
uint8_t gettype(QVariant type);
QString setid(char *id);
char * getid(QString id);
private slots:
//线程私有接口
+1 -1
View File
@@ -11,7 +11,7 @@ rtkprocess::rtkprocess(QObject *parent) : ThreadTemplet(parent)
rtkprocess::~rtkprocess()
{
stop();
//stop();
}