线程修正

This commit is contained in:
hm
2021-07-09 13:28:13 +08:00
parent ef3c504203
commit ca4fd40888
13 changed files with 11 additions and 112 deletions
+1 -3
View File
@@ -12,7 +12,6 @@ terminal::terminal(QObject *parent) : ThreadTemplet(parent)
terminal::~terminal()
{
qDebug() << "stop terminal" << QThread::currentThreadId();
//stop();
}
void terminal::process()//线程函数
@@ -26,7 +25,7 @@ void terminal::process()//线程函数
switch(status.m_Mode)
{
default:
case Nop_Mode : break;
case Nop_Mode : QThread::yieldCurrentThread();break;
case RecieveMode : ReadStateMachine();break;
case TransmitMode : WriteStateMachine();break;
}
@@ -35,7 +34,6 @@ void terminal::process()//线程函数
{
break;
}
QThread::yieldCurrentThread();
}
}
+3 -7
View File
@@ -6,12 +6,8 @@ ThreadTemplet::ThreadTemplet(QObject *parent) : QObject(parent)
thread = new QThread();
this->moveToThread(thread);
connect(thread, &QThread::started, this, &ThreadTemplet::process);
//connect(thread, &QThread::finished, this, &ThreadTemplet::deleteLater);
setRunFrq(1);//1hz
initbuff();
start();
}
@@ -25,7 +21,7 @@ ThreadTemplet::~ThreadTemplet()
}
}
void ThreadTemplet::setRunFrq(uint32_t frq)
void ThreadTemplet::setRunFrq(qreal frq)
{
if((frq != 0)||(frq <= 1000))
{
@@ -80,13 +76,13 @@ void ThreadTemplet::process()//线程函数
{
QThread::msleep(1000/frq());
qDebug() << QThread::idealThreadCount();
//qDebug() << QThread::idealThreadCount();
/*
do something
*/
emit showMessage(tr("软件没有正常启动,请重启"));
emit error(tr("thread run base"));
if(isInterruptionRequested())//退出
+5 -3
View File
@@ -12,7 +12,7 @@
#include <mavlinknodeglobal.h>
class MAVLINKNODESHARED_EXPORT ThreadTemplet : public QObject {
#else
class ThreadTemplet : public QThread
class ThreadTemplet : public QObject
{
#endif
Q_OBJECT
@@ -25,6 +25,8 @@ public:
signals:
void error(QVariant type);
void SendMessageTo(quint8 ch, quint8 *data,quint16 len);
void showMessage(const QString &message,int TimeOut = 0);
@@ -35,7 +37,7 @@ public slots:
void setID(int m_sysid,int m_compid);
//线程对外接口
void setRunFrq(uint32_t frq);
void setRunFrq(qreal frq);
void start();
void stop();
bool isActive(void)
@@ -108,7 +110,7 @@ protected:
_status_ status;
bool running_flag = false;
float running_frq = 10;//10Hz
qreal running_frq = 0.01;//1Hz
QThread *thread = nullptr;
-4
View File
@@ -15,7 +15,6 @@ commandprocess::commandprocess(QObject *parent) : ThreadTemplet(parent)
commandprocess::~commandprocess()
{
qDebug() << "stop commmand" << QThread::currentThreadId();
//stop();
}
void commandprocess::process()//线程函数
@@ -41,9 +40,6 @@ void commandprocess::process()//线程函数
{
break;
}
QThread::yieldCurrentThread();
}
}
+1 -65
View File
@@ -241,7 +241,6 @@ MavLinkNode::~MavLinkNode()
rtk = nullptr;
}
//stop();
qDebug() << "stop mavlink" << QThread::currentThreadId();
}
@@ -709,7 +708,7 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
case MAVLINK_PARSE_STATE_GOT_BAD_CRC1:{
parserFailure += 1;
qDebug() << "MAVLINK_PARSE_STATE_GOT_BAD_CRC1";
emit showMessage("mavlink parse CRC error");
emit showMessage("mavlink got bad crc1");
}break;
case MAVLINK_PARSE_STATE_SIGNATURE_WAIT:{
qDebug() << "MAVLINK_PARSE_STATE_SIGNATURE_WAIT";
@@ -802,7 +801,6 @@ void MavLinkNode::StatusParse(mavlink_message_t msg)
}break;
case MAVLINK_MSG_ID_HEARTBEAT: {
mavlink_msg_heartbeat_decode(&msg,&vehicle.heartbeat);
//qDebug() << "recieve heartbeat";
Status->m_heartbeat.autopilot = vehicle.heartbeat.autopilot;
Status->m_heartbeat.base_mode = vehicle.heartbeat.base_mode;
@@ -1187,65 +1185,3 @@ void MavLinkNode::setLogfile(QString file)
}
}
/*
void MavLinkNode::saveExcel(QString filepath)
{
//QString filepath = QFileDialog::getSaveFileName(this,tr("Save orbit"),".",tr("Microsoft Office 2007 (*.xlsx)"));//获取保存路径
if(!filepath.isEmpty()){
QAxObject *excel = new QAxObject(this);
excel->setControl("Excel.Application");//连接Excel控件
excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体
excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示
QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合
workbooks->dynamicCall("Add");//新建一个工作簿
QAxObject *workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿
QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合
QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1
QAxObject *cellA,*cellB,*cellC,*cellD;
//设置标题
int cellrow=1;
QString A="A"+QString::number(cellrow);//设置要操作的单元格,如A1
QString B="B"+QString::number(cellrow);
QString C="C"+QString::number(cellrow);
QString D="D"+QString::number(cellrow);
cellA = worksheet->querySubObject("Range(QVariant, QVariant)",A);//获取单元格
cellB = worksheet->querySubObject("Range(QVariant, QVariant)",B);
cellC = worksheet->querySubObject("Range(QVariant, QVariant)",C);
cellD = worksheet->querySubObject("Range(QVariant, QVariant)",D);
cellA->dynamicCall("SetValue(const QVariant&)",QVariant("流水号"));//设置单元格的值
cellB->dynamicCall("SetValue(const QVariant&)",QVariant("用户名"));
cellC->dynamicCall("SetValue(const QVariant&)",QVariant("金额"));
cellD->dynamicCall("SetValue(const QVariant&)",QVariant("日期"));
cellrow++;
int rows=this->model->rowCount();
for(int i=0;i<rows;i++){
QString A="A"+QString::number(cellrow);//设置要操作的单元格,如A1
QString B="B"+QString::number(cellrow);
QString C="C"+QString::number(cellrow);
QString D="D"+QString::number(cellrow);
cellA = worksheet->querySubObject("Range(QVariant, QVariant)",A);//获取单元格
cellB = worksheet->querySubObject("Range(QVariant, QVariant)",B);
cellC=worksheet->querySubObject("Range(QVariant, QVariant)",C);
cellD=worksheet->querySubObject("Range(QVariant, QVariant)",D);
cellA->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,0)->data(Qt::DisplayRole).toString()));//设置单元格的值
cellB->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,1)->data(Qt::DisplayRole).toString()));
cellC->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,2)->data(Qt::DisplayRole).toString()));
cellD->dynamicCall("SetValue(const QVariant&)",QVariant(this->model->item(i,3)->data(Qt::DisplayRole).toString()));
cellrow++;
}
workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。
workbook->dynamicCall("Close()");//关闭工作簿
excel->dynamicCall("Quit()");//关闭excel
delete excel;
excel=nullptr;
}
return true;
}
*/
+1 -4
View File
@@ -3,7 +3,7 @@
MissionProcess::MissionProcess(QObject *parent) : ThreadTemplet(parent)
{
setRunFrq(20);//默认50Hz频率运行
setRunFrq(20);//默认20Hz频率运行
mission_status.m_Mode = Nop_Mode;
}
@@ -11,7 +11,6 @@ MissionProcess::MissionProcess(QObject *parent) : ThreadTemplet(parent)
MissionProcess::~MissionProcess()
{
qDebug() << "stop mission" << QThread::currentThreadId();
//stop();
}
void MissionProcess::process()//线程函数
@@ -46,8 +45,6 @@ void MissionProcess::process()//线程函数
{
break;
}
QThread::yieldCurrentThread();
}
}
-15
View File
@@ -175,23 +175,8 @@ private:
QList<mapcontrol::WayPointItem *> wplist;
//bool isReadMission = false;
//bool isWriteMission = false;
QMap<int,mapcontrol::WayPointItem::_property> items;
//bool ismTimerTimeOut = false;
};
#endif // MISSIONPROCESS_H
-1
View File
@@ -11,7 +11,6 @@ ParameterProcess::ParameterProcess(QObject *parent) : ThreadTemplet(parent)
ParameterProcess::~ParameterProcess()
{
qDebug() << "stop parameter" << QThread::currentThreadId();
//stop();
}
void ParameterProcess::process()//线程函数
-3
View File
@@ -107,9 +107,6 @@ private slots:
void request_read(const char *id, int16_t index);
signals:
void readError();
void RecieveValue(mavlink_message_t msg);
private:
-1
View File
@@ -31,7 +31,6 @@ rcprocess::rcprocess(QObject *parent) : ThreadTemplet(parent)
rcprocess::~rcprocess()
{
qDebug() << "stop rc" << QThread::currentThreadId();
//stop();
}
//这里一直在解码,一直检查双缓冲里面是否有数据,有就解码,没有就休息
-1
View File
@@ -11,7 +11,6 @@ Replay::Replay(QObject *parent) : ThreadTemplet(parent)
Replay::~Replay()
{
qDebug() << "stop replay" << QThread::currentThreadId();
//stop();
}
void Replay::process()//线程函数
-2
View File
@@ -8,7 +8,6 @@ rtkprocess::rtkprocess(QObject *parent) : ThreadTemplet(parent)
rtkprocess::~rtkprocess()
{
qDebug() << "stop rtk" << QThread::currentThreadId();
//stop();
}
void rtkprocess::process()//线程函数
@@ -41,7 +40,6 @@ void rtkprocess::process()//线程函数
if(isInterruptionRequested())//退出
{
qDebug() << "want to exit";
break;
}
QThread::yieldCurrentThread();
-3
View File
@@ -12,7 +12,6 @@ statusprocess::statusprocess(QObject *parent) : ThreadTemplet(parent)
statusprocess::~statusprocess()
{
qDebug() << "stop status" << QThread::currentThreadId();
//stop();
}
@@ -40,13 +39,11 @@ void statusprocess::process()//线程函数
m_heartbeat.mavlink_version);
}
}
//qDebug() << "yunxing" << (quint64)QDateTime::currentMSecsSinceEpoch() << frq() << status.m_Mode;
if(isInterruptionRequested())//退出
{
break;
}
QThread::yieldCurrentThread();
}
}