X-MagicBox-820的luatOS之路连载系列5

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了X-MagicBox-820的luatOS之路连载系列5脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

末了,拿起MagicBox吹吹灰,片刻,再放下。这次跑个题,做个Qt的实例,针对WebEngineView类和Mqtt的一个应用。

王安装的Qt版本中含有WebEngine模块,但缺少MQTT。所幸除了第三方的EMQ,官方也有库,需要自行编译。因此,第一步,编译和配置mqtt库。

载地址,自然是gIThub上:

https://github.COM/qt/qtmqtt

过验证,除了需要安装PErl,可以正确编译生成库文件。对Perl不了解,下载地址如下:

https://www.perl.org/get.htML

后将生成目录的如图三个文件夹内的文件复制到Qt安装目录的对应位置,这样就可以像使用其他模块一样直接使用了。

X-MagicBox-820的luatOS之路连载系列5

 

 

 下来打开设计师界面,简单加几个控件,widget用于显示网页,按键用来操作mqtt,这里没啥看的,根据个人想法设计,主要是外观性的内容。

X-MagicBox-820的luatOS之路连载系列5

 

 

到编辑界面,开始写代码。首先是在主界面显示个网页。Qt WebEngine Core是基于chromium的核心,Win平台下需要使用MSVC编译器。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->SETUPUi(this);

    ui->widget->setContextMenupolicy(Qt::NoContextMenu);
    //这一句就可以显示本地的html文件了
    ui->widget->load(QUrl("C:/Users/wangd/Desktop/Qt/WebEngine/webchart/data.html"));

}

便起见,从apache ECharts的例子中下载一个动态的html文件(含JS)展示如下:

 

X-MagicBox-820的luatOS之路连载系列5

 

QString topic = "820/alert";
QString msg = "please be careful";
m_client->publish(topic, msg.toUtf8())

 

 下来将mqtt的业务代码加进去。简单客户端功能,含发布和订阅功能。计划也只是订阅位置信息和发布一条爱心提醒。

//获取界面上的地址和端口号
m_client->setHostname(ui->lineEdit_host->text());
m_client->setPort(ui->lineEdit_port->text().toInt());
//连接服务器 类似tcp client
m_client->connectToHost();

阅主题的方法:

  //subscribe
 QString topic= "820/gps";
 m_client->subscribe(topic)

布消息的方法:

QString topic = "820/alert";
QString msg = "please be careful";
m_client->publish(topic, msg.toUtf8())

收消息的处理,信号来自于QMqttClient,直接打印出来查看:

connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &;message, const QMqttTopicName &topic) {
         const QString content = QDateTime::currentDateTime().toString()
                     + QLatin1String("Topic: ")
                     + topic.name()
                     + QLatin1String("Message: ")
                     + message
                     + QLatin1Char('n');
         qDebug() << content;
     });

试好代码,就可以使用工具测试效果了。依然是通信猫小工具,订阅"820/alert" 主题,发布"820/gps"主题。

X-MagicBox-820的luatOS之路连载系列5

 

 后运行老王自己的客户端进行消息通信。借助公共服务器进行主题的订阅与发布。】

X-MagicBox-820的luatOS之路连载系列5

 

 然后呢,老王是想着Qt这个客户端是要获得MagicBox的GPS数据,然后在地图上做标记呢,那么前提就要显示地图。思来想去,还是看看百度开放平台吧。需要注册账号申请成为开发者。其实在HTML中引入地图还是很简单的,百度提供了几类API,老王要在浏览器中使用,自然是JavaScript了。

图的示例代码:

<!DOCTYPE html> 
<html>
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
<title>Hello, World</title> 
<style type="text/css"> 
html{height:100%} 
body{height:100%;margin:0px;padding:0px} 
#container{height:100%} 
</style> 
<script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=您的密钥">
</script>
</head> 
  
<body> 
<div id="container"></div>
<script type="text/javascript">
VAR map = new BMapGL.Map("container");
// 创建地图实例 
var point = new BMapGL.Point(116.404, 39.915);
// 创建点坐标 
map.centerAndZoom(point, 15);
// 初始化地图,设置中心点坐标和地图级别 
</script> 
</body> 
</html>

入到老王的工程中去,就是下面的样子。

X-MagicBox-820的luatOS之路连载系列5

 

脚本宝典总结

以上是脚本宝典为你收集整理的X-MagicBox-820的luatOS之路连载系列5全部内容,希望文章能够帮你解决X-MagicBox-820的luatOS之路连载系列5所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。