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);//修改设备配置}