zoukankan      html  css  js  c++  java
  • 5、qq物联开发步骤


    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界面的绘制
    framebufferfb.c
    FBDeviceInit()---framebuffer的初始化
    guigui_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 ext_utf8.c 和
    msgalarm_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设备发送的普通文件、音频文件


     

  • 相关阅读:
    10-2[RF] OOB validation
    5.css背景以及书写位置
    4.css基础
    3.表单form
    2.表格
    1.html基础
    正则表达式
    协程
    7.树与树算法
    6.排序与二分查找
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8994763.html
Copyright © 2011-2022 走看看