/* 示例数据: 设备上报属性数据: 传入参数: ?0x000000000100320100000000 输出结果: ?{"method":"thing.event.property.post","id":"1","params":{"prop_float":0,"prop_int16":50,"prop_bool":1},"version":"1.0"} 属性设置的返回结果: 传入参数: ?0x0300223344c8 输出结果: ?{"code":"200","data":{},"id":"2241348","version":"1.0"} */ function?rawDataToProtocol(bytes)?{ ????var?uint8Array?=?new?Uint8Array(bytes.length); ????for?(var?i?=?0;?i?<?bytes.length;?i++)?{ ????????uint8Array[i]?=?bytes[i]?&?0xff; ????} ????var?dataView?=?new?DataView(uint8Array.buffer,?0); ????var?jsonMap?=?new?Object(); ????var?fHead?=?uint8Array[0];?//?commandif?(fHead?==?COMMAND_REPORT)?{ ????????jsonMap['method']?=?ALINK_PROP_REPORT_METHOD;?//ALink?JSON格式,属性上报topic。 ????????jsonMap['version']?=?'1.0';?//ALink?JSON格式,协议版本号固定字段。 ????????jsonMap['id']?=?''?+?dataView.getInt32(1);?//ALink?JSON格式,标示该次请求id值。var?params?=?{}; ????????params['prop_int16']?=?dataView.getInt16(5);?//对应产品属性中prop_int16。 ????????params['prop_bool']?=?uint8Array[7];?//对应产品属性中prop_bool。 ????????params['prop_float']?=?dataView.getFloat32(8);?//对应产品属性中prop_float。 ????????jsonMap['params']?=?params;?//ALink?JSON格式,params标准字段。 ????}?else?if(fHead?==?COMMAND_SET_REPLY)?{ ????????jsonMap['version']?=?'1.0';?//ALink?JSON格式,协议版本号固定字段。 ????????jsonMap['id']?=?''?+?dataView.getInt32(1);?//ALink?JSON格式,标示该次请求id值。 ????????jsonMap['code']?=?''+?dataView.getUint8(5); ????????jsonMap['data']?=?{}; ????} ????return?jsonMap; }
这个函数如果用c语言在设备解析上传云端该如何编写?占用资源多吗?
.
2000元阿里云代金券免费领取,2核4G云服务器仅799元/3年,新老用户都有优惠,立即抢购>>>
如果你不想采用透明传输,那么?上述二进制的??0x000000000100320100000000?字节数组,就需要通过阿里Alink?JSON协议规定的格式,进行数据上传了,比如上述内容打包为JSON格式如下(这是我以前写的一个C#的例子,C语言类似):
?string?topic?=?"/sys/"?+?ProductKey?+?"/"?+?deviceName?+?"/thing/event/property/post";
string?json?=
"{"?+
????"\"id\":\""?+?(MessageID++).ToString()?+?"\","?+
????"\"params\":"?+
????"{"?+
????????"\"prop_int16\":123,"+?
????????"\"prop_bool\":true,"+
????????"\"prop_float\":12.3,"+
????"},"?+
????"\"method\":\"thing.event.property.post\""?+
"}";
C语言阿里官方相关的参考可以看?这个连接的,上传属性部分:
https://help.aliyun.com/document_detail/258239.html?spm=a2c4g.11186623.0.0.53ce2b5cjfvclE
另外还可以参考?Alink属性上传相关内容的具体介绍,相关JSON包的格式讲解的很清楚
https://help.aliyun.com/document_detail/89301.html?spm=a2c4g.11186623.0.0.75373e06yTOotd
2000元阿里云代金券免费领取,2核4G云服务器仅799元/3年,新老用户都有优惠,立即抢购>>>
数据解析请参考:https://help.aliyun.com/document_detail/68702.html
设备端建议使用link?sdk?来实现,参考文档:https://help.aliyun.com/product/93051.html
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。