4

更新:我查明了问题出在哪里。为避免任何复杂性,我使用的是 ScanNetwork 示例,因此我什至不必输入SSID. 代码一命中就停止在板上运行WiFi.status()。我有一个Serial.println之前和之后它试图得到一个WiFi.status()serial.println之后没有执行,当然,我仍然没有连接。

我已经下载了新的代码副本,但情况还是一样。真是想不通了。。。。


我正在使用官方的 arduino wifi shield,我有以下代码:

status = WiFi.begin([ssid],[pass]);
Serial.println(status);

状态既不是WL_CONNECTED也不是,这是官方参考http://arduino.cc/en/Reference/WiFiBeginWL_IDLE_STATUS中列出的两种可能的响应

状态是数字 4。当然,我无法连接到 wifi。这是什么????

我已经按了一百万次重置按钮,还有更强大的恢复出厂按钮吗?

4

2 回答 2

4

在此处输入图像描述

我已经想通了。显然,有一个跳线,当你把它放进去时,它会把屏蔽踢到 DFU 模式,可以重新编程。结果,护盾就不会出现。

于 2012-12-16T02:15:28.633 回答
2

根据WiFi.h函数的返回值begin()(所有三个,每个安全方案一个)是ints。这个函数没有直接说明,但我相信就像status()函数一样,返回类型是 a wl_status_twl_status_twl_definitions.h中声明的枚举,如:

typedef enum {
        WL_NO_SHIELD = 255,
        WL_IDLE_STATUS = 0,
        WL_NO_SSID_AVAIL,
        WL_SCAN_COMPLETED,
        WL_CONNECTED,
        WL_CONNECT_FAILED,
        WL_CONNECTION_LOST,
        WL_DISCONNECTED
} wl_status_t;

所以你4WL_CONNECT_FAILED。您可能并不感到惊讶,因为您知道,您的连接失败了。

最喜欢的调试器,AKA 重置按钮,只能做这么多。打印状态是一个好的开始。确保您使用的是begin()适合您的安全类型的正确风格,您似乎正在使用一种用于 WPA 的风格。考虑完全关闭路由器的安全性(如果在您所在地区这样做是安全的),或者使用备用路由器来测试屏蔽的通信能力。此外,这听起来很明显,但请检查 SSID 的拼写错误。

于 2012-12-07T05:34:30.277 回答