1.QQ物联开发步骤

1)测试环境无需申请上线,即可任意调试。
意思是什么呢,它是告诉大家,在调试的时候不要点击上面的提交上线,
因为目还在调试此设备,一旦上线,QQ物联官方就会来审核你的设备,
导致延长研发周期,在有十足的把握时,在去提交上线。如果产品已经提交上线,
通过QQ物联官方审核,后续产品的配置页面的修改都需要腾讯审核。

2)测试环境最多有100个设备可以调试,上线之后接入设备的个数就不受限制。

第二小节 配置设备后台

功能配置---》特殊功能
用来定义手机QQ与QQ物联设备两者之间的特殊消息的数据格式

显示类型:只能是QQ物联设备向手机QQ发送用于显示的的数据
控制类型:QQ物联设备与手机QQ可以互传控制消息的数据

控制类型的功能描述{"on":"1","off":"0"}

第三节

每个设备类型在申请的时候就已经固定设备的公私钥对了,每个设备唯一不同的就是SN已经根据SN用设备私钥前面的license,设备公钥在申请的时候已经上传了

第4课第5节 使用datapoint接口来收发手机QQ的数据

1)led驱动和应用程序的测试

make
arm-linux-gcc -o jz2440_led_app jz2440_led_app.c

ifconfig eth0 192.168.1.185

mount -t nfs -o nolock 192.168.1.184:/work/nfs_root/qq_iot /mnt

insmod jz2440_led_drv.ko
./jz2440_led_app

2)lcd界面的绘制
framebuffer\fb.c
FBDeviceInit()---framebuffer的初始化
gui\gui_base.c
GUI_Clear清屏
GUI_SetPixel描点
GUI_DrawHLine画横线
GUI_DrawVLine画竖线
GUI_DrawLine画任意线
GUI_FillRectangle填充矩形
GUI_SetFont设置字体
GUI_PutChar显示字符
GUI_PutString显示字符串
GUI_DrawCircle画圆
GUI_DispNum显示数字

Makefile的二个问题
(1)编译后输出的目标文件是什么?
(2)当前目录要编译那么文件、要编译哪些子目录?

注意:
(1)当前目录要编译的文件、要编译的子目录都由
当前目录下Makefile来决定。

通用makefile的使用
i) 修改顶层Makefile中TARGET
TARGET := 目标文件名

ii)修改各级Makefile中obj-y,添加你所需要编译的文件或者目录
obj-y += xxx.o
obj-y += yyy/

3)使用datapoint接口来收发手机QQ的数据

参考:
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Common_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Custom_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Sync_Status.md

结构体
tx_data_point

// 初始化datapoint
SDK_API int tx_init_data_point(const tx_data_point_notify *notify);

// 上报datapoint数据
// [in] id: 上报的datapoint ID
// [in] value: 上报的datapoint value
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_report_data_point(unsigned int id, char * value, unsigned int * cookie, on_report_data_point_ret ret_callback);

// 应答收到的datapoint
// [in] from_client: datapoint信令来自某个绑定者, 必须和已收到的datapoint时的from_client一致,否则会被过滤
// [in] id: 应答的datapoint对应的ID, 必须和已收到的datapoint的ID一致,否则会被过滤
// [in] value: 应答的datapoint的自定义数据
// [in] seq: 应答的datapoint对应的seq, 必须和已收到的datapoint的seq一致,否则会被过滤
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_ack_data_point(unsigned long long from_client, unsigned int id, char * value, unsigned int seq, unsigned int ret_code, unsigned int * cookie, on_ack_data_point_ret ret_callback);

第4课第7节 使用datapoint接口来收发手机QQ的数据

1)视频演示
ubuntu下:
make clean
make
cp net_bind_detector /work/nfs_root/qq_iot/
sudo cp -rfd res/ /work/nfs_root/qq_iot/

开发板linux下:
ifconfig eth0 192.168.1.185

挂载网络文件系统、复制文件
mount -t nfs -o nolock 192.168.1.184:/work/nfs_root/qq_iot /mnt
cd /mnt
cp -rfd res/ /qq_iot/
cp net_bind_detector /qq_iot/

加载led驱动
cd /lib/modules/3.4.2/
insmod jz2440_led_drv.ko

查看链接库文件
cd /qq_iot/
ls (net_bind_detector依赖于库文件)
ls /lib/libtxdevicesdk*

查看密钥
cd /etc/qq_iot/demo_bind
ls
cat config

网络设置
cd /qq_iot/
route add default gw 192.168.1.1
cat /etc/resolv.conf
ping news.qq.com

cd /qq_iot/
./net_bind_detector
先后输入
sendtextmsg 测试文本的发送
sendpic 测试图片文件的发送
sendaudio 测试音频文件的发送
sendvideo 测试视频文件的发送
注意一下,上面这几个(sendpic、sendaudio、sendvideo)都是
通过tx_send_structuring_msg来发送的。

第4课第8节 使用datapoint接口来收发手机QQ的数据

实际看一下第一个项目net_bind_detector的代码
1)看一下目录

