SLAM
udpclient.h
1 #ifndef UDPCLIENT_H
2 #define UDPCLIENT_H
3 
4 #include <QObject>
5 #include <QUdpSocket>
6 
7 #include "rpdev_prot.h"
8 #include "datastructures.h"
9 #include "datapreprocessor.h"
10 
14 struct modules_t {
15  int position;
16  QString name;
17 };
18 
23  quint16 clientPort;
24  quint16 serverPort;
25  QHostAddress address;
26  QString path;
27  bool preprocessData;
28  int sample;
29  int rate;
30 };
31 
37 class UdpClient : public QObject
38 {
39  Q_OBJECT
40 
41 public:
42  UdpClient(DataPreProcessor *preProcessor, QObject *parent = 0);
43  void tryConnect(QString address, quint16 serverPort, quint16 clientPort);
44  void connectToLidar(QString path);
45  void startGrabbing(int sample, int rate);
46  void stopGrabbing();
47  void stateMessage();
48  int getState() const { return this->state; }
49  QString getStateName();
50  QStringList getListOfModules() const;
51  statisticLidar_t* getStatistic() const { return this->stat; }
52 
56  enum ClientState {
57  NotConnected,
58  ConnectedToServer,
59  ConnectedToLidar,
60  ReceivingData
61  };
62 
63 signals:
64  void stateChange();
65  void statisticChange();
66 
67 private slots:
68  void readPendingDatagrams();
69  void sendHeartbeat();
70  void startPreprocessingData();
71  void stopPreprocessingData();
72 
73 private:
74  QUdpSocket *udpSocket;
75  modules_t *moduleList;
76  QByteArray heartbeatMessage;
77  DataPreProcessor *preProcessor;
78  statisticLidar_t *stat;
79 
80  int modulesCount;
81  int state;
82 
83  void initSocket();
84  void setState(int state);
85  void parseModuleList(QByteArray &datagram);
86  void parseStateMsg(QByteArray &datagram);
87  QByteArray getBytesFromDatagram(int start, int end, QByteArray &datagram);
88  int byteArrayToInt(QByteArray array);
89  QByteArray convertIntToByteArray(int byteCount, QString bits);
90 };
91 
92 #endif // UDPCLIENT_H
Třída pro ukládání měření do oblastí area_t bůď ze skeneru nebo z načtených souborů.
Definition: datapreprocessor.h:14
Struktura k ukládání nastavení UDP.
Definition: udpclient.h:22
Třída pro připojení se k serveru, ke kterému je připojen LIDAR.
Definition: udpclient.h:37
ClientState
Možné stavy vztahu aplikace - server.
Definition: udpclient.h:56
Struktura pro ukládání modulů dostupných na serveru.
Definition: udpclient.h:14