3.2.1 STA模式连接WiFi热点
<p>任然使用上一节的固件运行,在串口发送数据:<code>t-connect("ssid","pwd")</code>,其中ssid改为你想要连接的热点名,pwd改为你的热点的密码,然后点击发送按钮将命令发给w800,w800会连接你所设置的热点。下面是连接成功后串口输出信息:</p>
<center></center>
<p>当输出了IP地址时,说明w800已经连接上热点并分配到IP。</p>
<p>STA模式进行wifi连接的源码位于文件<code>wm_connect_net_demo.c</code>中。下面是源码关键片段:</p>
<pre><code class="language-c">int demo_connect_net(char *ssid, char *pwd)
{
struct tls_param_ip *ip_param = NULL;
u8 wireless_protocol = 0;
if (!ssid)
{
return WM_FAILED;
}
printf("\nssid:%s\n", ssid);
printf("password=%s\n", pwd);
tls_wifi_disconnect();
tls_param_get(TLS_PARAM_ID_WPROTOCOL, (void *) &wireless_protocol, TRUE);
if (TLS_PARAM_IEEE80211_INFRA != wireless_protocol)
{
tls_wifi_softap_destroy();
wireless_protocol = TLS_PARAM_IEEE80211_INFRA;
tls_param_set(TLS_PARAM_ID_WPROTOCOL, (void *) &wireless_protocol, FALSE);
}
tls_wifi_set_oneshot_flag(0);
ip_param = tls_mem_alloc(sizeof(struct tls_param_ip));
if (ip_param)
{
tls_param_get(TLS_PARAM_ID_IP, ip_param, FALSE);
ip_param->dhcp_enable = TRUE;
tls_param_set(TLS_PARAM_ID_IP, ip_param, FALSE);
tls_mem_free(ip_param);
}
tls_netif_add_status_event(con_net_status_changed_event);
tls_wifi_connect((u8 *)ssid, strlen(ssid), (u8 *)pwd, strlen(pwd));
printf("\nplease wait connect net......\n");
return WM_SUCCESS;
}</code></pre>
<p>STA功能主要是调用<code>tls_wifi_connect((u8 *)ssid, strlen(ssid), (u8 *)pwd, strlen(pwd));</code>这个SDK提供的函数实现热点连接,第一个参数是热点名(字符串);第二个是热点名的长度;第三个是热点密码;第四个是密码的字符串长度。</p>
<p>连接前需要调用<code>tls_wifi_disconnect()</code>先断开连接。</p>
<p>调用<code>tls_netif_add_status_event(con_net_status_changed_event)</code>可以设置wifi事件监听回调函数,参数是监听函数。</p>