led ---------led的应用程序(很简单)
framebuffer ---------framebuffer底层实现,来自前面的自制gui(已讲解)
gui ---------自制gui(已讲解)
lib ---------腾讯QQ物联SDK的库文件存放位置
include ---------头文件
qq_dev_sdk ---------腾讯QQ物联SDK的头文件存放位置
initDevice ---------设备初始化(已讲解)
DataPoint ---------tx_init_data_point、
tx_ack_data_point、
tx_report_data_point接口的实现
fileTransfer ---------tx_init_file_transfer接口的实现
msg ---------tx_send_text_msg、
tx_send_structuring_msg接口的实现
res ---------存放图片文件、音频文件、视频文件

2)公有功能和特殊功能
公有功能:(腾讯QQ物联团队规定的)
该类产品具有的公有功能。
可以由开发者选择打开或者关闭。

特殊功能:某个厂家自己的产品有一些额外的功能,
可以用“特殊功能”来实现。

特殊功能由datapoint接口来实现:
datapoint的使用方法:
参考:
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Common_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Custom_CMD.md
http://iot.open.qq.com/wiki/index.html#!FUNC/DataPoint_Sync_Status.md

TXDataPoint.h中:

结构体
tx_data_point

// 初始化datapoint
SDK_API int tx_init_data_point(const tx_data_point_notify *notify);

// 上报datapoint数据
// [in] id: 上报的datapoint ID
// [in] value: 上报的datapoint value
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_report_data_point(unsigned int id, char * value, unsigned int * cookie, on_report_data_point_ret ret_callback);

// 应答收到的datapoint
// [in] from_client: datapoint信令来自某个绑定者, 必须和已收到的datapoint时的from_client一致,否则会被过滤
// [in] id: 应答的datapoint对应的ID, 必须和已收到的datapoint的ID一致,否则会被过滤
// [in] value: 应答的datapoint的自定义数据
// [in] seq: 应答的datapoint对应的seq, 必须和已收到的datapoint的seq一致,否则会被过滤
// [out] cookie: 返回调用cookie
// [in] ret_callback: 发送结果callback
SDK_API int tx_ack_data_point(unsigned long long from_client, unsigned int id, char * value, unsigned int seq, unsigned int ret_code, unsigned int * cookie, on_ack_data_point_ret ret_callback);

a.LED1_ID ,根据datapoint.value来打开/关闭,tx_ack_data_point

b.LED2_ID ,根据datapoint.value来打开/关闭,tx_report_data_point

c.BRIGHTNESS_ID,根据datapoint.value得到亮度值,tx_report_data_point

d.TEMPER_SWITCH_ID,根据datapoint.value来启动/关闭定时器
其中,启动定时器后,不断的上报数值,tx_report_data_point

为什么需要tx_ack_data_point和tx_report_data_point呢?
答:更新手机QQ的状态

tx_ack_data_point 参数多,复杂一些
tx_report_data_point 参数少,简单

第4课第9节 使用tx_send_text_msg接口向手机QQ发送文本
使用tx_send_structuring_msg接口向手机QQ发送图片文件、音频文件、视频文件

实际看一下第一个项目net_bind_detector的代码
1)看一下目录

led ---------led的应用程序(很简单)
framebuffer ---------framebuffer底层实现,来自前面的自制gui(已讲解)
gui ---------自制gui(已讲解)
lib ---------腾讯QQ物联SDK的库文件存放位置
include ---------头文件
qq_dev_sdk ---------腾讯QQ物联SDK的头文件存放位置
initDevice ---------设备初始化(已讲解)
DataPoint ---------tx_init_data_point、
tx_ack_data_point、
tx_report_data_point接口的实现
fileTransfer ---------tx_init_file_transfer接口的实现
msg ---------tx_send_text_msg、
tx_send_structuring_msg接口的实现
res ---------存放图片文件、音频文件、视频文件

参考:
http://iot.open.qq.com/wiki/index.html#!CASE/Android_TV.md

注意:
msg\text_utf8.c 和
msg\alarm_utf8.c
的编码格式为utf-8.

原因:QQ物联sdk中中文字符的发送,必须使用utf-8格式。
参考:
http://iot.open.qq.com/wiki/index.html#!QA/QA_FileCoding.md

TXMsg.h
//callback: 用于确认消息是否送达了QQ物联后台服务器
typedef void (*on_send_text_msg_ret)(unsigned int cookie, int err_code);

/**
* 接口说明:向手机QQ发送文本消息
* 参数说明:
* msg_id 动态消息ID,请到配置平台进行注册,没有注册过的ID无法送达手机QQ
* text 要发送的文本
* ret_callback 发送结果回调
* cookie 由sdk内部分配唯一值,并会在发送结果回调时回传,用于唯一标识当前调用
* to_targetids 指定发给某些target
* to_targetids_count 指定发给某些target的count,填0表示发送给所有的绑定者
*/
SDK_API void tx_send_text_msg(int msg_id, char *text, on_send_text_msg_ret ret_callback, unsigned int *cookie, unsigned long long* to_targetids, unsigned int to_targetids_count);

