我正在研究一个带有我的火花核心的小产品创意,并为客户设置一个串行接口,将他们的产品设置到他们的wifi上:
String newssid = wifissid(3);
String newpw = wifipw(3);
WiFi.setCredentials(newssid, newpw);
如您所见,我创建了2个函数,通过与pc的串行连接返回ssid和密码。当我在代码中设置凭据时,我已经设法让setCredentials工作:
WiFi.setCredentials("D-link7853", "thisismypassword");
但是当我用字符串运行它时,如上所述,它不想编译。给出的错误是:
serial_wifi_cred_change_3.cpp:49:39:错误:没有匹配功能 呼叫' WiFiClass :: setCredentials(String&,String&)' }
serial_wifi_cred_change_3.cpp:49:39:注意:候选人是:在档案中 包含在../inc/spark_wiring.h:37:0,来自 ../inc/application.h:29,来自serial_wifi_cred_change_3.cpp:2: ../inc/spark_wiring_wifi.h:61:21:注意:静态无效 WiFiClass :: setCredentials(const char *)static void setCredentials(const char ssid); ^ ../inc/spark_wiring_wifi.h:61:21: 注意:候选人需要1个参数,2个提供 ../inc/spark_wiring_wifi.h:62:21:注意:静态无效 WiFiClass :: setCredentials(const char ,const char *)static void setCredentials(const char * ssid,const char password); ^ ../inc/spark_wiring_wifi.h:62:21:注意:没有已知的转换 参数1来自' String' to' const char ' ../inc/spark_wiring_wifi.h:63:21:注意:静态无效 WiFiClass :: setCredentials(const char *,const char *,long unsigned int) static void setCredentials(const char * ssid,const char * password, 无符号长安全性); ^
答案 0 :(得分:1)
错误表明它不想要字符串,而是指向const char数组的指针。看起来该网站上的文档具有误导性。
答案 1 :(得分:0)
我不知道答案..但是我使用来自德州仪器的smartconfig系统解决了类似的问题? Smartconfig用于将wifi详细信息传递给spark应用程序中的核心,而TexasInstruments提供了一个可以修改的示例应用程序。
祝你好运答案 2 :(得分:0)
Christian Loris是对的。
setCredentials
期望SSID和密码为char *
类型。您的代码应如下所示:
String newssid = "foo";
String newpw = "bar";
char newssidBuf[newssid.length()];
char newpwBuf[newpw.length()];
newssid.toCharArray(newssidBuf, newssid.length());
newpw.toCharArray(newpwBuf, newpw.length());
WiFi.setCredentials(newssidBuf, newpwBuf);