1

我正在用我的 spark 核心开发一个小产品创意,并为客户设置一个串行接口,以便将他们的产品设置到他们的 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:注意:静态 void WiFiClass::setCredentials(const char*) 静态无效 setCredentials(const char ssid); ^ ../inc/spark_wiring_wifi.h:61:21:注意:候选人需要 1 个参数,提供 2 个 ../inc/spark_wiring_wifi.h:62:21:注意:静态 void WiFiClass::setCredentials(const char , const char *) 静态无效 setCredentials(const char *ssid, const char密码); ^ ../inc/spark_wiring_wifi.h:62:21:注意:没有已知的参数 1 从 'String' 到 '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, unsigned long security); ^

4

3 回答 3

1

该错误表明它不需要字符串,而是需要指向 const char 数组的指针。看起来该网站上的文档具有误导性。

于 2015-02-10T02:51:38.243 回答
0

克里斯蒂安·洛里斯是对的。

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);
于 2015-03-20T11:47:41.150 回答
0

我不知道答案.. 但我正在使用 texas Instruments 的 smartconfig 系统解决与您类似的问题?Smartconfig 用于将 wifi 详细信息传递给 spark 应用程序的核心,TexasInstruments 提供了一个您可以修改的示例应用程序。

祝你好运

于 2015-01-28T14:46:29.577 回答