/**
* 接口说明:向手机QQ发送结构化消息,每条消息都会有唯一的 cookie, tx_send_msg_notify 用于了解发送状态
* msg:结构化消息
* notify:进度,结果回调
* cookie:返回任务cookie
*/
SDK_API void tx_send_structuring_msg(const structuring_msg *msg, tx_send_msg_notify *notify, unsigned int *cookie);

TXFileTransfer.h

/**
* 初始化传文件
* notify : 回调
* path_recv_file : 接收文件的目录
*/
SDK_API int tx_init_file_transfer(tx_file_transfer_notify notify, char * path_recv_file);

tx_init_file_transfer的目的:
1)手机QQ向QQ设备发送的普通文件、音频文件

5、qq物联开发步骤的更多相关文章

  1. 国内物联网平台(3):QQ物联智能硬件开放平台

    国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...

  2. 国内物联网平台初探(三) ——QQ物联·智能硬件开放平台

    平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用户与设备.设备与设备.设备与服务之间的联动. 实现用户与设 ...

  3. 4、qq物联SDK介绍及实例讲解

    1.到QQ物联官网http://iot.open.qq.com中下载软件SDK S3C2440_20161122_1.6.205_r4288.tar.gz注意:在后续大家实际开发过程中,可能你会下载到 ...

  4. 2、qq物联环境搭建

    1.使用easyopenjtag.openjtag来烧写uboot 2.体验uboot 插讲<网络设置_ping问题解决_远程登录ssh_文件互传ftp> 192.168.1.183 wi ...

  5. 腾讯物联TencentOS tiny上云初探

    2017年中旬曾写过一篇关于物联网平台的文章<微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比>.现在已经过去两年了,物联网的格局又发生了不少的变化.不过针对腾讯来说,其物联 ...

  6. [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。

    ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...

  7. 物联仓储系统ZigBee组网原理

    在嵌入式项目物联仓储系统中,使用cortexM0模拟仓库,cortex-A9模拟服务器,两块开发板之间使用ZigBee技术实现数据接收和发送,本文就介绍一下ZigBee组网的原理和相关步骤. 1.组网 ...

  8. 关于蜂窝物联技术 NBIoT 的一些观点

    背景 SigFox 开始于2009,这项技术对长期作为标准移动电话交互标准的3GPP造成了有力冲击.SigFox 解决了终端设备互联场景下的多个痛点: 1 过于复杂: 2 昂贵的设备: 3 耗电不持久 ...

  9. Arduino上传数据至贝壳物联并与FPGA进行交互

    本篇实现Arduino与FPGA交互,当然也没有什么新的协议,还是基于串口通讯,现在学一个串口通信基本上可以驱动大多数模块了,而且和各种单片机无缝数据交互,Arduino由于其强大的库函数支持,在实现 ...

随机推荐

  1. js实现删除确认提示框

    js实现删除确认提示框 一.实例描述 防止用户小心单击了“删除”按钮,在用户单击“删除”按钮后,给出一个提示,让用户确认此次操作是否正确. 二.效果 三.代码 <!DOCTYPE html> ...

  2. js --- 递归结构图

    // 用递归 来求 5 的阶乘 // n! = n * (n-1)! // 定义一个函数,用于求 n 的阶乘 function func(n) { ) { ; } // func(n-1) 因为传递的 ...

  3. 深入理解Android(3)——Eclipse集成javah和NDK-Builder

    在上一篇文章中我们使用了javah工具来生成了native java文件所对应的C++头文件,但是这样生成比较麻烦,我们这一篇来介绍如何在eclipse中集成javah和NDK-Builder. 一. ...

  4. assert增强宏的实现

    作者:朱金灿 来源:http://blog.csdn.net/clever101 标准c的assert宏和MFC的ASSERT宏都不支持输出太多的信息.今天实现了一个assert增强宏,可以输出更多的 ...

  5. Android实现QQ分享及注意事项

    一.获取APPID和帮助文档 在前面我介绍了关于Android中微信分享的文章< Android实现微信分享及注意事项>这一篇文章来看看关于QQ分享. 可以参看新手引导和接入说明:http ...

  6. qgis显示引擎研究(一)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 Qgis是一个著名的开源地理信息系统软件.今天研究了一下它的显示那一块,算是有一点眉目了. 在Windows环境下所有 ...

  7. pstree---树状图的方式展现进程

    pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观. 语法 pstree(选项) 选项 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示: -c:不使用精简标示法: ...

  8. CMDB学习之三数据采集

    判断系统因为是公用的方法,所有要写基类方法使用,首先在插件中创建一个基类 将插件文件继承基类 思路是创建基类使用handler.cmd ,命令去获取系统信息,然后进行判断,然后去执行 磁盘 ,cpu, ...

  9. resource-color 的引用

    1.在xml文件中引用 android:textColor="@color/tv_top_title_color" 2.在代码中引用 1)在color.xml中定义 <?xm ...

  10. vue打包添加样式兼容前缀

    在ios8 版本上的h5对flex的支持不太好,需要有兼容的写法. vue-cli自带了postCss autoprefixer 进行兼容处理,配置如下 在vue-loader.config.js中开 ...