SLAM
|
Třída pro připojení se k serveru, ke kterému je připojen LIDAR. ...
#include <udpclient.h>
Veřejné typy | |
enum | ClientState { NotConnected, ConnectedToServer, ConnectedToLidar, ReceivingData } |
Možné stavy vztahu aplikace - server. | |
Signály | |
void | stateChange () |
void | statisticChange () |
Veřejné metody | |
UdpClient (DataPreProcessor *preProcessor, QObject *parent=0) | |
Inicializace proměnných a nastavení timeru a zprávy pro heartbeat. ... | |
void | tryConnect (QString address, quint16 serverPort, quint16 clientPort) |
Připojení k serveru. ... | |
void | connectToLidar (QString path) |
Odeslání datagramu pro připojení k LIDARU. ... | |
void | startGrabbing (int sample, int rate) |
Odešle se požadavek na začátek skenování a odesílání dat ze serveru do aplikace. ... | |
void | stopGrabbing () |
Požadavek na zastavení posílání dat. | |
void | stateMessage () |
Požadavek na odeslání informací o stavu. | |
int | getState () const |
QString | getStateName () |
Vrátí název aktuálního stavu. ... | |
QStringList | getListOfModules () const |
Vrací uložený seznam modulů. ... | |
statisticLidar_t * | getStatistic () const |
Privátní sloty | |
void | readPendingDatagrams () |
Čtení příchozích datagramů. | |
void | sendHeartbeat () |
Pošle heartbeat na server. | |
void | startPreprocessingData () |
Začít příchozí data ukládat a zpracovávat. | |
void | stopPreprocessingData () |
Nezpracovávat příchozí data. | |
Privátní metody | |
void | initSocket () |
Inicializace UDP socketu. | |
void | setState (int state) |
Nastavení stavu UDP. ... | |
void | parseModuleList (QByteArray &datagram) |
Parsování příchozího seznamu modulů dostupných na serveru. ... | |
void | parseStateMsg (QByteArray &datagram) |
Parsování informací o stavu. ... | |
QByteArray | getBytesFromDatagram (int start, int end, QByteArray &datagram) |
Funkce pro načtení pouze některých bajtů z datagramu. ... | |
int | byteArrayToInt (QByteArray array) |
Hodnota v QByteArray konvertována do int. ... | |
QByteArray | convertIntToByteArray (int byteCount, QString bits) |
Uložení požadovaného čísla do QByteArray z požadovaných bitů. ... | |
Privátní atributy | |
QUdpSocket * | udpSocket |
modules_t * | moduleList |
QByteArray | heartbeatMessage |
DataPreProcessor * | preProcessor |
statisticLidar_t * | stat |
int | modulesCount |
int | state |
Třída pro připojení se k serveru, ke kterému je připojen LIDAR.
Odesílá dva signály. První při změně stavu stateChange() a druhý při změně nastavení UDP statisticChange(), pro real time zobrazení v aplikaci.
UdpClient::UdpClient | ( | DataPreProcessor * | preProcessor, |
QObject * | parent = 0 |
||
) |
Inicializace proměnných a nastavení timeru a zprávy pro heartbeat.
preProcessor | - Třída obsahující naměřené oblasti (tam se také nové budou ukládat). |
parent |
|
private |
Hodnota v QByteArray konvertována do int.
array | - Pole bajtů. |
void UdpClient::connectToLidar | ( | QString | path | ) |
Odeslání datagramu pro připojení k LIDARU.
path | - Cesta k LIDARU. |
|
private |
Uložení požadovaného čísla do QByteArray z požadovaných bitů.
Implementováno z toho důvodu, že defaultní chování QByteArray je ukládání každé číslice do bajtu. Takže například 1000 se uloží do 4 bajtů, ikdyž by se to vlezlo do 2 bajtů.
byteCount | - Na kolik bitů mají být bity uloženy. |
bits | - Číslo konvertováno na bity k uložení. |
|
private |
Funkce pro načtení pouze některých bajtů z datagramu.
Takže při požadavku na bajty od 0 do 4, vrátí 0., 1., 2. a 3. bajt.
start | - Index startovního bajtu. |
end | - Index koncového bajtu, který už není součástí. |
datagram | - Bajtové pole, z kterého se bajty vrací. |
QStringList UdpClient::getListOfModules | ( | ) | const |
Vrací uložený seznam modulů.
QString UdpClient::getStateName | ( | ) |
Vrátí název aktuálního stavu.
|
private |
Parsování příchozího seznamu modulů dostupných na serveru.
datagram | - Příchozí zpráva. |
|
private |
Parsování informací o stavu.
datagram | - Příchozí zpráva. |
|
private |
Nastavení stavu UDP.
state | = Stav. |
void UdpClient::startGrabbing | ( | int | sample, |
int | rate | ||
) |
Odešle se požadavek na začátek skenování a odesílání dat ze serveru do aplikace.
Server se chová divně při nastavených hodnotách vzorků, proto je potřeba zkoušet jaký počet je nejlepší (s ohledem na počet nulových měření). Například při požadavku 360 hodnot je pouze cca 120 nenulových, takže je zjíštěno, že je lepší mít například 720 hodnot, protože příchozí data obsahují alespoň 220 hodnot.
sample | - Počet vzorků na měření. |
rate | - Jak často se mají hodnoty posílat. |
void UdpClient::tryConnect | ( | QString | address, |
quint16 | serverPort, | ||
quint16 | clientPort | ||
) |
Připojení k serveru.
address | - Adresa serveru. |
serverPort | - Port serveru. |
clientPort | - Port klienta (pro příjem). |