文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、确保虚拟机有运行MQTT client程序的库
STM32MP157-QT文件系统移植MQTT已经做了,即Ubuntu文件系统已经安装了对应的MQTT库,那么你的文件系统应该有下面的东西:
主要是一些程序运行的so库。
二、QT creater+MQTT client开发环境搭建
2.1 QT creater里面新建一个c 空工程
一路下一步,Kit选你Ubuntu虚拟机的,下面那个是我的STM32MP157开发板的Kit。
最后的结果
到这里工程基本搭好了
2.2 添加示例代码
原本的main.c内容是这样的
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
修改后是这样的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <MQTTClient.h>
#define ADDRESS "192.168.16.56:1883"
#define CLIENTID "ExampleClientPub"
#define TOPIC "MQTT Examples"
#define PAYLOAD "Hello World!"
#define QOS 1
#define TIMEOUT 10000L
//int test()
int main(int argc, char* argv[])
{
MQTTClient client;
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
int rc;
if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID,
MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to create client, return code %d\n", rc);
exit(EXIT_FAILURE);
}
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(EXIT_FAILURE);
}
pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = (int)strlen(PAYLOAD);
pubmsg.qos = QOS;
pubmsg.retained = 0;
if ((rc = MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to publish message, return code %d\n", rc);
exit(EXIT_FAILURE);
}
printf("Waiting for up to %d seconds for publication of %s\n"
"on topic %s for client with ClientID: %s\n",
(int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);
rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
printf("Message with delivery token %d delivered\n", token);
if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS)
printf("Failed to disconnect, return code %d\n", rc);
MQTTClient_destroy(&client);
return rc;
}
2.3 添加MQTT Client系统库到当前工程
接着刚才的操作,编译一下,我靠,出现好多错误。。。。
别急,还没加MQTT Client系统库,
工程上单机右键,选择系统库,
这里选系统库的路径
把倒数第二个库选上
选好后确定,pro里面有刚才选的系统库。
之后发现程序能编译通过了,应该也没上面问题了。