‘航线读取状态机完成,可以很快安全的传输航线,关于部分航线功能后面优化,同时发现串口缓存存在bug,明日修复
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user