可以接受数据,目前可能会死机,需要验证
This commit is contained in:
+20
-15
@@ -70,29 +70,32 @@ void MavLinkNode::stop()
|
||||
void MavLinkNode::process()//线程函数
|
||||
{
|
||||
uint8_t count = 0;
|
||||
QByteArray datagram = NULL;
|
||||
while (running_flag)
|
||||
{
|
||||
count ++;
|
||||
QThread::msleep(1000/running_frq);//50Hz
|
||||
|
||||
QByteArray datagram = NULL;
|
||||
QThread::msleep(1000/running_frq);
|
||||
|
||||
//解码从UDP来的
|
||||
datagram.clear();
|
||||
datagram = readbuff(SourceType::c_sock);//每次全部读取
|
||||
|
||||
//qDebug() << datagram;
|
||||
|
||||
|
||||
if(!datagram.isEmpty())
|
||||
{
|
||||
Mavlinkparse(SourceType::c_sock,datagram);
|
||||
}
|
||||
|
||||
/*
|
||||
//解码从串口来的
|
||||
datagram.clear();
|
||||
datagram = readbuff(SourceType::c_sock);//每次全部读取
|
||||
datagram = readbuff(SourceType::s_port);//每次全部读取
|
||||
if(!datagram.isEmpty())
|
||||
{
|
||||
Mavlinkparse(SourceType::c_sock,datagram);
|
||||
Mavlinkparse(SourceType::s_port,datagram);
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
//退出线程
|
||||
Nodethread->quit();
|
||||
@@ -115,15 +118,16 @@ void MavLinkNode::setbuff(quint32 src,QByteArray data)
|
||||
{
|
||||
switch (src) {
|
||||
default:
|
||||
case 0:
|
||||
case SourceType::c_sock:
|
||||
//当前的buff超过10M字节之后就清除,防爆机制,不然buff太大后容易卡死
|
||||
if(client_buff.buff[client_buff.select].size() >= client_buff.max_size)
|
||||
{
|
||||
client_buff.buff[client_buff.select].clear();
|
||||
}
|
||||
client_buff.buff[client_buff.select].append(data);
|
||||
//qDebug() << "set buff";
|
||||
break;
|
||||
case 1:
|
||||
case SourceType::s_port:
|
||||
//当前的buff超过10M字节之后就清除,防爆机制,不然buff太大后容易卡死
|
||||
if(serial_buff.buff[serial_buff.select].size() >= serial_buff.max_size)
|
||||
{
|
||||
@@ -138,8 +142,6 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
{
|
||||
QByteArray datagram;
|
||||
|
||||
//从buff里面读取
|
||||
|
||||
switch (src) {
|
||||
default:
|
||||
case SourceType::c_sock:
|
||||
@@ -151,7 +153,7 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
}
|
||||
else if(client_buff.select == 1)
|
||||
{
|
||||
datagram.setRawData(client_buff.buff[1],client_buff.buff[1].size());
|
||||
datagram.setRawData(client_buff.buff[0],client_buff.buff[0].size());
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
client_buff.select = 0;
|
||||
}
|
||||
@@ -165,12 +167,15 @@ QByteArray MavLinkNode::readbuff(quint32 src)
|
||||
}
|
||||
else if(serial_buff.select == 1)
|
||||
{
|
||||
datagram.setRawData(serial_buff.buff[1],serial_buff.buff[1].size());
|
||||
datagram.setRawData(serial_buff.buff[0],serial_buff.buff[0].size());
|
||||
//读取完成,可以往这个内存里面写数了
|
||||
serial_buff.select = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
//qDebug() << datagram;
|
||||
|
||||
return datagram;
|
||||
}
|
||||
|
||||
@@ -186,7 +191,6 @@ void MavLinkNode::Mavlinkparse(quint32 src,QByteArray datagram)
|
||||
if(MAVLINK_FRAMING_OK == mavlink_parse_char(src,*i,&msg,&status))
|
||||
{
|
||||
MAVLinkRcv_Handler(msg); //接收完一帧数据并处理
|
||||
//qDebug() << "re";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -214,6 +218,7 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
|
||||
}break;
|
||||
case MAVLINK_MSG_ID_ATTITUDE: {
|
||||
mavlink_msg_attitude_decode(&msg,&vehicle.attitude);
|
||||
qDebug() << "vehicle.attitude.pitch" << vehicle.attitude.pitch;
|
||||
}break;
|
||||
case MAVLINK_MSG_ID_GPS_RAW_INT: {
|
||||
mavlink_msg_gps_raw_int_decode(&msg,&vehicle.gps_raw_int);
|
||||
@@ -282,7 +287,7 @@ void MavLinkNode::MAVLinkRcv_Handler(mavlink_message_t msg)
|
||||
//最后更新一下界面
|
||||
//emit vehicleUpdate();
|
||||
|
||||
qDebug() << vehicle.heartbeat.type;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user