【测评报告 Q】 -【CC3200-LAUNCHXL 开发板测评报告】开箱例程Out of Box测试之Home Appliances

CC3200 LaunchPad开箱例程Out of Box的demos-sprinkle部分实现了网页通过POST请求向CC3200的HTTP服务器提交数据的功能

demos-appliances主要实现了通过GET请求向CC3200的HTTP获取数据功能

获取的数据包括温度数据和加速度事件

温度数据显示在Water Temp的下边,加速度转换成对应的Running或Stopped字符显示在Dryer下边

当活动板子时Dryer下边显示Running,否则显示Stopped

查看demos-appliances.html代码看jquery在页面加载后执行了com.TI.tokenPoller函数,把一些数据传了进入

查看com.TI.tokenPoller.js文件看到com.TI.tokenPoller接收传入的参数options然后做了一些处理

首先定义了一个默认参数defaults,在没有传入参数时使用默认参数

然后将invervalRunning变量设置为false

接下来会启动一个定时器,刷新时间是200ms,通过判断和修改invervalRunning实现每200ms执行一次intervalFunc函数

设置invervalRunning的目的是防止执行 intervalFunc没有请求完成又连续请求,因为invervalRunning在只有在请求完成后才会被设置成false

刷新时间对应传入参数中refreshRate的数值

 

intervalFunc函数使用异步ajax的方式发送请求,请求的类型是GET,请求的页面是param_demos.html对应传入参数的paramPage数值,在请求完成后会执行done()内的函数,data是请求获得的数据

如果返回的状态不是success执行outputDefault函数,outputDefault是把页面的温度值显示成reloading表示正在获取数据

 

 

如果请求数据成功则执行outputSuccess函数,把获得的数据提取出来再显示在对应的位置

valueMap是一个数组,对应传入的参数,包括paramId、outputSuccess和outputDefault函数代码

paramId为Device_Temperature和Device_Accelerometer,对应温度和加速度

 

再来看看ajax请求的param_demos.html页面代码

请求成功后的数据就像下边这样可以看到__SL_G_UTP被转换成了当前温度

__SL_G_UAC被转换成了加速度计算后的Running或Stopped字符串

CC3200 Out Of Box代码里查找__SL_G_UTP 看到它被GET_token_TEMP定义

搜索GET_token_TEMP发现它在SimpleLinkHttpServerCallback函数里

SimpleLinkHttpServerCallback函数在pSlHttpServerEvent->Event==SL_NETAPP_HTTPGETTOKENVALUE_EVENT时

也就是请求类型为GET时判断pSlHttpServerEvent->EventData.httpTokenName.data是否为__SL_G_UTP

条件成立时读取温度数据,然后再将数据写回到pSlHttpServerResponse->ResponseData.token_value.data

实现了将静态页面param_demos.html中动态将__SL_G_UTP替换成当前温度的操作

原理和asp的<%=temp%>类似,http服务器在发现__SL_G开头的代码时会调用SimpleLinkHttpServerCallback函数让用户在后台处理对应的返回值

 

关于CC3200 GET Tokens的介绍可以在User's Guide的81页找到

 

温度获取完成后是获得加速度状态,当GET Token为__SL_G_UAC时执行ReadAccSensor函数

ReadAccSensor函数的功能是先读一次加速度数据,然后等待30ms后再读一次加速度数据

比较2次数据的绝对值是否超过了csAccThreshold=5,如果超过将g_ucDryerRunning设置为1,否则为0

执行完ReadAccSensor函数后判断g_ucDryerRunning是1时将__SL_G_UAC替换为Running,为0时替换为Stopped

 

至此Out of Box的大部分功能基本都摸清楚了,demos-security和demos-energy基本就是这2个例程和集成,都是通过POST向CC3200发送数据,通过GET向CC3200请求数据。

1 个回复