传输数据

发送/接收数据的最大长度与iot_ctx中的buffer的大小有关。

如:buffer设置为1024,以整型类型数据点为例,最多可以一次性发送70个整型数据。

上传数据

开发者需明确每个数据点的dpid、类型(通过云平台获取)。根据数据点的类型,调用不同的函数将数据点id、对应数值添加到发送队列中。

目前支持的类型包括整数型、布尔型、枚举型、浮点型、字符型、故障型、二进制。

上传数据时,需保证在云端创建的数据点是可上报的。

①添加数据点到发送队列

void dp_up_add_int ( iot_u8 dpid, iot_s32 value)

void dp_up_add_bool ( iot_u8 dpid, iot_u8 value)

void dp_up_add_enum( iot_u8 dpid, iot_u8 value)

void dp_up_add_float( iot_u8 dpid, iot_f32 value)

void dp_up_add_string(iot_u8 dpid, const char * str, iot_u32 str_len)

void dp_up_add_fault ( iot_u8 dpid, const char * fault, iot_u32 fault _len)

void dp_up_add_binary( iot_u8 dpid, const iot_u8 * bin, iot_u32 bin_len)

②上传一条数据,设备功能发生改变时将最新数据上传,一条数据可包含多个数据点。

iot_s32 iot_upload_dps( data_seq )

参数 说明
data_seq 传出参数,本条数据的序列号,如果需要确定数据何时上传成功,可记录此发送序列号,与收到的进行对比。
返回值 0:成功;-1:失败

接收数据

开发者需明确每个数据点的dpid、类型(通过云平台获取)。根据数据点的类型,调用不同的转换函数转换成需要的数值。

目前支持的类型包括整数型、布尔型、枚举型、浮点型、字符型、故障型、二进制。

接收数据时,需保证在云端创建的数据点是可下发的。

① 填写以下数据结构

iot_download_dps_t iot_down_dps[] =

{云端数据点ID 数据点类型 处理函数

{ DP_ID_DP_SWITCH, DP_TYPE_BOOL,dp_down_handle_switch },

};

② 定义针对某个数据点的处理函数

函数类型为 typedef dp_down__handle*( void* indata, iot_u32 inlen )。

如数据点switch的类型为bool,则接受其数据的处理函数实现如下:

void dp_down_handle_switch ( iot_u8* in_data, iot_u32 inlen )

{

iot_u8 dp_switch = bytes_to_bool( in_data ); //转换成对应数值

if( dp_switch == 0 )

{ }

else

{ }

}

③ 处理函数要根据数据点的类型,调用不同的转换函数

iot_s32 bytes_to_int ( const iot_u8 bytes[4] );

iot_u8 bytes_to_bool ( const iot_u8 bytes[1] );

iot_u8 bytes_to_enum ( const iot_u8 bytes[1] );

iot_f32 bytes_to_float ( const iot_u8 bytes[4] );

其他包括字符串、故障、二进制类型请直接对原始数据进行处理。

④ 接收到合法数据后,sdk会自动调用数据点对应的处理函数,处理函数一般会操作改变设备状态。

比如收到开/关命令,处理函数中应先执行设备开/关,接着将最新的设备开关状态通过调用4.1节接口上传至云端。

Copyright & copy qinglianyun all right reserved,powered by Gitbook该文件修订时间: 2021-04-22 18:53:48

results matching ""

    No results matching ""