大家好,今天主要分享一下如何连接Wifi以及如何发送GET和POST请求
已经研究了好多天了。今天有一点小小的眉目。主要的问题是我没有学习FreeRTOS。不明白如何设置任务调度,不明白如何使任务进行排队即在上一个任务完成后执行下面的任务。
首先今天的示例工程位于 examples\wifi\sta\wifi_http, 我们首先打开wifi_http_client.c 如下图所示。
这个shell 命令是怎么回事呢? 在什么时候接受用户的命令呢?
我们要搞懂这个要首先看一下 main.c 的方法。
main.c 这里获取了外设Uart0,然后把串口的输入绑定到了shell命令的输入, 那么这个样子的话,只要这个串口收到数据的话,那么就会调用第一张截图中的自定义命令。
我们返回到wifi_http_client.c, 这里在接收到串口的命令后会进行解析,如果传入的命令数组长度小于2 的话,即说明命令不合法,它会响应一个提示告诉你命令的格式。
那么POST 和 GET请求该怎么发送呢? 请参考下图所示。 已经本人测试,可以发送POST 和 GET请求。 发送GET 或者POST的指令为 wifi_http_test jsonplaceholder.typicode.com 【wifi_http_test 主机地址】,路径地址根据下面代码中定义的有
如果你找不到公共的API接口。可以用这个网站
- https://jsonplaceholder.typicode.com/
复制代码
连接WIFI
好,现在说一下怎么连接wifi,第一种方式是像上面一样的方式, 通过串口接收数据来连接wifi
连接wifi的指令为 wifi_sta_connect ywlim22@unifi v6%+Nt8M
还有一种方式即,在代码中使用shell_exec来把连结wifi的指令发送给自己,然后连接wifi
这种方式是可行的,但是我并没有找到这个 wifi_sta_connect 命令是在什么地方被绑定到命令行上的
那么在连接wifi后你就可以发送请求了。
这里有一个问题是,你无法再使用一个shell_exec 去调用上述的发送POST和GET请求的指令。
如果你调用的话,那么这个shell_exec 会错误的执行,把下面的 POST和GET请求的命令当作连接wifi的命令。我暂时找不到原因。
然后还有一点重要的是, wifi_http_client.c 中的,这 wifi_test_http_client_init() 方法仅仅是用来发送POST 和GET请求的(可能还支持其他类型的请求,我没有尝试)
不要想着试图用这个方法去调用连接WiFi的命令。
我这里没有解决的是,如何通过代码的方式发送POST和GET请求基于这个例子。我这里有一个解决方案,但是我没有能力实现,因为我没有学过freertos.
方案就是,写一个任务调度,在连接wifi之后调用请求。我自己尝试了但是,这个请求总是在wifi连接成功的时候就已经发送出去了,由于没有ip地址,所以失败。
希望这个demo能带给大家思考,另外也希望大家有更好的办法可以分享给我谢谢!
请按照你自己的环境使用这个代码,或者仅仅拷贝Main.C 和 wifi_http_client.c 即可
|
|