forked from vijaykarthikeyanvvk98/orca_software
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreceiver.cpp
More file actions
69 lines (63 loc) · 2.05 KB
/
Copy pathreceiver.cpp
File metadata and controls
69 lines (63 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "receiver.h"
#include<qDebug>
#include <QUdpSocket>
#include <qdatetime.h>
static QUdpSocket *send_socket;
//QUdpSocket* nmea_socket = nullptr; // actual definition
static QHostAddress receiverAddress=QHostAddress("192.168.56.2");
static quint16 receiverPort = 10050, CPT_PORT = 10055;
Receiver::Receiver() {
socket=new QUdpSocket(this);
if (!socket->bind(QHostAddress::AnyIPv4, 10050)) {
qDebug() << "Failed to bind UDP socket to" << Address << ":" << port;
}
/*QTimer *timer = nullptr;
timer = new QTimer();
connect(timer,& QTimer::timeout, this, &Receiver::receivedatagram);
timer->start(1000);*/
connect(socket,& QUdpSocket::readyRead, this, &Receiver::receivedatagram);
}
void Receiver::senddatagram(QByteArray buffer)
{
//qDebug()<<buffer.toHex();
//socket->writeDatagram(data,Address,port);
// Implicit thread-safety via Qt's event loop
/*qDebug() << "UDP actually sent:"
<< QDateTime::currentMSecsSinceEpoch();*/
QMetaObject::invokeMethod(this, [this, buffer]() {
if(!receiverAddress.isNull())
{
//qDebug()<<receiverAddress;
//qDebug()<<receiverPort;
//
int written=socket->writeDatagram(buffer,receiverAddress, receiverPort);
//qDebug()<<written;
//qDebug()<<socket->readBufferSize();
}
//else
;
}, Qt::DirectConnection);
//qDebug()<<"message"<<message;
}
void Receiver::receivedatagram()
{
//qDebug()<<"data";
/*if(!socket)
return;*/
QByteArray Buffer;
if(socket->state()==QUdpSocket::BoundState)
{
if(socket->hasPendingDatagrams())
{
datagram.clear();
QHostAddress senderAddress;
quint16 senderPort;
datagram.resize(socket->pendingDatagramSize());
socket->readDatagram(datagram.data(), datagram.size(),& senderAddress, &senderPort);
Buffer.append(datagram);
emit datareceived(Buffer);
Buffer.clear();
}
}
//socket->receiveDatagram(data)
}