Files
Tuomas Järvinen 45c19baa45 Changed directory structure and renamed applications
- autopilot -> drone_controller
- rtsp_ai_player -> ai_controller
- added top level qmake project file
- updated documentation
- moved small demo applications from tmp/ to misc/
2024-10-19 14:44:34 +02:00

43 lines
1.3 KiB
C++

#include <QJsonObject>
#include <QJsonDocument>
#include "udpserver.h"
UdpServer::UdpServer(int portNumber, QObject *parent)
: QObject{parent}
{
mUdpSocket = new QUdpSocket(this);
connect(mUdpSocket, &QUdpSocket::readyRead, this, &UdpServer::readPendingDatagrams);
mUdpSocket->bind(QHostAddress::Any, portNumber);
}
void UdpServer::readPendingDatagrams()
{
while (mUdpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(mUdpSocket->pendingDatagramSize());
mUdpSocket->readDatagram(datagram.data(), datagram.size());
QJsonParseError jsonError;
QJsonDocument jsonDoc = QJsonDocument::fromJson(datagram, &jsonError);
if (jsonError.error != QJsonParseError::NoError) {
qWarning() << "Error parsing JSON:" << jsonError.errorString();
continue;
}
if (jsonDoc.isObject()) {
emit newJsonDocument(jsonDoc);
}
// Test code to see that valid value was in the doc.
QJsonObject jsonObj = jsonDoc.object();
if (jsonObj.contains("value") && jsonObj["value"].isDouble()) {
int value = jsonObj["value"].toInt();
qDebug() << "Received value:" << value;
}
else {
qWarning() << "Invalid or missing 'value' field in JSON";
}
}
}