我正在尝试从连接UDP的红外摄像机接收数据包。 (FLIR Lepton 2.5)并且我试图在Windows 10,Qt Creator 4.5,Qt 5.9上运行代码。
正如下面的截图所示,连接UDP的红外摄像机发送UDP数据包。
这是我的代码:
MyPageControl
这是我的代码实现结果:
当连接了信号()时,无法调整数据大小(错误)
可以接收数据(如果否则返回-1):-1
数据在这里:
已连接!
// myudp.cpp
#include "myudp.h"
#include <QNetworkProxy>
MyUDP::MyUDP(QObject *parent) :
QObject(parent)
{
// create a QUDP socket
socket = new QUdpSocket(this);
socket_cam = new QUdpSocket(this);
cam_address = QHostAddress("192.168.10.197");
cam_port = 32197;
connect(socket, SIGNAL(connected()), this, SLOT(readNwrite()));
socket->connectToHost(cam_address, cam_port, QIODevice::ReadWrite);
if (socket->waitForConnected(2000))
qDebug("Connected!");
else
qDebug("Cannot be connected..");
qDebug() << socket->state();
// seems to be connected...
}
void MyUDP::readNwrite()
{
QByteArray data;
qint64 resize_size = socket->pendingDatagramSize();
//socket have NO size(resize_size == -1, ERROR!)
if(resize_size != -1)
{
qDebug() << "data was resized properly; size: "<<resize_size;
data.resize(socket->pendingDatagramSize());
}
else
qDebug() << "data could not be resized(error)";
qint64 det_num;
det_num = socket->readDatagram(data.data(), 964, &cam_address, &cam_port);
qDebug() << "Can receive data(returns -1 if NO): "<<det_num;
//this returns nothing, too!
qDebug() << "Data is here: " << data.data();
}
当信号准备就绪时Read(),已连接!
QAbstractSocket::ConnectedState
数据已正确调整大小;大小:0
可以接收数据(如果否则返回-1):-1
数据在这里:
有时似乎未发出readyRead信号。
但是很明显,没有发送任何数据。
我试图找到与带有远程网络的UDP网络相关的示例。但是他们很少。
根据某些线程,人们建议不要在UDP网络上使用QAbstractSocket::ConnectedState
功能。但是,我不知道如何在不使用connectToHost
的情况下建立远程网络。
我想知道如何更正我的代码以从远程网络获取数据包。任何建议都会对我非常感激,因为我是UDP网络和Qt的新手。