代码拉取完成,页面将自动刷新
#ifndef UDPSERVER_H
#define UDPSERVER_H
#include <QObject>
#include <QUdpSocket>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
class UdpServer : public QObject
{
Q_OBJECT
Q_PROPERTY(QString currentIp READ currentIp WRITE setCurrentIp)
public:
explicit UdpServer(QObject *parent = 0);
~UdpServer();
QString currentIp() const
{
return m_currentIp;
}
void setCurrentIp(const QString &s)
{
m_currentIp = s;
}
Q_INVOKABLE void sendCommand(int inf, QString cmd);
Q_INVOKABLE QVariant getAgvIpByCardId(int cardId);
private:
QString str2ip(QString s)
{
QString r = "";
int n = s.lastIndexOf(':');
if (n < 0) {
return r;
}
r = s.left(n);
return r;
}
QString str2port(QString s)
{
QString r = "";
int n = s.lastIndexOf(':');
if (n < 0) {
return r;
}
n = s.length() - n;
r = s.right(n - 1);
return r;
}
void addAddressList(QString &addr);
bool isAddressExist(QString &addr);
int addressIndex(QString &addr);
QByteArray makeJsonResponse(int inf, QString ¶m);
int jsonMessageParse(QByteArray msg, QJsonObject &jsonObj);
QByteArray makeTickResponse(QJsonObject &jsonObj);
void emitSignals(QString &ip, int inf, QJsonObject ¶m);
void emitCardIdSignal(QString &addr, QJsonObject ¶m);
void emitStatus(QString &ip, QJsonObject ¶m);
signals:
void agvStatusChanged(int inf, const QString &status);
void agvStatusChanged2(const QString &ip, const QString &status);
// 信号参数类型QString需要用const引用类型,否则qml不识别
void agvAddressChanged(const QString &ip);
void agvCardIdChanged(const QString &ip, int lastId, int cardId);
public slots:
void readPendingDatagrams();
private:
QUdpSocket udpSocket;
QStringList clientList;
QList<int> cardIdList; // agv cardIdList, agv所在的pre点
QString m_currentIp;
int m_flag;
};
#endif // UDPSERVER_H
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。