0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】基于LwIP的Web Server 的演示与代码分享

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-03 15:53 次阅读
本文来源电子发烧友社区,作者:soon顺soon, 帖子地址:https://bbs.elecfans.com/jishu_2018138_1_1.html

硬件模块:

WF-H861-SSA1 WiFi 模组

实现功能:在上电后进入AP 模式,热点名称:Soon-WiFi-IoT,连接上热点后用浏览器访问http://192.168.10.1/
显示“Hello Wifi IoT”
095426qkvzqwx9cwvzscrv.png
http://192.168.10.1/wifiiot
显示“欢迎访问wifi-iot页面”
095428am6y4n4m63pjreep.png
http://192.168.10.1/error
显示“404-Page not found”
095429hwjfzyiyi2w1yiwf.png

主要代码如下
  1. #include
  2. #include
  3. #include
  4. #include
  5. #include "ohos_init.h"
  6. #include "cmsis_os2.h"
  7. #include "wifi/ap_mode.h"
  8. #include "lwip/sockets.h"
  9. const unsigned char htmldata[] = "
  10. <title>Wifi-iot
  11. 欢迎访问wifi-iot页面

  12. ";
  13. const unsigned char hellowifiiot[] = "
  14. Hello Wifi IoT

  15. ";
  16. const unsigned char errhtml[] = "
  17. 404-Page not found

  18. ";
  19. /**
  20. * [url=home.php?mod=space&uid=2666770]@Brief[/url] serve tcp connection
  21. * [url=home.php?mod=space&uid=3142012]@param[/url] conn: connection socket
  22. * @retval None
  23. */
  24. void http_server(int conn)
  25. {
  26. int buflen = 1500;
  27. int ret;
  28. unsigned char recv_buffer[1500];
  29. /* Read in the request */
  30. ret = read(conn, recv_buffer, buflen);
  31. if (ret <= 0)
  32. {
  33. close(conn);
  34. printf("read failedrn");
  35. return;
  36. }
  37. if (strncmp((char *)recv_buffer, "GET /wifiiot", 9) == 0)
  38. {
  39. write(conn, htmldata, sizeof(htmldata) - 1);
  40. }
  41. else if (strncmp((char *)recv_buffer, "GET /error", 9) == 0)
  42. {
  43. write(conn, errhtml, sizeof(errhtml) - 1);
  44. }
  45. else
  46. {
  47. write(conn, hellowifiiot, sizeof(hellowifiiot) - 1);
  48. }
  49. /* Close connection socket */
  50. close(conn);
  51. }
  52. /**
  53. * @briefhttp_task
  54. * @param None
  55. * @retval None
  56. */
  57. static void http_task(void)
  58. {
  59. int sock, newconn, size;
  60. struct sockaddr_in address, remotehost;
  61. /* create a TCP socket */
  62. if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  63. {
  64. printf("can not create socket");
  65. return;
  66. }
  67. /* bind to port 80 at any interface */
  68. address.sin_family = AF_INET;
  69. address.sin_port = htons(80);
  70. address.sin_addr.s_addr = INADDR_ANY;
  71. if (bind(sock, (struct sockaddr *)&address, sizeof(address)) < 0)
  72. {
  73. printf("can not bind socket");
  74. close(sock);
  75. return;
  76. }
  77. /* listen for connections (TCP listen backlog = 1) */
  78. listen(sock, 1);
  79. size = sizeof(remotehost);
  80. while (1)
  81. {
  82. newconn = accept(sock, (struct sockaddr *)&remotehost, (socklen_t *)&size);
  83. if (newconn >= 0)
  84. {
  85. printf("newconn");
  86. http_server(newconn);
  87. }
  88. else
  89. {
  90. close(newconn);
  91. }
  92. }
  93. }
  94. static void *Lwip_Web_Task(const char *arg)
  95. {
  96. (void)arg;
  97. wifi_start_softap();
  98. http_task();
  99. return NULL;
  100. }
  101. static void Lwip_Web_Entry(void)
  102. {
  103. osThreadAttr_t attr = {0};
  104. attr.name = "Lwip_Web_Task";
  105. attr.attr_bits = 0U;
  106. attr.cb_mem = NULL;
  107. attr.cb_size = 0U;
  108. attr.stack_mem = NULL;
  109. attr.stack_size = 8192;
  110. attr.priority = osPriorityNormal;
  111. if (osThreadNew((osThreadFunc_t)Lwip_Web_Task, NULL, &attr) == NULL)
  112. {
  113. printf("Falied to create Lwip_Web_Entry!n");
  114. }
  115. }
  116. SYS_RUN(Lwip_Web_Entry);
复制代码


完整代码,如附件
 lwip_webserver.7z(2.69 KB, 下载次数: 3)

编译好的测试bin
 Hi3861_wifiiot_app_allinone.bin(761.04 KB, 下载次数: 5)

参考文章
LwIP之socket应用--WebServer和Modbus TCP
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    14

    文章

    2106

    浏览量

    124315
  • HarmonyOS
    +关注

    关注

    79

    文章

    1967

    浏览量

    30006
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

    6901
