Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59493
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-12 08:37
个人简介

有事可以联系扣扣:577665300

文章分类

全部博文(11)

文章存档

2018年(1)

2017年(6)

2016年(4)

我的朋友

分类: C/C++

2017-03-31 22:52:38

微信硬件直连SDK
1. 概述
微信硬件直连SDK是微信硬件平台对外提供的,能够帮助设备自动登录微信硬件云的设备SDK库,目前仅支持Wi-Fi设备使用。
采用微信硬件直连SDK,能够降低智能设备接入微信硬件云的开发门槛。开发者只需要按照微信硬件云规范的格式生成数据并调用SDK接口上报数据,同时解析和处理服务器返回或推送下来的业务数据即可,设备应用层不需要处理登录、鉴权等网络逻辑。
2. 使用说明
目前设备直连SDK主要为硬件创建了上行和下行的数据通道。设备应用层不需要处理登录,鉴权等网络逻辑,只需要负责按微信硬件云平台的格式生成数据并调用SDK接口上报数据,同时解析和处理服务器返回或推送下来的业务数据即可。

3.该项目的功能是用微信实现远距离或者局域网控制三色灯。本教程使用的硬件方案是安信可得esp8266模块

硬件见图1:

                 

                                                图 1


废话了那么多赶紧开始看代码。

微信直连sdk主函数不是main,而是user_init(void),该sdk跑的是rtos系统。该函数在User_main.c中可以找到。 

void user_init(void)  

{

UART_SetPrintPort(0);

 //初始化串口

 uart_init(BIT_RATE_115200, BIT_RATE_115200);

  //设置wifi模块为station模式

 wifi_set_opmode(STATION_MODE);

    //系统任务初始化

 system_init_done_cb(init_done_cb);

}

station模式就是把wifi模块当做一个基站,去连接路由器。

 主要看任务初始化函数:system_init_done_cb(init_done_cb);简单理解就是调用了这个函数,系统就会回调

init_done_cb;

void init_done_cb(void)

{

 os_printf("\r\ncompile time:%s %s\r\n", __DATE__, __TIME__); //打印日期 忽略

 os_printf("SDK Version %s\r\n", system_get_sdk_version());  //打印版本号 忽略

 platform_init(); //重点关注

}

我们再定义到platform_init(); 

 
看一下这里:实际上就是创建了一个时间任务函数,10ms会检测一次airkiss_app_button_check函数


进入airkiss_app_button_check函数可以看到 长按3s按键可以进入 network_state_change(network_state_smart);即智能配置网络模式,在该模式下可以通过扫描型号唯一二维码给,wifi模块配置路由器的账号密码。从而让wifi模块能连接网络。

 case 2:

           if (KEY_TimeCount <= 3*1000/10) //3s

           {

                KEY_TimeCount++;

            }

            else

            {

                AIRKISS_APP_DEBUG("button long press!!!\r\n");

                network_state_change(network_state_smart);

                KEY_State ++;

            }


 后面的代码有点不知道怎么组织语言,先写到这里。







阅读(2793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~