我正在用我的星火核心开发一个小的产品创意,并为客户设置一个串行接口,让他们将产品安装到他们的wifi上:
String newssid = wifissid(3);
String newpw = wifipw(3);
WiFi.setCredentials(newssid, newpw);如您所见,我创建了两个函数,通过与pc的串行连接返回ssid和密码。当我在代码中设置凭据时,我已经设法让setCredentials工作了:
WiFi.setCredentials("D-link7853", "thisismypassword");但是,当我使用字符串运行它时,如上面所示,它不想编译。给出的错误是:
serial_wifi_cred_change_3.cpp:49:39: error:没有调用'WiFiClass::setCredentials(String&,String&)‘}的匹配函数。 serial_wifi_cred_change_3.cpp:49:39:注意:候选人是:在文件中包括:../inc/火花_wiring.h:37:0,从./inc/application.h.h:29,从serial_wifi_cred_change_3.cpp:2:../inc/spark_wifi.h:61:21:注意:静态无效WiFiClass::setCred纲(const*)静态无效setCredentials(const *)静态无效setCredentials;^./inc/ssid_wifi.h:61:21:注:候选人期望1参数,2提供./inc/spark_wiring_wifi.h:62:21:注意:静态无效WiFiClass::setCred纲( const char,const char*)静态void setCredentials(const char *ssid,const char密码);^./inc/spark_ long _Wfi.h:62:21:注意:没有已知参数1从'String‘到'const char’./inc/spark_ long _Wfi.h:63:21:注意:静态无效WiFiClass:setCred纲( const char*,const char*,长无符号int)静态无效setCredentials(const char *ssid,const char *密码,未签名的长安全性);
发布于 2015-03-20 11:47:41
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);发布于 2015-02-10 02:51:38
错误声明它不需要字符串,而是一个指向const数组的指针。看起来网站上的文档是误导性的。
发布于 2015-01-28 14:46:29
我不知道答案..。但我正在解决一个类似的问题,你使用的智能配置系统从德州仪器?Smartconfig用于将wifi细节传递到spark应用程序的核心,TexasInstruments提供了一个可以修改的示例应用程序。
祝好运
https://stackoverflow.com/questions/27646849
复制相似问题