精华内容
下载资源
问答
  • STM32 WEBSERVER源码

    2017-07-09 12:26:17
    STM32 WEBSERVER源码,正点原子探索者开发板
  • STM32 WebServer

    2021-03-11 11:20:50
    3.11 链接: 用单片机实现HTTP网页服务器功能(详细教程). 只完成了这个博客的进度。 立个Flag,鼓励自己完成个漂亮的web

    3.11

    链接: 用单片机实现HTTP网页服务器功能(详细教程).
    只完成了这个博客的进度。
    立个Flag,鼓励自己完成个漂亮的web。

    展开全文
  • STM32实现Web服务器

    2017-12-26 10:35:21
    有例程及详细的讲解,适用于初学嵌入式WebServer的同学下载。
  • stm32 web服务器实现

    千次阅读 2019-10-17 15:27:57
    最在做stm32 web服务器的东西,忙了一段时间终于弄完了,把这几天关于stm32服务器的工作记录一下。 刚接到这个任务的时候,不知道怎么下手,网上资料似乎不是很多,于是在下载了一个官方demo测试了一下,看了一下...

     

    最在做stm32 web服务器的东西,忙了一段时间终于弄完了,把这几天关于stm32服务器的工作记录一下。

    刚接到这个任务的时候,不知道怎么下手,网上资料似乎不是很多,于是在下载了一个官方demo测试了一下,看了一下代码,不是很懂,于是继续百度找资料,找到一个比较有用的网页,以下是链接: 最近在做stm32 web服务器的东西,忙了一段时间终于弄完了,把这几天关于stm32服务器的工作记录一下。刚接到这个任务的时候,不知道怎么下手,网上资料似乎不是很多,于是在下载了一个官方demo测试了一下,看了一下代码,不是很懂,于是继续百度找资料,找到一个比较有用的网页,以下是链接:http://wenku.baidu.com/link?url=SfAxsft0bXxvaoeDtSGCLlnB3yQNhofQfLwfO9l-aZmTsVy2haookGZI6VP4WGlnr26Fx_BxakWV3oMQbKl54FQyssKDy2fRxI5JnIXaPgK

    其实,stm32 web服务器与pc网页的交互一般是以表单的方式,就两个接口,cgi和ssi。这两个东西我的理解是这样的,cgi 就是pc网页向stm32 web服务下发信息的接口,比如我们有这样的一个网页:


    <form method='get' action='config.cgi'>

    <p><label for='ip'>ip:</label><input type='text' name='ip' value="<!--#ip-->" maxlength="1" /></p>

    <p><label for='port'>port:</label><input type='text' name='port' value="<!--#port-->" maxlength="6" />

    </p><p><input type='submit' value='保存' /></p>

    </form>


    如果看不懂这个网页的话,就百度一下吧,把上面东西复制到Macromedia Dreamweaver 8软件上就能看到是什么页面,上面在form就是表单,在<form></form>里面的内容就是表单的内容,里面有两个输入框,和一个保存按钮,当我们点出保存的时候就会在web服务器里触发,config.cgi的接口,关于web服务器的内容,后面再说,然后会把这个表单里的内容下发到服务器里,比如会把上面ip和port输入框中的数据发到web服务器里,web服务器就能获得想要的数据。接下来说一下ssi,我们可以拿个网络抓包软件观察一下,pc网页的web服务器的通信过程,其实也就是pc发送一个请求,然后web服务器返回一组数据,这组数据就是整个网页的内容。ssi的工作就是在这组返回的数据中嵌入一个要发送加pc端的数据在里面,比如刚才那个表单网页数据,我们要显示一些数据到ip输入框中,怎么办呢?在没有ssi接口的时候可以看到,

    <p><labelfor='ip'>ip:</label><input type='text' name='ip' value="<!--#ip-->" maxlength="1" /></p> ,

    有ssi接口时候,我们就可以利用ssi接口改变返回的内容,比如:

    <p><labelfor='ip'>ip:</label><input type='text' name='ip' value="<!--#ip-->192.168.1.1" maxlength="1" /></p>,

    可以看到 "<!--#ip-->192.168.1.1" 这个地方是不相同的,这时返回ip输入框是带着数据的,这个数据将显示在ip输入框内。 

    接下来分析一下代码,首先看一下stm32官方http web 包里的文件

    fsdata.c,fsdata.h,是网页转换成的数组, 

    fs.c, fs.h是操作fsdata.c里面数据的一些读写函数

    httpd.c, httpd.h函数是真正实现web服务器的文件

    httpd_cgi_ssi.c, httpd_cgi_ssi.h 就是刚才提到的cgi, ssi接口,

    一般我们只需要改动httpd_cgi_ssi.c, fsdata.c(这个文件是makefsfile.exe生成的),

    makefsfile里面又有一些什么文件呢

    fs文件夹是所有的网页,fsdata.c 是用makefsfile.exe转换得到的

    下面分析一下代码

    1. void httpd_init(void)

    {
      LWIP_DEBUGF(HTTPD_DEBUG, ("httpd_init\n"));
    #if LWIP_HTTPD_SSI
      httpd_ssi_init(); //ssi接口初始化
    #endif
    #if LWIP_HTTPD_CGI
      httpd_cgi_init(); //cgi接口初始化
    #endif
      httpd_init_addr(IP_ADDR_ANY);  //http web 相关初始化
    }

    2.ssi接口 要注意的一点就是 有ssi接口的网页要以 shtml为后缀

    char const* TAGS[]={  //这里定义了ssi标签,

        "ip",  //ip地址 对应网页里的<!--#ip-->
        "sp",  //服务器端口
    };

    u16_t DeviceSSI_Handler(int iIndex, char *pcInsert, int iInsertLen)
    {
        int len = 0;
        char buff[16];


        memset(buff,0,sizeof(buff));
        switch(iIndex)
        {
            case 0: //这个index是在数组中的位置
                sprintf(buff,"%s",“192.168.1.1”);
                len = strlen(buff);

                memcpy(pcInsert,buff,len);// 这里是拷贝填充在ip标签里的内容

                break;
            case 1:

        。。。。。。

        break;

        }

        return len;

    }

    3.cgi接口

    //cgi接口定义

    tCGI CGI_TAB[]={
        {"/login.cgi", LOGIN_CGI_Handler},
        {"/saveNet.cgi", SAVE_NET_Handler} /*这里的cginame要和网页表单里的action相同<form method='get' action='config.cgi'>*/
    };

    const char * SAVE_NET_Handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
    {
        uint32_t i=0;

        for (i=0; i<iNumParams/*参数数量*/; i++)
        {
            if(strcmp(pcParam[i]/*参数名字,与网页里控件的name相同name='ip'*/,"ip") == 0) //设备ip
            {

        printf("ip is : %s \r\n",pcValue[i]/*控件的值*/);
            }
            else if(strcmp(pcParam[i],"port") == 0)  
            {

        ...

    }

         ......

    }

    cgi和ssi大概就这些内容要改的,

    4.打开网页里是哪一个为首页呢?在httpd.c里有一个数据

    //这里设置首页显示的html ,所以首页就是login
    const default_filename g_psDefaultFilenames[] = {
      {"/login.shtml", true },
      {"/login.ssi", true },
      {"/login.shtm", true },
      {"/login.html", false },
      {"/login.htm", false }
    };

    5.我们发送ssi标签时会把标签一起发上去,这样在编辑控件里是会把标签一起显示的,比如value="<!--ip-->192.168.1.1",这不是我们想要的,怎么让它不发送标签呢,

    把httpd.c里的定义  #define LWIP_HTTPD_SSI_INCLUDE_TAG           1  //改为0就不发送标签

    6.还有一些比较常用的宏定义

    #define LWIP_HTTPD_MAX_CGI_PARAMETERS 16    //cgi数量定义

    #define LWIP_HTTPD_MAX_TAG_NAME_LEN 8       //定义tag标签长度定义

    #define LWIP_HTTPD_MAX_TAG_INSERT_LEN 192   //定义返回tag内容长度
    ————————————————
    版权声明:本文为CSDN博主「hujia414」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/hujia414/article/details/53898471

    展开全文
  • stm32搭建web服务器

    2016-12-06 16:43:06
    stm32搭建web服务器,修改于官方移植lwip搭建的web服务器 硬件基础:stm32f407 + lan9303
  • 基于Stm32的嵌入式WebServer例程,注释齐全,简单易懂,适合初学者
  • 此工程MCU采用STM32F407芯片,网络芯片采用的是LAN8720A,主要功能为:通过页面浏览器客户端完成对STM32相关的运行参数进行读取和修改。网络部分加入AJAX技术,使读取设备参数时页面浏览器非整页刷新,而是部分...
  • STM32 lwip建立web服务器,基于STM32的串口服务器web功能实现
  • 本文档只要介绍在stm32上实现以太网控制LED的实验 ,比较简单。我也是参考其他人的,希望给大家一点帮助
  • 初始IP地址是192.168.1.111,通过对PB7的操作来实现缺省值和flash之间的切换,设置好的参数写入flash,w5500接的是SPI2,单片机是stm32f103c8t6。 第一个网页没有任何修改权限,只有输入登录密码(初始密码:123456 ...
  • 此工程MCU采用STM32F407芯片,网络芯片采用的是LAN8720A,主要功能为:通过页面浏览器客户端完成对STM32相关的运行参数进行读取和修改。网络部分加入AJAX技术,使读取设备参数时页面浏览器非整页刷新,而是部分...
  • STM32+LWIP+WEB_SSI_CGI

    热门讨论 2015-03-07 19:06:55
    STM32+LWIP+WEB_SSI_CGI能用的网络编程
  • 本程序根据原子哥STM32H7开发板源码《网络实验15 NETCONN_WEBserver实验(UCOSII版本)》改编,且包含了修改后的网页文件,原子哥的程序是将网页文件转换成了程序的一部分,该方式不方便网页的制作与调试,而且测试...
  • stm32f107 web server

    2017-04-18 22:19:25
    基于stm32f107 web服务器开发源码;其实现方式采用html+cgi+ssi技术,通过makefsdata将html文件转换成.c文件;
  • 简单的web实现,在我以前的TCP修改的
  • 本DEMO为工作项目的部分内容,STM32f107 作为TCP客户端访问WEB站点 ,使用http/1.1格式上传并获取WEB数据。附件WORD文档为项目的接口格式说明。 应用层:HTTP数据格式解析 MAX层:stm32f107 传输层:LWIP协议栈
  • STM32云端固件升级Demo,支持MQTT,HTTP协议, STM32F769DK
  • 基于STM32的嵌入式web服务器的设计 个人感觉还可以,还不错的。。。。。。。
  • STM32 webserver 下拉列表

    千次阅读 2017-12-31 11:20:19
    例程实在硬石开发板例程上面改的,加了串口的配置...WIZ550web Demopage body {text-align:left; background-color:#c0deed;font-family:Verdana;} #main {margin-right:auto;margin-left:auto;margin-top:30px

    例程实在硬石开发板例程上面改的,加了串口的配置界面。




    <!DOCTYPE html> 
    <html> 
    <head> 
    <title>WIZ550web Demopage</title> 
    <meta http-equiv='Content-Type' content='text/html; charset=GB2312'/> 
    <style type='text/css'> 
    body {text-align:left; background-color:#c0deed;font-family:Verdana;} 
    #main {margin-right:auto;margin-left:auto;margin-top:30px;} 
    label{display:inline-block;width:150px;} 
    .usual label{margin-right:-50px;margin-left:auto;}
    #main h3{color:#66b3ff; text-decoration:underline;} 
    
    </style> 
    <script> 
    function $(id) { return document.getElementById(id); }; 
    function settingsCallback(o) { 
    if ($('txtVer')) $('txtVer').value = o.ver; 
    if ($('txtMac')) $('txtMac').value = o.mac; 
    if ($('txtIp')) $('txtIp').value = o.ip; 
    if ($('txtSub')) $('txtSub').value = o.sub; 
    if ($('txtGw')) $('txtGw').value = o.gw; 
    if ($('selBaud1')) $('selBaud1').value = o.selBaud1; 
    if ($('selDb1')) $('selDb1').value = o.selDb1; 
    if ($('selParity1')) $('selParity1').value = o.selParity1; 
    if ($('selFlow1')) $('selFlow1').value = o.selFlow1; 
    }; 
    </script> 
    </head> 
    <body> 
    <div id='main'> 
    <div style='background:snow; display:block;padding:10px 20px;'> 
    <h3>Device Information</h3> 
    <form id='frmSetting' method='POST' action='config.cgi'> 
    <p><label for='txtVer'>Firmware version:</label><input type='text' id='txtVer' name='ver' size='16' disabled='disabled' /></p> 
    <p><label for='txtMac'>MAC address:</label><input type='text' id='txtMac' name='mac' size='16' disabled='disabled' /></p> 
    <p><label for='txtIp'>Device IP address:</label><input type='text' id='txtIp' name='ip' size='16' /></p> 
    <p><label for='txtSub'>Subnet mask:</label><input type='text' id='txtSub' name='sub' size='16' /></p> 
    <p><label for='txtGw'>Gateway:</label><input type='text' id='txtGw' name='gw' size='16' /></p> 
    <div class='usual'>				 	 
    					 <label for='selBaud1'>USART1 Baudrate:</label> 
    					 <select id='selBaud1' name='baudrate'> 						 
    						 <option value='0'>600</option>
    						 <option value='1'>1200</option>
    						 <option value='2'>2400</option> 
    						 <option value='3'>4800</option> 
    						 <option value='4'>9600</option> 
    						 <option value='5'>19200</option> 
    						 <option value='6'>38400</option> 
    						 <option value='7'>57600</option> 
    						 <option value='8'>115200</option>
    						 <option value='9'>230400</option>
    					 </select>
    					 <label for='selDb1'>Data bit:</label> 
    					 <select id='selDb1' name='databit'> 						 
    						 <option value='0'>8</option>
    						 <option value='1'>9</option>
    					 </select> 
    					 <label for='selParity1'>Parity:</label> 
    					 <select id='selParity1' name='parity'> 
    						 <option value='0'>NONE</option> 
    						 <option value='1'>ODD</option> 
    						 <option value='2'>EVEN</option> 
    					 </select> 
    					 <label for='selStop1'>Stop bit:</label> 
    					 <select id='selStop1' name='stopbit'> 
    					 	<option>1</option> 
    					 	<option>2</option> 
    					 </select> 
    					 <label for='selFlow1'>Flow control:</label> 
    					 <select id='selFlow1' name='flowcontrol'> 
    						 <option value='0'>NONE</option> 
    						 <option value='1'>CTS/RTS</option>
    						 <option value='2'>RS-422</option> 
    						 <option value='3'>RS-485</option>  
    					 </select> 
    </div>
    <p><input type='submit' value='Save Settings and Reboot' /></p> 
    </form> 
    </div> 
    </div> 
    <div style='margin:5px 5px;'> 
    &copy;Copyright www.ing10bbs.com 
    </div> 
    <script type='text/javascript' src='w5500.js'></script> 
    </body> 
    </html>
    
    网页回调信息
    /**
    *@brief		将基本的配置信息设置到json_callback
    *@param		无
    *@return	无
    */
    static void make_basic_config_setting_json_callback(int8* buf, CONFIG_MSG config_msg)
    {
      sprintf(buf,"settingsCallback({\"ver\":\"%d.%d\",\
                    \"mac\":\"%02X:%02X:%02X:%02X:%02X:%02X\",\
                    \"ip\":\"%d.%d.%d.%d\",\
    	              \"gw\":\"%d.%d.%d.%d\",\
                    \"sub\":\"%d.%d.%d.%d\",\
    	              \"selBaud1\":\"%d\", \"selDb1\":\"%d\", \"selParity1\":\"%d\", \"selFlow1\":\"%d\",\
    	              });",config_msg.sw_ver[0],config_msg.sw_ver[1],
                    config_msg.mac[0],config_msg.mac[1],config_msg.mac[2],config_msg.mac[3],config_msg.mac[4],config_msg.mac[5],
                    config_msg.lip[0],config_msg.lip[1],config_msg.lip[2],config_msg.lip[3],
                    config_msg.gw[0],config_msg.gw[1],config_msg.gw[2],config_msg.gw[3],
                    config_msg.sub[0],config_msg.sub[1],config_msg.sub[2],config_msg.sub[3],
    								4,0,0,0
                    );
    	printf("%s",buf);
    }


    展开全文
  • STM32 IAP 固件升级

    2017-12-17 20:32:08
    调试测试一切OK,该资源在淘宝上被盗版售卖,对此行为深恶痛觉,请不要在淘宝上进行购买,坑你没商量,本源码已经测试调试OK,请放心下载使用
  • STM32F407 WEB服务器 开发
  • 基于STM32 HAL和FreeRTOS的HTTP Web服务器 基于FreeRTOS的简单HTTP服务器以及适用于Nucleo-F746ZG板的STM32 HAL库。 使用LwIP Netconn API。 它包含两个HTML页面: 第一页(主页)是静态的,它提供了有关STM32F7和...
  • :return: :class:`Response ` object :rtype: requests.Response import requests# 指定urlurl = 'https://www.sogou.com/web'# 封装get请求参数prams = { 'query':'周杰伦', 'ie':'utf-8'}response = requests.get...

    Requests库的七个主要方法:

    cfdce7250637e2556e209daae536a740.png

    r = requests.get(url) :

    构造一个向服务器请求资源的Request对象(Request),并且get方法返回一个包含服务器资源的Response对象;

    requests.get函数的完整参数如下:

    requests.get(url, params = None, **kwargs)

    url: 拟获取页面的url链接

    params: url中额外参数,字典或字节流格式,可选

    **kwargs: 12个 访问的参数

    Requests库的2个重要的对象 RequestResponse对象(Response对象包含爬虫返回的所有内容)

    >>> import requests #导入requests库>>> r = requests.get("http://www.baidu.com") >>> print(r.status_code) #检测请求的状态码,200表示请求成功200>>> type(r)>>> r.headers

    Response对象的属性:

    c7767332d0071f5ea4bbd2158a404ca4.png

    Response对象的处理流程如下图示:

    7a11e8305ad9d0da663352b9c522c896.png

    理解Response的编码:

    17a6024a61aac4810748d4622c08a209.png

    r.encoding:如果header中不存在charset,则认为编码为'ISO-8859-1'

    r.apparent_encoding: 根据网页内容分析出的编码方式

    需求:获取京东页面数据

    import requestsresp=requests.get('http:www.jd.com/')print(resp)

    requests模块如何处理携带参数的get请求,返回携带参数的请求:

    需求:指定一个词条,获取搜狗搜索结果所对应的页面数据

    之前urllib模块处理url上参数有中文的需要处理编码,requests会自动处理url编码

    发起带参数的get请求

    params可以是传字典或者列表

    def get(url, params=None, **kwargs):  r"""Sends a GET request.  :param url: URL for the new :class:`Request` object.  :param params: (optional) Dictionary, list of tuples or bytes to send    in the body of the :class:`Request`.  :param **kwargs: Optional arguments that ``request`` takes.  :return: :class:`Response ` object  :rtype: requests.Response
    import requests# 指定urlurl = 'https://www.sogou.com/web'# 封装get请求参数prams = {  'query':'周杰伦',  'ie':'utf-8'}response = requests.get(url=url,params=prams)page_text = response.textwith open("周杰伦.html","w",encoding="utf-8") as f:  f.write(page_text)  f.close()print("ok")

    利用requests模块自定义请求头信息,并且发起带参数的get请求

    get方法有个headers参数 把请求头信息的字典赋给headers参数

    import requests# 指定urlurl = 'https://www.sogou.com/web'# 封装get请求参数prams = {  'query':'周杰伦',  'ie':'utf-8'}# 自定义请求头信息headers={  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',  }response = requests.get(url=url,params=prams,headers=headers)page_text = response.textwith open("周杰伦.html","w",encoding="utf-8") as f:  f.write(page_text)  f.close()print("ok")
    展开全文
  • STMF207+DP83848+LWIP+WEB服务器+热拔插,希望对大家有所帮助,谢谢!
  • stm32控制esp8266访问web

    2015-06-14 18:46:11
    stm32控制esp8266访问web服务器,数据格式为json,包含了json解析,访问流程等等,
  • 关于STM32web服务器的一点点认识

    千次阅读 2012-09-18 00:02:58
    这几天都在看那个STM32web例程,这个例程的web服务器可以说是keil自带的。刚开始一直不懂这些网页上的文件都放在哪里。后来才知道是FCARM这个软件把本地计算机上的HTML代码和图片文件都一起放在了WEB.C这个文件里...
  • STM32移植lwip之建立web服务器

    万次阅读 多人点赞 2016-12-03 09:32:54
    本篇目标:在之前能ping通pc机的工程基础上搭建web服务器,...搭建工程:最终搭建好的web服务器工程(STM32搭建web服务器工程) 调试工具:用来调试tcp连接下的数据接收(网络调试助手) 测试浏览器:这里使用的是Ch
  • STM32 IAP程序升级源码

    2013-10-05 16:36:37
    使用IAP技术实现STM32单片机程序升级

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,714
精华内容 2,685
关键字:

stm32web