‘航线读取状态机完成,可以很快安全的传输航线,关于部分航线功能后面优化,同时发现串口缓存存在bug,明日修复

This commit is contained in:
hm
2020-03-18 00:17:40 +08:00
parent 3555b4ad94
commit f5b3fa5a09
6 changed files with 54 additions and 22 deletions
+22 -8
View File
@@ -50,11 +50,11 @@ void MavLinkNode::start()
running_flag = true;
Nodethread->start();
qDebug() << "thread start" << running_flag;
qDebug() << "MavLinkNode thread start" << running_flag;
}
else
{
qDebug() << "thread has started";
qDebug() << "MavLinkNode thread has started";
}
}
@@ -89,6 +89,7 @@ void MavLinkNode::process()//线程函数
datagram = readbuff(SourceType::c_sock);//每次全部读取
if(!datagram.isEmpty())
{
//qDebug() << "client parse";
Mavlinkparse(SourceType::c_sock,datagram);
}
@@ -131,7 +132,7 @@ void MavLinkNode::setbuff(quint32 src,QByteArray data)
client_buff.buff[client_buff.select].clear();
}
client_buff.buff[client_buff.select].append(data);
//qDebug() << "set buff";
qDebug() << "buff" << client_buff.select << client_buff.buff[client_buff.select].size() ;
break;
case SourceType::s_port:
//当前的buff超过10M字节之后就清除,防爆机制,不然buff太大后容易卡死
@@ -154,12 +155,16 @@ QByteArray MavLinkNode::readbuff(quint32 src)
if(client_buff.select == 0)
{
datagram.setRawData(client_buff.buff[1],client_buff.buff[1].size());
//清除这个未选择的buff
client_buff.buff[1].clear();
//读取完成,可以往这个内存里面写数了
client_buff.select = 1;
}
else if(client_buff.select == 1)
{
datagram.setRawData(client_buff.buff[0],client_buff.buff[0].size());
//清除这个未选择的buff
client_buff.buff[0].clear();
//读取完成,可以往这个内存里面写数了
client_buff.select = 0;
}
@@ -276,16 +281,25 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
case MAVLINK_MSG_ID_EngineState:
case MAVLINK_MSG_ID_VFR_HUD:
StatusParse(msg);
//qDebug() << msg.compid << msg.sysid;
break;
//航线部分
//航线部分
case MAVLINK_MSG_ID_MISSION_REQUEST_LIST:
case MAVLINK_MSG_ID_MISSION_COUNT:
case MAVLINK_MSG_ID_MISSION_CURRENT:
case MAVLINK_MSG_ID_MISSION_ITEM:
case MAVLINK_MSG_ID_MISSION_ITEM_INT:
case MAVLINK_MSG_ID_MISSION_REQUEST:
case MAVLINK_MSG_ID_MISSION_REQUEST_INT:
case MAVLINK_MSG_ID_MISSION_REQUEST:
case MAVLINK_MSG_ID_MISSION_ITEM_INT:
case MAVLINK_MSG_ID_MISSION_ITEM:
case MAVLINK_MSG_ID_MISSION_ACK:
case MAVLINK_MSG_ID_MISSION_CURRENT:
case MAVLINK_MSG_ID_MISSION_SET_CURRENT:
case MAVLINK_MSG_ID_MISSION_CLEAR_ALL:
case MAVLINK_MSG_ID_MISSION_ITEM_REACHED:
case MAVLINK_MSG_ID_MISSION_REQUEST_PARTIAL_LIST:
case MAVLINK_MSG_ID_MISSION_WRITE_PARTIAL_LIST:
Mission->MissionParse(msg);
break;