[讨论] CC3200的httpserver例子上添加out_of_box例子demos-energy温度显示功能

蓝雨夜   2015-5-25 15:36 楼主
CC3200的httpserver例子上添加out_of_box例子demos-energy温度显示功能



原来httpserver例子中只有控制板上LED的功能

现在想移植out_of_box例子demos-energy页的温度显示功能到httpserver例子中




想实现的效果:

2.PNG



这个这里的温度一直都没读上来,一直显示“reloading





程序中添加了一个GET指令了


        case SL_NETAPP_HTTPGETTOKENVALUE_EVENT:

        {

          unsigned char status, *ptr;



          ptr = pSlHttpServerResponse->ResponseData.token_value.data;

          pSlHttpServerResponse->ResponseData.token_value.len = 0;

          if(memcmp(pSlHttpServerEvent->EventData.httpTokenName.data,

                                     GET_token_TEMP, strlen((const char *)GET_token_TEMP)) == 0)//__SL_G_UTP

                  {

                                 float fCurrentTemp=0.0+k;

                                 //TMP006DrvGetTemp(&fCurrentTemp);//读温度

                                 char cTemp = (char)fCurrentTemp;

                                 short sTempLen = itoa(cTemp,(char*)ptr);

                                 ptr[sTempLen++] = ' ';

                                 ptr[sTempLen] = 'F';

                                 pSlHttpServerResponse->ResponseData.token_value.len += sTempLen;



                  }//------------------------------------------------------------


static unsigned char GET_token_TEMP[]  = "__SL_G_UTP"

回复评论 (41)

2推荐 freebsder 

@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 管理员,我不谦虚,这篇干货回复没有异议的话是否应该加分呢? 多加点啊,加满 本帖最后由 freebsder 于 2015-5-28 02:04 编辑
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-28 00:42
相关HTML文件


    html.rar (2015-5-25 15:50 上传)

    44.35 KB, 下载次数: 52

点赞  2015-5-25 15:50
您确定他是读的get数据吗?
个人签名111
点赞  2015-5-25 16:58
请问,HTML文件是如何加入到项目里的?
虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2015-5-25 17:04


            if(memcmp(pSlHttpServerEvent->EventData.httpTokenName.data,
                    GET_token_TEMP, strlen((const char *)GET_token_TEMP)) == 0)
            {
                float fCurrentTemp;
                TMP006DrvGetTemp(&fCurrentTemp);
                char cTemp = (char)fCurrentTemp;
                short sTempLen = itoa(cTemp,(char*)ptr);
                ptr[sTempLen++] = ' ';
                ptr[sTempLen] = 'F';
                pSlHttpServerResponse->ResponseData.token_value.len += sTempLen;

            }


这样是get吗?
点赞  2015-5-25 19:37


uniflash 烧写进去
点赞  2015-5-25 19:38
QQ图片20150525235515.jpg 你的代码用的oob的,读温度这点没问题。 本帖最后由 freebsder 于 2015-5-25 23:55 编辑
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-25 23:39


啊!CC3200直接用OOB的程序烧,可以读到温度?
点赞  2015-5-26 07:35
后来我看到你应该是用的RF/无线版里面一个人放出来的样章吧。从样章来看没什么价值,就代码伦代码。http server最核心的是http解析过程,哪怕是流程,各个callback的调用时机,各个struct的生命周期,这个不说清楚很难开发好一个不那么helloworld 的 server端应用。browser端代码也乱七八糟,初学的可能更乱。 本帖最后由 freebsder 于 2015-5-26 12:32 编辑
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-26 12:31
请问版主:还没学会走,能跑起来吗? 本帖最后由 gsjzbj 于 2015-5-26 13:05 编辑
点赞  2015-5-26 13:03


那没办法 !试试 !

没有一个能指导下的人
点赞  2015-5-26 13:06
把现有代码彻底搞明白,掌握核心语句,然后根据要求进行修改。
点赞  2015-5-26 13:13


那你指导下,任何在httpserver例子上添加一个 不断读取板上的温度显示在网页上?
点赞  2015-5-26 13:18

不用问版主,没讲清楚就是没讲清楚,讲的乱就是讲的乱。
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-26 13:23
引用: freebsder 发表于 2015-5-26 13:23
不用问版主,没讲清楚就是没讲清楚,讲的乱就是讲的乱。

你牛,你现在会跑了,忘了当初学走路时摔的跤了。
点赞  2015-5-26 16:48
引用: gsjzbj 发表于 2015-5-26 16:48
你牛,你现在会跑了,忘了当初学走路时摔的跤了。

不是牛不牛也不是跑不跑,而是教的人就不该乱七八糟教。
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-26 16:54
那请版主来个不乱七八糟的教法俺学习学习
点赞  2015-5-26 16:59
引用: gsjzbj 发表于 2015-5-26 16:48
你牛,你现在会跑了,忘了当初学走路时摔的跤了。

真是,说点对卖书不利的话(而且还没乱说)跟摸了猴子屁股似得。
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-26 17:00
引用: gsjzbj 发表于 2015-5-26 16:59
那请版主来个不乱七八糟的教法俺学习学习

你给我钱了?我凭什么教一个教书育人的老师?
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-5-26 17:00
引用: freebsder 发表于 2015-5-26 17:00
你给我钱了?我凭什么教一个教书育人的老师?

别生气啊!

你那里显示“75”,CC3200增加了读温度__sl_g吗?
点赞  2015-5-27 08:35
123下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复