返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 3003|回复: 1
打印 上一主题 下一主题

麦步手表开箱与精简Web request Demo

[复制链接]

1

主题

5

帖子

100

麦力

精华
0
阅读权限
20
在线时间
4 小时

跳转到指定楼层
楼主
发表于 2016-7-7 21:26:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

6月28号拿到的手表,碰巧遇上了期末考试的考试周,一直没时间研究,今天考完试便立即开始研究。我现在分享一下今天的研究成果还有使用体验。

手表非常的漂亮,先给大家分享一下我刚拿到手表的开箱图。










25号到现在7号9天多的时间,电池电量还有66%,续航能力也非常的给力!


在官方下载的Demo里,Web request的Demo对一些初学者来说会比较难理解,一下子就吓到了一些小白。我现在给大家解析我自己理解的Web request,同时还稍微精简了一下程序,让初学者更好理解,如果有不正确的地方,请大家指出,谢谢谅解。


很多朋友想让自己的手表连接上自己的Arduino或者单片机,Web request是跟自己的单片机通信的方式之一。


HTTP是一个基于TCP的文本传输协议,我们在地址栏里面输入http://a.b.c.d/的时候,实际上是向a.b.c.d这个ip发送一个HTTP GET信息,这个信息如下(chrome浏览器)

GET / HTTP/1.1

Host: 192.168.1.107

Connection: keep-alive

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93     Safari/537.36

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8


后面的一串东西只是一些附加信息,而最重要的是GET/HTTP/1.1。

假如我们发送的是http://a.b.c.d/Hello

收到的将会是GET /Hello HTTP/1.1

所以你现在大概理解是怎么通过http来发送你的信息了吧?

而在我的Demo里,发送的信息为如下代码。

  1. /*Web request地址*/     
  2. #define SENSOR_WEB "http://172.27.35.1:8090/Hello" //引号内的地址根据你的实际情况更改
复制代码

收到的是如下的消息



再看下面这段代码

  1. void sensor_request_web()
  2. {
  3.         /*将你的url请求地址复制到url数组中*/
  4.         char url[200] = "";        
  5.         sprintf(url, "%s", SENSOR_WEB);               

  6.         /*拼接过滤参数,即只接受和过滤参数匹配的返回值*/
  7.         char param[20] = "";
  8.         sprintf(param, "%s,%s", "main","temp");

  9.         /*发送一次*/
  10.         g_comm_id_web = maibu_comm_request_web(url, param, 0);/*sync_time实际最小有效值为5s*/
  11. }
复制代码

当你url请求后,一般收到会json数据,其中包含很多信息,而过滤参数的作用则是将你需要的信息过滤出来给你。

值得注意的是maibu_comm_request_web这条语句中的sync_time这个参数,当sync_time大于0时,实际的最小有效值为5s,意思是你最快也只能每5s请求一次url,但是在我的使用过程中,很多时候要更久才能再请求一次,所以对发送数据量较大或者数度有要求的同学就来问题了。这个问题我还没想到解决办法。

  1. void weather_comm_result_callback(enum ECommResult result, uint32_t comm_id, void *context)
  2. {

  3.         /*如果上一次请求WEB通讯失败,并且通讯ID相同,则重新发送*/
  4.         if ((result == ECommResultFail) && (comm_id == g_comm_id_web))
  5.         {
  6.                 sensor_request_web();
  7.         }

  8. }
复制代码

以上代码的作用则是当发送失败后,起到重新发送的作用,还是有一定几率会发送失败的。


将以上代码应用到你的手表中,可以跟你的单片机通信还是很有意思的。

Web request Demo可以在下面下载。


Web request Demo.rar

1.34 KB, 下载次数: 353

Web request Demo

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信 WeiboWeibo
收藏收藏 分享分享 顶1 踩

214

主题

2514

帖子

3万

麦力

麦步团队

精华
1
阅读权限
200
在线时间
812 小时

麦步手表用户麦步工业测评协会

沙发
发表于 2016-7-11 10:08:14 | 只看该作者
技术帖,点赞
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-5-6 08:34 , Processed in 0.087713 second(s), 27 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

快速回复 返回顶部 返回列表