freebsder 发表于 2015-5-28 00:42
@chenyy 你说的很对,一个谦虚的人在别人指出你可能存在的不足的时候,不是第一时间问为什么这样说,不足在哪里,而是自以为自己为初学者考虑跑来“请问版主:还没学会走,能跑起来吗?”吗?
既然大家都能看,我就说我的理由 @gsjzbj:
1、httpserver的核心是引擎,文章里弄一堆“开始->初始化开发版->引脚复用配置->熄灭LED->...." 好吧,核心不说,告诉初学者httpserver开始熄灭LED创建SLS任务了!我还是那句话,只说样章给出的内容,仅仅是就代码论代码,作者自己可能都没搞清楚几个问题:http server最核心的是http解析过程,生命周期和状态切换(引发的回调),这芯片是怎么处理的?__SL_P_等东西什么时候处理的?怎么处理的?各个callback的调用时机是怎么样的,这些状态可以怎么使用,各个struct的生命周期等等。
2、>>>"浏览 CC3200 的默认主页 mysimplelink.net,并用网页与 CC3200 通信", “网页接收到5个接入点名称后,将它们显示在网页中供用户选择”等等吧不一一列举.
基本常识错了知道吗?知道html渲染吗?谁渲染的?网页吗?知道的话会写网页接受数据,用网页通讯?你模糊的地方可以不写,但乱写,就是你乱教。
3、>>>"设备接收到 HTTP 请求发送的数据后,产生 SL_NETAPP_HTTPPOSTTOKENVALUE_
EVENT 事件,并调用 SimpleLinkHttpServerCallback()进行处理"
>>>设备接收到 GET 令牌后产生 SL_NETAPP_HTTPGETTOKENVALUE_ EVENT(HTTP GET 令牌数据事件)
知道服务端变量吗?token在这里不是通讯里令牌的意思,自然就不是设备接受令牌的意思,http的基础是文本解析,token在这里是指文本解析中的字面量literal,用来做dynamic html的,好吧,产生这个事件是因为http引擎根据固定模式(__SL_P这种,因为CC3200毕竟是嵌入式系统,模式固定简化服务的处理,这也是为什么手册里有专门一小结来告诉你这种变量该怎么定义)识别出这是一个服务端变量,而这个服务端变量又不是系统定义的内部变量,它自己无法告诉你你要的数据,需要人工参与,所以整了HTTPGETTOKENVALUE来让你添数据,这也是我前面说的http引擎为什么需要说,哪怕简单的说的原因。你模糊的地方可以不写,但乱写,就是你乱教。
4、>>>当在手机或笔记本电脑上打开网页 profiles_config.html 时,网页依次发出用户 GET 令牌“__SL_G_US1~5”。
这是最基本的常识错误。浏览器首先用http协议请求profiles_config.html这个资源,服务端(也就是cc3200里面的http server)在rom或flash里找到这个资源。然后服务器做文本解析,类似C编译器的第一个步骤,一个token一个token的解析,寻找上面说的固定格式,比如__SL_G_US1~5,对所有找到的服务端变量(固定格式)进行变量替换(当然不是简单的变量替换,这里借用这个词形象化),系统定义的当然系统就处理了,用户定义的如__SL_G_US1~5,当然它找不到它的value值,这时候用HTTPGETTOKENVALUE来让你添数据,这也是为什么系统定义的服务端变量不会触发HTTPGETTOKENVALUE这个回调的原因,填好之后在资源中__SL_G_US1~5占位符这里做文本替换,替换成你给的值,最后打包成一个html静态内容(也可能是字符流形式)再按字符填充到response body返回浏览器。为什么要把数据转成文本添也是这个原因:html的基础是文本。
好了,那么是“网页依次发出用户 GET 令牌 “__SL_G_US1~5”“呢?还是服务器填充__SL_G_US1~5作为html响应返回给浏览器呢?你模糊的地方可以不写,但乱写,就是你乱教。
5、httprequest 10年前这是清晰的牛逼的,10后的今天这就是乱七八糟的,你可以不会也可以不写,但不要引导初学者一个过时的东西,应用技术过时了能干嘛?真是为初学者考虑?
6、以上http解析的框架过程很复杂吗?以上描述也就1,200个字吧,有谁看不懂的?所以别用初学者做借口,也不要把读者定位成看不懂的傻瓜。
7、@chenyy 管理员,我不谦虚,这篇干货回复没有异议的话是否应该加分呢? 多加点啊,加满
我对网页这一块不了解,就是看你说的这个,意识是不是网页发送一个请求HTTP GET 什么的,然后服务器端从里面解析文本,获取到类似_SL_G之类的字符串,与之相匹配,换成传感器的值再打包发送给浏览器显示?我不知道我说的对不对。。毕竟不聪明理解能力差