Qt5 qml 从moonraker请求打印头相关信息,并且分析返回信息,赋值给qml参数
其中websocket和moonraker的部分被省略了。
·
信息传递路径
model->websocket->moonraker->websocket->message->ToolHeadModel
其中websocket和moonraker的部分被省略了。
moonraker的接口文档:地址

model发送请求
// model.h
signal:
void sigSendMessage(QString message)
public slots:
void queryToolHeadStatus();
protected:
void init();
// model.cpp
void Model:init()
{
connect(this, &Model::sigSendMessage, _webClientTask.get(), &WebSocketThread::onSendMessage, Qt::QueuedConnection);
connect(_webClientTask.get(), &WebSocketThread::sigReciveMessage, _messageTask.get(), &Message::onReciveMessage, Qt::QueuedConnection);
queryToolHeadStatus() // 触发后发送信息到WebSocket
}
// init()函数是通过websocket监控klipperReady()的情况,
// klipperReady后触发init函数
//由init()触发
void Model::queryToolHeadStatus()
{
QString queryToolHeadStatus= QString("{ \"jsonrpc\": \"2.0\", \"method\": \"%1\", \"params\": { \"objects\": %2 }, \"id\": %3 }")
.arg("printer.objects.query")
.arg("{ \"toolhead\": [\"axis_minimum\", \"axis_maximum\"]})
.arg(1032);
//1032 自定义指示id,之后moonraker返回的信息里将包含 id:1032, 可以根据此来
emit sigSendMessage(queryToolHeadStatus);
}
Message接收并分类回复,传递给下一级
// Message.h
public slots:
void onReciveMessage(const QString &message);
signals:
void sigToolHead(const QJsonObject &rootobj);
private:
void connections();
// Message.cpp
void Message::onReciveMessage(const QString &message)
if (message.contains("id"))
{
QJsonDocument jsonDoc = QJsonDocument::fromJson(message.toUtf8());
if (!jsonDoc.isObject())
{
// qDebug() << "Invalid JSON format";
return;
}
QJsonObject rootObj = jsonDoc.object();
int id = rootObj.value("id").toInt();
//////// 我们设置的id在这里 /////////
if (id == 1032)
{
qDebug() << "message received:" << message;
emit sigToolHead(rootObj);
}
void Message::connections()
connect(this, &MessageHandleTask::sigToolHead, &TOOLHEAD_MODEL, &ToolHeadModel::onToolHead);
ToolHeadModel收到分类好的信息,进行处理
//toolheadmodel.h
public:
void onToolHead(const QJsonObject &rootObj)
// toolheadmodel.cpp
void ToolHeadModel::onToolHead(const QJsonObject &rootObj)
{
··· // 怎么更好处理信息可以咨询AI
}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)