菜单

在MQTT IOT启动前修改配置

下载

1.  HmiApp.h增加头文件包含(i注意在客户区增加)

/*CUSTOM_HEAD_BEGIN*/
#include "util/StringUtil.h"
/*CUSTOM_HEAD_END*/

2. HmiApp.cpp的onReady事件里,修改设备配置(此时设备还没启动,修改可生效)

//把自动生成的这两句(如下图)复制下来  R"(...)" ,这两句相似,上面一句对模拟器起作用,下面一句对屏起作用

onReady代码如下

void HmiApp::onReady(){
    //用户在此添加客户化代码
    string newusr = "test44";//要修改的用户名
    string newpwd = "password44";//要修改的密码

//把复制下来的代码中,用户名密码改掉,这里用replace替换的方法,以便部署时修改。

#if __WIN32__
    string settings = R"({"clientid":"","dll":"TlsMqttDriver","DeviceId":"emqx","cert":"","cafile":"./res/pic/emqxsl-ca.crt","processTimeout":"3000","issim":"true","password":"{pwd}","numIterations":"1","port":"8883","host":"a1b31a61.ala.cn-hangzhou.emqxsl.cn","oneConnetTime":"300","Protocol":"COMMONMQTT","if":"ETHNET","key":"","loopDelay":"100","username":"{usr}"})";
#else
    string settings = R"({"clientid":"","dll":"TlsMqttDriver","DeviceId":"emqx","cert":"","cafile":"/customer/prm/res/pic/emqxsl-ca.crt","processTimeout":"3000","issim":"false","password":"{pwd}","numIterations":"1","port":"8883","host":"a1b31a61.ala.cn-hangzhou.emqxsl.cn","oneConnetTime":"300","Protocol":"COMMONMQTT","if":"ETHNET","key":"","loopDelay":"100","username":"{usr}"})";
#endif

    //replace一下
    settings = StringUtil::replace(settings, "{usr}", newusr);
    settings = StringUtil::replace(settings, "{pwd}", newpwd);

    //修改设备配置
    dm->getDevice("emqx")->setSettings(settings);
}

我们可以改进并简化一下

1.修改设备的协议配置,用户名密码分别如下,便于替换(注意HMI和模拟器都要设置一下

2.onReady()里代码

void HmiApp::onReady(){
    //用户在此添加客户化代码

    string newusr = "test1";//要修改的用户名
    string newpwd = "test1";//要修改的密码
    settings = dm->getDevice("emqx")->getSettings();//直接获取配置
    settings = StringUtil::replace(settings, "{usr}", newusr);//替换
    settings = StringUtil::replace(settings, "{pwd}", newpwd);//替换
    dm->getDevice("emqx")->setSettings(settings);//修改设备配置

}

上一个
通用物联网云平台(MQTT IOT)驱动
下一个
第十四章 脚本(C/C++)开发(进阶)
最近修改: 2025-06-17Powered by