NB-IOT移植移动onenet基础通信套件之Object_ID,实例ID,资源ID
1. 访问是按照分层的,Object_ID/实例ID/资源ID,对应每一层ID的数据类型,目前是分为3层,一个实例下面可以有多个实例id,对下面的数据结构来说,如果是资源ID的话,类型只能是asBuffer,asBoolean,asInteger,asFloat,如果是实例ID的话,则是asChildren的类型,这个asChildren是个数据,包含实例ID下面所有的资源ID。
struct st_cis_data { uint16_t id; cis_datatype_t type; struct { uint32_t length; uint8_t* buffer; }asBuffer; union { bool asBoolean; int64_t asInteger; double asFloat; struct { uint32_t count; struct st_cis_data* array; }asChildren; struct { cis_oid_t objectId; cis_iid_t instId; }asObjLink; } value; } ;
2. 结构体,其中flag代表,后面的3个数据那个是有的,比如flag = 0x110,就是有object ID和实例ID,在大部分情况下,假如某个为0的话(假如实例ID为0),就是指该object ID下面所有的实例ID。
struct st_uri { uint8_t flag; // indicates which segments are set cis_oid_t objectId; cis_iid_t instanceId; cis_rid_t resourceId; };
3. 按照上面的,我的代码并没有实现吗,该指令是一个读取请求消息,如果资源ID,resourceid =‘-1’,则该指令会携带count,代表需要读取该instance下的所有资源,假设是工作服务器的读操作,那么AT+MIPLREADRSP指令里面的值要怎么填写,对AT来说就是字符串,那么指令需要去解析,但是目前根据文档,就是说如果服务下发的是读取实例下面的所有资源,那么这个指令将无法去上传,只能一次一个资源。算了,先按照3级全部在的情况搞吧。
< valuetype >:发送的数据类型 发送的数据类型要求如下: string =1,//字符串型 opaque=2,//不透明类型 integer=3,//整型 float=4,//浮点型 bool=5,//布尔型 <len>:读取的数据长度 <value>:发送的数据值
4. 在此厘清楚object ID,实例ID,资源ID这三个的关系,object ID是分类,比如温度传感器,电池电量,就是两个不同的object ID,然后有2个温度传感器,那么温度传感器A和温度传感器B就是2个实例,资源就是传感器的数据和状态等。object ID,实例ID这两者有点像JAVA语言里面的类和对象。如下是国际组织定义好的object ID。
5. 如下是国际组织定义好的资源 ID。实例ID这个就是第几个设备的编号,按数量就行,不需要定义的。
相关文章
- Android实例-设置消息提醒(XE8+小米2)
- 数据结构-实例代码
- java面向对象高级分层实例_BaseDao
- iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例
- python简单的函数定义和用法实例
- Python正则表达式如何进行字符串替换实例
- java struts2入门学习实例--用户注册和用户登录整合
- Weex 在 JS Runtime 内的多实例管理
- ThinkPHP分页实例
- EVPN配置实例(一)——EVPN集中式网关
- Oracle-ASM实例管理
- MySQL多表查询实例
- 【编程实践】3大编程范式:结构化编程(面向过程编程)、面向对象编程、函数式编程代码实例
- 最简实例说明wait、notify、notifyAll的使用方法
- Python3.2官方文档翻译--实例对象和方法对象
- C#创建Windows窗体应用程序实例6【ASCII码查询程序】