有调过网口的给点建议吧,谢谢了。

[复制链接]
1535|3
 楼主| jxmzzr 发表于 2013-11-8 18:23 | 显示全部楼层 |阅读模式
pi, IO, gp, GPIO, se
最近在学习以太网,看了好几个开发板的例子,上面都是通过网页来控制LED,我只关心它怎么处理接收的数据的,但是看了程序有点看不懂,麻烦懂的指点一下,不胜感激。程序如下:      
     cmd = analyse_get_url((char *) &(buf[dat_p + 5]));
            // for possible status codes see:
            
            if (cmd ==(u8)-1)
            {
               plen = fill_tcp_data_p(buf, 0, PSTR("HTTP/1.0 401 Unauthorized\r\nContent-Type: text/html\r\n\r\n<h1>401 Unauthorized</h1>"));
               goto SENDTCP;
            }
            if (cmd == 1)
            {
               PC8 = 0; PC9 = 0; PC10 = 0; PC11 = 0;
      GPIO_SetBits(GPIOD,GPIO_Pin_8);
      GPIO_SetBits(GPIOD,GPIO_Pin_9);
      GPIO_SetBits(GPIOD,GPIO_Pin_10);
      GPIO_SetBits(GPIOD,GPIO_Pin_11);
               i = 1;
            }
            if (cmd == 0)
            {
               //LED1OFF();
               PC8 = 1; PC9 = 1; PC10 = 1; PC11 = 1;
      GPIO_ResetBits(GPIOD,GPIO_Pin_8);
      GPIO_ResetBits(GPIOD,GPIO_Pin_9);
      GPIO_ResetBits(GPIOD,GPIO_Pin_10);
      GPIO_ResetBits(GPIOD,GPIO_Pin_11);
               i = 0;
            }
// takes a string of the form password/commandNumber and analyse it
// return values: -1 invalid password, otherwise command number
//                -2 no command given but password valid
u8 analyse_get_url(char* str)//判断字符串与密码是否相同,是否符合规范
{
   u8 i = 0;
   if (verify_password(str) == 0)
   {
      return((u8)-1);
   }
   // find first "/"
   // passw not longer than 9 char:
   while (*str && i<10 && *str>',' && *str < '{')
   {
      if (*str == '/')
      {
         str++;
         break;
      }
      i++;
      str++;
   }
   if (*str <0x3a && *str> 0x2f)   //是否为0-9
   {
      // is a ASCII number, return it
      return(*str - 0x30);           //  0+0x30=‘0’
   }
   return((u8)-2);
}

其中在 cmd = analyse_get_url((char *) &(buf[dat_p + 5]))中为什么只判断buf中的dat_p+5这一位,当我别的位就是报头吗? analyse_get_url(char* str)函数应该是返回一个数字吧? 我要是想看看所有的数据怎么办,? 我也不知道我说的明不明白。有调过网口的给点建议吧,谢谢了。

aozima 发表于 2013-11-8 20:41 | 显示全部楼层
还是使用现成的协议栈吧。
网络转接 发表于 2013-11-9 13:49 | 显示全部楼层
https://bbs.21ic.com/icview-631144-1-1.html 这里的笔记看看吧  只要搞懂回调函数那些 就行了
拿起书本 发表于 2013-11-11 10:13 | 显示全部楼层
好好看一下simple_server.c,然后再看一下那个页中LED点亮和关闭时有什么不同,就明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部