收藏 人收藏

    评论

    相关推荐

    Wi-Fi资产跟踪应用示例概述

    SiliconLabs(亦称“芯科科技”)近期在GitHub资源库中发布了一个基于最新SiWx917 Wi-Fi SoC的Wi-Fi资产跟踪(Asset Tracking)应用示例。此应用程序演示如何将SiWG917模块配置为A
    的头像 发表于 11-08 14:47 236次阅读

    Wi-Fi 7与Wi-Fi 6E有什么区别

    也许很多人还在考虑是否要将使用的Wi-Fi设备升级到Wi-Fi 6或Wi-Fi 6E,而这些标准的继任者却已经开始“登堂入室”了。Wi-Fi 7是新一代
    的头像 发表于 11-07 11:38 459次阅读

    DA16200 超低功耗 Wi-Fi 模块开发套件 Pro数据手册

    电子发烧友网站提供《DA16200 超低功耗 Wi-Fi 模块开发套件 Pro数据手册.rar》资料免费下载
    发表于 05-30 17:53 1次下载
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模块开发<b class='flag-5'>套件</b> Pro数据手册

    DA16200 超低功耗 Wi-Fi 模块开发套件数据手册

    电子发烧友网站提供《DA16200 超低功耗 Wi-Fi 模块开发套件数据手册.rar》资料免费下载
    发表于 05-30 17:13 0次下载
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模块开发<b class='flag-5'>套件</b>数据手册

    华为获得全球首个国际Wi-Fi联盟WFA企业级Wi-Fi 7认证!

    Wi-Fi联盟已发布Wi-Fi 7认证标准,华为是第一批送测厂商,获得业界首个企业级Wi-Fi 7 的Wi-Fi联盟官方认证。
    的头像 发表于 04-28 10:17 637次阅读
    华为获得全球首个国际<b class='flag-5'>Wi-Fi</b>联盟WFA企业级<b class='flag-5'>Wi-Fi</b> 7认证!

    验证物联网Wi-Fi HaLow用例的MM6108-EKH08开发套件来啦

    验证物联网Wi-Fi HaLow用例的MM6108-EKH08开发套件来啦 MM6108-EKH08开发套件专为验证物联网Wi-Fi HaLow用例而设计。该
    的头像 发表于 04-11 12:01 1652次阅读
    验证物联网<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08开发<b class='flag-5'>套件</b>来啦

    Wi-Fi 7与Wi-Fi 6的相关知识科普

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于蓝
    的头像 发表于 03-12 10:59 688次阅读
    <b class='flag-5'>Wi-Fi</b> 7与<b class='flag-5'>Wi-Fi</b> 6的相关知识科普

    Wi-Fi的诞生与发展

    短距离无线通信技术有Wi-Fi、ZigBee、蓝牙以及Z-Wave,今天我们先揭开Wi-Fi的神秘面纱。Chrent短距离无线通信技术——Wi-Fi过去的20多年,Wi-Fi靠着仅有的
    的头像 发表于 03-07 08:26 1128次阅读
    <b class='flag-5'>Wi-Fi</b>的诞生与发展

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别  Wi-Fi是一种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的发展和互联网的普及,Wi-Fi也在不断演进和
    的头像 发表于 02-02 15:28 1107次阅读

    康普携手Wi-Fi联盟,RUCKUS Wi-Fi 7系列接入点成Wi-Fi

     康普高级副总裁兼网络、智能蜂窝和安全解决方案总裁Bart Giordano对此表示: “我们非常荣幸能与Wi-Fi Alliance形成长期合作伙伴关系,将我们的RUCKUS Wi-Fi 7 接入点平台作为Wi-Fi CERT
    的头像 发表于 01-23 14:10 700次阅读

    PSoC6 Wi-Fi示例无法调试FreeRTOS任务级代码怎么解决?

    你好, 我在 Ubuntu 18.04.6 中运行 MTB 3.1 GUI LTS 并为原型开发套件 (CY8CPROTO-062-4343W) 构建 PSoC6 示例。 在调试最新的 Wi-Fi
    发表于 01-22 07:50

    BT Wi-Fi模式是否可以通过ModustoolBox对套件进行编程来实现?

    想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型开发套件。 浏览文档我无法弄清楚如何在不同的 Wi-Fi 和蓝牙模式(电源模式、连接模式等)下配置套件。 在
    发表于 01-22 06:19

    如何设置房间的独立Wi-Fi

    第1步:断开主/从Wi-Fi同步 登录主设备web界面,在如下界面中,将“选择扩展本设备的SSID连接”中的勾选取消,然后点击应用。
    的头像 发表于 12-22 11:15 1670次阅读
    如何设置房间的独立<b class='flag-5'>Wi-Fi</b>?

    Wi-Fi 6和Wi-Fi 5之间有哪些区别呢?

    Wi-Fi 6和Wi-Fi 5之间有哪些区别呢? Wi-Fi 6和Wi-Fi 5是无线局域网标准的两个版本,它们之间存在很多区别。Wi-Fi
    的头像 发表于 12-09 16:09 2191次阅读

    什么是2.4 GHz Wi-Fi? 如何提升2.4 GHz Wi-Fi的性能?

    什么是2.4 GHz Wi-Fi?2.4 GHz Wi-Fi的优势 2.4 GHz Wi-Fi的劣势 如何提升2.4 GHz Wi-Fi的性能?2.4 GHz和5 GHz
    的头像 发表于 11-27 17:09 2291次阅读