Demo:wifi sta
基本介绍:
该系列demo存放在SDK 的路径为:bouffalo_sdk/examples/wifi/sta 。
该系列代码需要将开发板作为STA节点连接到WiFi或者路由器后进行一些基本的通讯数据功能性测试。
以下该系列demo的基本功能说明。
MQTT相关Demo说明:
wifi_mqtt_pub:
该demo将开发板作为mqtt中的publisher,向节点内发布主题信息。
要测试该节点需要以下前置:
1.建立一个mqtt服务器
2.使用mqttbox或者其他相关工具从服务器上订阅对应的主题。
3.可以向串口发送指令。
建议本地下载mosquito,在本地搭建一个mqtt服务器,或者使用emqX公用服务器。该案例的defult server是:`test.mosquitto.org:1883`
向串口发送指令连接WIFI并订阅:
wifi_sta_connect your_wifi_id your_passwd
mqtts_pub $local_ip 8883 #mqtt_pub 如果不带参数会默认发送到上述的公有服务器
#会得到以下输出:
bouffalolab />mqtt_pub is ready to begin publishing the time.
Press ENTER to publish the current time.
Press CTRL-C to exit.
mqtt_pub published : "{"hello mqtt by bl616/8 !"}
Now time is 2023-06-16 00:00:00"
mqtt_pub published : "{"hello mqtt by bl616/8 !"}
Now time is 2023-06-16 00:00:03"
mqtt_pub stop publish to test.mosquitto.org
订阅方会受到当前时间的字符串。
wifi_mqtt_sub:
和上述一样,但是该案例是submiter ,也就是消息订阅方。
前置条件:同上。
同样向串口发送指令来验证:
bouffalolab />wifi_sta_connect your_wifi_id your_pwd
bouffalolab />mqtt_sub your_server <port>
#得到输出
bouffalolab />mqtt_sub listening for '<theme>' messages.
Press CTRL-C to exit.
Received publish('<theme>'): {"hello mqtt"}
Received publish('<theme>'): {"hello mqtt"}
mqtt_sub disconnecting from xxx.your_server
HTTP与HTTPS相关demo说明:
wifi_http:
该demo会向网络服务器发送请求,根据返回结果判断http请求功能是否正常。
前置条件为:一个可共上网的wifi,可以向串口发送指令。
bouffalolab />wifi_sta_connect your_wifi your_pwd
bouffalolab />wifi_http_test www.xxx.com
#以下为输出
bouffalolab />Http client task start ...
Host:www.xxx.com, Server ip Address : the ip of websit server
Http client connect server success!
Press CTRL-C to exit.
HTTP/1.1 200 OK
wifi_https:
该demo会自动发加密数据到www.baidu.com,根据结果判断加密功能是否正常
前置条件:同上
bouffalolab />wifi_https_test
bouffalolab />dst_addr is 842C9824
#以下为输出
[I: 124359488][bl_https.c:126] HTTP/S> bouffalo connect fd = 0x62fd0dc0
[I: 124377783][bl_https.c:136] HTTP/S> ret = -28
[I: 124598639][bl_https.c:156] HTTP/S> ret = 0
[I: 124598987][bl_https.c:160] HTTP/S> total time:471 ms
[I: 124679688][bl_https.c:168] HTTP/S> rcv_ret = 1179
[I: 124680077][bl_https.c:172] HTTP/S> proc_head_r 0, status_code 200, body_start_off 400
[I: 124680533][bl_https.c:180] HTTP/S> Copy to resp @off 0, len 779, 1st char 3C
bl_TcpSslDisconnect end
[I: 124683390][bl_https.c:264] HTTP/S> total time:555 ms
[I: 124683715][bl_https.c:265] HTTP/S> test_1: status_code 200, resp_len 779
[I: 124684395][bl_https.c:267] HTTP/S> resp body: <!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.
如果你想要更改测试服务器目标,可以在https.c源码中添加test,或者直接更改这部分代码:
static void test_1(void)
{
const char *host = "www.baidu.com";
const uint8_t send_buf[] = "GET / HTTP/1.1\r\n"
"Host: www.baidu.com\r\n"
"User-Agent: curl/7.58.0\r\n"
"accept: application/json\r\n"
"\r\n";
uint8_t *buf;
int resp_len;
int status_code;
buf = malloc(16 * 1024);
if (NULL == buf) {
LOG_E("malloc\r\n");
return;
}
resp_len = 16 * 1024;
uint32_t start_time = 0, stop_time = 0;
start_time = xTaskGetTickCount();
status_code = https_request(host, 443, send_buf, sizeof(send_buf) - 1, buf, &resp_len);
stop_time = xTaskGetTickCount();
LOG_I("total time:%d ms\r\n", (stop_time - start_time));
LOG_I("test_1: status_code %d, resp_len %d\r\n", status_code, resp_len);
buf[resp_len] = '\0';
LOG_I("resp body: %s\r\n", buf);
free(buf);
}
上述函数被调用用来执行测试,更改该部分代码可以实现更改测试目标的目的。
TCP的Demo说明:
wifi_tcp:
该部分代码编写了一个server.c和一个client.c,分别用于测试TCP服务端测试和客户端测试。
前置条件:PC端和开发板共同在一个局域网内,可以向串口发送指令。
使用picocom工具在串口中执行指令。
server测试:
bouffalolab />wifi_sta_connect your_wifi_id your_wifi_pwd
bouffalolab />wifi_tcp_echo_test 3365
#服务器建立成功
bouffalolab />tcp server task start ...
Server ip Address : 0.0.0.0:3365
# 执行 nc -v ipaddr port 连接板子的tcp服务器
new client connected from (192.168.1.2, 57480)
Press CTRL-C to exit.
recv 7 len data
client测试:
#首先执行 nc -l -p 3365 在本地架起一个服务器
bouffalolab />wifi_sta_connect BL_TEST 12345678
bouffalolab />wifi_tcp_test localip 3365
#输出
bouffalolab />tcp client task start ...
Server ip Address : 192.168.1.2:3365
TCP client connect server success!
Press CTRL-C to exit.
UDP的demo说明:
该部分代码将使用开发板作为sta节点连接wifi并且架起一个udp服务器。
前置条件:PC端和开发板在同一个局域网内,可以向串口发送指令。
测试过程:
#连接开发板终端并发送指令
bouffalolab />wifi_sta_connect your_wifi_id 12345678
bouffalolab />wifi_udp_echo 3365
bouffalolab />udp server task start ...
#服务其成功架起输出
ip Address : ip:3365
udp bind port success!
Press CTRL-C to exit.
#在PC端执行 nc -u server_ip server_port
#直接发送 1234567890
#成功接受到数据
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:1234567890